我有一个物理模型,它有一个自变量X和三个参数A、B和C。因变量是Y=F(X,A,B,C),其中F是模型的函数,它是平滑和连续的。
我有许多带有数据点(X,Y)的文件,我想将它们(每个文件)与模型拟合,以研究参数如何变化。该模型是关于自变量和所有参数的非线性的。
为了适应这个模型,我在包含数据点的所有文件中的for loop中使用Python语言中的scipy.optimize curve_fit。对于每个文件,我得到了最佳拟合参数(A,B,C),模型对所有文件都很适合。但是,当我检查配件后的参数错误时,我注意到A中的错误真的很大,甚至比对应值高出两个数量级。
经验告诉我,这些大的差异可能是由于参数A可以与任何其他参数相关。为了验证这一假设,我将获得的A值与B和C的值进行了对比。我看到,实际上,A=a*B^b形式的幂律关系出现了,这在物理上是可以接受的。
有没有一种方法可以让curve_fit在不引入新参数(比如a和b)的情况下处理这种相关性,以便以尽可能最小的方差拟合模型?
发布于 2020-11-05 08:34:56
尝试使用method = 'trf'作为适合您的参数。这避免了使用最小二乘,而是使用雅可比矩阵的伪逆。我相信一个有零特征值的雅可比矩阵应该不是问题。
https://stackoverflow.com/questions/64665533
复制相似问题