我正在使用 Matlab 中的 lsqcurvefit 函数对一些实验数据进行建模。数据采用特定的形状,因此算法只是调整该形状的系数来改变其幅度等。
该模型运行良好并且拟合良好(我已经计算了卡方)。 Levenberg-Marquardt 算法的其他实现将协方差作为输出,但在 Matlab 中它不是输出的选项(只有一阶最优性、没有迭代、Lambda 和 Jaccobian 以及边界)。
有人知道如何通过 lsqcurvefit 或独立地从给定的输出(我不是 100% 知道 lambda 和雅可比或一阶最优性)计算协方差矩阵吗?
任何帮助将不胜感激,谢谢!
最佳答案
我想我自己已经解决了这个问题,但如果其他人遇到同样的问题,我会在这里发布如何解决。
协方差矩阵可以通过雅可比行列式计算:
C = inv(J'*J)*MSE
其中 MSE 是均方误差:
MSE = (R'*R)/(N-p)
其中 R = 残差,N = 观测值数量,p = 估计系数数量。
或者可以通过迭代计算MSE。
希望这对其他人将来有帮助。
如果有人发现错误,请告诉我。谢谢
关于algorithm - 在 MATLAB 中使用 Levenberg-Marquardt (lsqcurvefit) 获取协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737382/