【问题标题】:How to properly get the errors in lmfit如何正确获取 lmfit 中的错误
【发布时间】:2020-04-05 09:30:57
【问题描述】:

您好,我正在尝试学习如何正确使用 lmfit,但我认为我计算的拟合误差是错误的。我有一些在 y 上有错误的数据,当我进行拟合时,我称之为(我尝试了一个简单的线性拟合):

weight = 1/err
out = line_fit.fit(y, pars, x=x, weights = weight)

我假设这将计算卡方并使用分母中的误差。但是,它似乎无法正常工作。拟合看起来不错,我得到了一个合理的错误值,但如果我像err = 50*err 那样故意增加错误,我得到的正是一些拟合参数。但显然现在参数上的误差应该大得多(通过误差公式的传播),但它们完全相同。我究竟做错了什么?

第二个问题是,如果我在 x 轴上有错误,我该如何将它包含在拟合中?函数调用中只有一个权重参数。

谢谢!

【问题讨论】:

    标签: python curve-fitting lmfit


    【解决方案1】:

    lmfit.Model(和一般的lmfit)有意重新调整不确定性,以使其反映“良好拟合”。它报告的参数不确定性会通过减少卡方来增加卡方,而不是增加卡方 1 的参数不确定性。这意味着改变不确定性或拟合权重的尺度将改变拟合统计量的值,但不会改变参数值上报告的不确定性。

    如果您确实希望参数不确定性是卡方加 1 的参数,请使用 Model.fit(ydata, params, ..., scale_covar=False)

    x 或任何独立数据中的不确定性很难以任何自动方式包含在内。除了告知模型函数如何计算模型(y 值)以与提供的数据进行比较外,拟合实际上并不使用独立数据的值。你可以考虑

    • 根据y 值的变化增加每个y 值的不确定性,该变化会响应x 中的不确定性而发生,但模型没有自动解决此问题的方法框架——您需要在模型函数中执行此操作。

    • 查看scipy.ODR,它可以处理相关数据和独立数据中的不确定性。 lmfit 不支持此功能,但您可能会发现它很有用。

    【讨论】:

    • 非常感谢您的回复,这真的很有帮助。我对统计很陌生,所以这可能是一个愚蠢的问题,但我什么时候应该使用 scale_covar=False?换句话说,我应该为我的错误引用什么值?看了几篇实验论文,真的没看到有这种说法,请问有普遍接受的方法吗?
    • 当您确信误差条的尺寸正确而不是“合适”时,请使用 scale_covar=False。也就是说,可以使用减少的卡方来评估拟合是否良好(它应该为 ~1 以获得良好的拟合),但这取决于不确定性的规模。使用scale_covar=True 实际上是在说“调整数据的不确定性,以便减少卡方为 1 并报告这些参数的不确定性”。也就是说,如果您费心报告参数的不确定性,您可能认为拟合良好。
    • 再次感谢您!我现在明白他们每个人的意思了。我仍然不能 100% 确定我是否能够在实践中弄清楚该使用哪一个。例如,就我而言,我需要为一些计数数据拟合一条直线。错误是泊松(所以我很确定它们)并且合身看起来不错。如果我使用默认的 scale_covar=True,我得到的错误 (25 +/- 1) 是我使用 scale_covar=False (25 +/- 0.5) 时的两倍。根据您的解释,鉴于我对自己的健康有信心,我应该使用 +/- 1 的那个。这样做是否正确?
    • 还有一件事,在科学出版物中,我认为我从未见过有人说明他们使用这两种计算误差的方法中的哪一种。基于“如果您不愿意报告参数不确定性,您可能认为拟合很好。”我假设他们使用了与 scale_covar=True 等效的东西。这有意义吗?谢谢!
    • @BillKet 您采用哪种方法主要取决于您自己。当然,您希望保持一致。 scale_covar 方法在某些学科中相当普遍,但您可能想与您所在领域的其他人核实一下。 FWIW 我认为大多数人真的只相信误差条的第一个有效数字(甚至“数量级”)。如果你说“25+/-1”,我不会认为 27 是不可能的。当然,高能物理学中的某些领域对错误预算要严格得多,但是如果您在 Stackoverflow 上询问,那可能不适用于您 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多