python - 来自 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
或者如果使用,则作为权重传入lmfit.Model
。
推荐阅读
- reactjs - 如何将组件传递给除下一个 js 之外的所有页面
- bash - curl 命令在 shell 脚本中使用时无法读取变量会引发错误 curl: (26) 无法从文件/应用程序打开/读取本地数据
- javascript - 在 p5js 中使用 mousePressed() 函数
- python - SymPy 已安装但默认 Python 版本未找到
- javascript - 将数组和对象转换为自定义对象
- python - 如何在序列化为熊猫数据框时展平嵌套数据类?
- javascript - 在打字稿中正确使用异步(角度)
- amazon-ec2 - 在 InfluxDB v2 中接收 Gatling 结果
- github - 了解存储库 gpt 转换器
- javascript - Chart.js 属性“类型”的类型不兼容。类型 'string' 不可分配给类型 '"line" | “酒吧” | “分散”