2

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

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 时误差大得多?我是否使用正确的方法来计算错误?

4

0 回答 0