Matlab 为什么通过lsqcurvefit和fminunc函数获得的标准误差不同?

Matlab 为什么通过lsqcurvefit和fminunc函数获得的标准误差不同?,matlab,confidence-interval,non-linear-regression,hessian-matrix,uncertainty,Matlab,Confidence Interval,Non Linear Regression,Hessian Matrix,Uncertainty,我正在用Matlab将一个模型与实验数据进行拟合。对于这个模型,我想通过最小化实验数据集和模型数据集之间的平方残差之和来找到参数。模型的形式如下所示: err = sqrt(diag(inv(Hessian))); %Standard error G(x)=G0/(1+(x/x_c)^(2m)) 其中G0、x_c和m是要优化的参数 为了识别参数,我在Matlab上使用了lsqcurvefit和fminunc工具。对于lsqcurvefit,我使用nlparci工具的输出雅可

我正在用Matlab将一个模型与实验数据进行拟合。对于这个模型,我想通过最小化实验数据集和模型数据集之间的平方残差之和来找到参数。模型的形式如下所示:

err = sqrt(diag(inv(Hessian)));           %Standard error
G(x)=G0/(1+(x/x_c)^(2m))

其中G0、x_c和m是要优化的参数

为了识别参数,我在Matlab上使用了lsqcurvefit和fminunc工具。对于lsqcurvefit,我使用nlparci工具的输出雅可比矩阵来确定95%的置信区间,并回溯以计算标准误差,如下所示

[x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqcurvefit(___)
ci = nlparci(x,residual,'Jacobian',J);    %Returns 95% confidence interval
err = ((ci(:,2)-ci(:,1))./3.92);          %Standard error
然后,我通过最小化平方剩余和,使用fminunc函数计算标准误差。通过这个过程可以得到一个hessian矩阵。hessian矩阵用于确定标准误差,如下所示:

err = sqrt(diag(inv(Hessian)));           %Standard error
问题是我从lsqcurvefit和fminunc获得的标准误差不同。我假设在不同的方法中标准误差会有细微的变化,但当我使用fminunc时,我得到的误差会大得多。但是,使用单个工具获得的优化参数是相同的


为什么使用fminunc时误差会大得多?我是否使用了正确的方法来计算错误?

您好,欢迎来到stackoverflow。那么你的假设是什么?使用不同的方法会产生完全相同的估计?为什么会这样?嗨,谢谢。我假设在不同的方法中标准误差会有细微的变化,但当我使用fminunc时,我得到的误差要大得多。但是,使用单个工具获得的优化参数是相同的。我不确定我是否使用了正确的方法来计算错误。