【问题标题】:Correlated variables and scipy curve_fit相关变量和 scipy curve_fit
【发布时间】:2021-02-16 06:57:06
【问题描述】:

我有一个物理模型,它有一个自变量X 和三个参数ABC。因变量是Y=F(X,A,B,C),其中F是模型的平滑连续函数。

我有许多带有数据点 (X,Y) 的文件,我想将它们(每个文件)与模型拟合,以研究参数如何变化。该模型对于自变量和所有参数都是非线性的。

为了拟合模型,我在 Python 中的 for loop 中使用了 scipy.optimize curve_fit,并在包含数据点的整个文件中使用。对于每个文件,我得到了最佳拟合参数(A,B,C),并且模型非常适合所有文件。但是,当我在拟合后检查参数误差时,发现A的误差确实很大,甚至比对应的值高出两个数量级。

经验告诉我,这些大的差异可能是由于参数A 可能与其他任何参数相关。为了检验这个假设,我将获得的A 值与BC 的值作了对比。我看到,事实上,出现了A=a*B^b 形式的幂律关系,这在物理上是可以接受的。

有没有办法告诉curve_fit 处理这种相关性,而不必引入新参数(比如ab)以便以尽可能低的方差拟合模型?

【问题讨论】:

    标签: python scipy correlation curve-fitting model-fitting


    【解决方案1】:

    尝试使用method = 'trf' 作为适合您的参数。这避免了使用最小二乘并使用雅可比行列式的伪逆。我相信特征值为零的雅可比矩阵应该不是问题。

    【讨论】:

    • 谢谢。我试过了,但它给了我同样大的 A 差异。
    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 2017-01-31
    • 2016-03-12
    • 2020-11-09
    • 2018-02-03
    • 2021-06-24
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多