相关变量和scipy curve_fit

问题描述

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

我有许多数据点为(X,Y)文件(每个文件)都适合模型以研究参数的变化。该模型对于自变量和所有参数都是非线性的。

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

经验告诉我,这些较大的差异可能是由于参数A可能与其他任何参数相关联。为了检验这一假设,我针对AB的值绘制了C的值。我看到,实际上,出现了A=a*B^b形式的幂律关系,这在物理上是可以接受的。

是否有一种方法可以告诉curve_fit处理这种相关性,而不必引入新参数(例如ab)以使模型具有最低的方差可能吗?

解决方法

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