lmfit在拟合后提取拟合统计参数。

3
这是一个关于从lmfit fit_report() (1)对象中提取适合统计数据的问题。
这个lmfit示例中,返回以下部分输出:
[[Model]]
    Model(gaussian)
[[Fit Statistics]]
    # function evals   = 31
    # data points      = 101
    # variables        = 3
    chi-square         = 3.409
    reduced chi-square = 0.035
    Akaike info crit   = -336.264
    Bayesian info crit = -328.418
.
.
.
.
.
.

我想要提取所有的拟合统计部分的数量作为单独的变量。

例如,要提取模型参数,我们可以使用以下方法(参见12):

for key in fit.params:
    print(key, "=", fit.params[key].value, "+/-", fit.params[key].stderr)

然而,这只提供了模型参数;并没有给出拟合统计参数,这也是有用的。我在文档中似乎找不到这个。是否有一种类似的方法可以单独提取适配统计参数(卡方减少的卡方函数评估次数等)?
2个回答

5

result包含所有适合的统计信息。您可以按照下面所示获取所需参数

result = gmodel.fit(y, x=x, amp=5, cen=5, wid=1)
# print number of function efvals
print result.nfev
# print number of data points
print result.ndata
# print number of variables
print result.nvarys
# chi-sqr
print result.chisqr
# reduce chi-sqr
print result.redchi
#Akaike info crit
print result.aic
#Bayesian info crit
print result.bic

谢谢,但是你是怎么想到这个的呢?有没有一种方法可以检查“results”对象的属性? - edesz
2
我查看了fit_report()的代码(https://github.com/lmfit/lmfit-py/blob/master/lmfit/printfuncs.py),并且能够看到它是如何获取所有这些参数的。另外,您也可以使用dir(result)来查看所有属性。此外,如果您正在使用ipython笔记本,则可以键入“result.”并按tab键,将会出现一个下拉菜单,其中包含所有属性。 - plasmon360
我尝试了result.attributes()但是没有成功。感谢您的帖子。这个问题已经得到解答。 - edesz

2

抱歉,在0.9.6版本中,Model.fit_report()中的适合度统计报告被无意中关闭了。但是在主github仓库中已经修复了这个问题。

正如user1753919所展示的,您可以获取这些单独的值。 ModelResult的这些属性在https://lmfit.github.io/lmfit-py/model.html#modelresult-attributes中有记录。


嘿,谢谢你提供的信息。那非常有用。好链接! - edesz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接