【发布时间】:2021-02-16 06:57:06
【问题描述】:
我有一个物理模型,它有一个自变量X 和三个参数A、B 和C。因变量是Y=F(X,A,B,C),其中F是模型的平滑连续函数。
我有许多带有数据点 (X,Y) 的文件,我想将它们(每个文件)与模型拟合,以研究参数如何变化。该模型对于自变量和所有参数都是非线性的。
为了拟合模型,我在 Python 中的 for loop 中使用了 scipy.optimize curve_fit,并在包含数据点的整个文件中使用。对于每个文件,我得到了最佳拟合参数(A,B,C),并且模型非常适合所有文件。但是,当我在拟合后检查参数误差时,发现A的误差确实很大,甚至比对应的值高出两个数量级。
经验告诉我,这些大的差异可能是由于参数A 可能与其他任何参数相关。为了检验这个假设,我将获得的A 值与B 和C 的值作了对比。我看到,事实上,出现了A=a*B^b 形式的幂律关系,这在物理上是可以接受的。
有没有办法告诉curve_fit 处理这种相关性,而不必引入新参数(比如a 和b)以便以尽可能低的方差拟合模型?
【问题讨论】:
标签: python scipy correlation curve-fitting model-fitting