来自 lmfit 的卡方值

Chi-square value from lmfit

我一直在尝试对一组图像进行像素到像素的拟合,即我在不同图像中有不同波长的数据,我正在尝试分别为每个像素拟合一个函数。我已经使用 lmfit 完成了拟合并获得了每个像素的未知参数值。现在,我想获得每个拟合的卡方值。我知道 lmfit 有一个名为 chisqr 的属性,它可以给我相同的结果,但让我感到困惑的是 lmfit github 网站上的这一行: "请注意,卡方和简化卡方的计算假设返回的残差函数已根据数据中的不确定性进行适当缩放。为了使这些统计有意义,编写要最小化的函数的人必须正确缩放它们。" 我怀疑我从 chisqr 属性获得的值并不完全正确,需要进行一些缩放。有人可以解释一下 lmfit 如何计算卡方值以及我需要做什么缩放吗?

这是我的拟合函数的示例

def fcn2fit(params,freq,F,sigma):
    colden=params['colden'].value
    tk=params['tk'].value
    model = greybodyfit(np.array(freq),colden,tk)
    return (model - F)/sigma

colden 和 tk 是自由参数,freq 是自变量,F 是因变量,sigma 是 F 中的误差。返回 (model-F)/sigma 是缩放残差的正确方法,以便chisqr 属性给出了正确的卡方值?

报告的卡方值是拟合残差的平方和。 Lmfit 无法判断残差函数是否根据数据的标准误差进行了适当缩放 - 如果您使用 lmfit.minimize,则必须在 objective 函数中完成此缩放;如果使用 [=11,则必须作为权重传入=].