Matlab 曲线拟合中的初始猜测和重新规范问题



我正在将数据拟合到非线性常微分方程系统,以使用 Matlablsqcurvefit估计模型参数。
在这种拟合中,拟合在很大程度上取决于我用于lsqcurvefit的初始猜测。
例如,如果我使用x0=5作为初始猜测,我将得到 30 的残差范数,而如果我选择x0=5.2我得到的残差范数为 1.5。
1) Matlab 中的残差范数 (resnorm) 代表什么?是平方误差的总和吗?有没有办法确定resnorm可接受的值范围。

2)当拟合度在很大程度上取决于初始猜测时,有没有办法解决这些问题?我如何知道是否可以从不同的初始猜测中获得更好的拟合?

3)在使用lsqcurvefit是否需要检查残差是否呈正态分布?

lsqcurvefit

最小二乘法意义上拟合您的数据。因此,这一切都归结为最小化,并且由于您的数据是非线性的,因此您不能保证这是全局最小值,也不能保证它是唯一的。

例如,考虑函数sin(x),它的x值最小化了这个函数,那么对于n=0,1,2,所有x=2*pi*n + 3/2*pi,...但是您的数值方法只能返回一个解决方案,这将取决于您最初的猜测。

进一步阐述这个问题。最简单的(在我看来)最小化算法被称为最陡峭的下降。它使用了从微积分中知道的想法,即最陡峭的下降是在减去梯度的方向上。因此,它发现建议点中的梯度在该方向上采取负步长(按某个步长缩放),并继续这样做,直到步长/导数明显变小。

然而,即使你考虑函数 cos(3 pi x)/x 从 0.5 到无穷大,它确实在 1 中有一个唯一的全局最小值,但只有当你的猜测在 0.7 到 1.3(左右)之间时,你才能找到它。所有其他猜测都会找到它们各自的局部最小值。

有了这个,我们可以回答您的问题:

1)resnorm是残差的 2 范数。具体规范是可以接受的是什么意思?该算法正在寻找最小值,如果您已经处于最小值,那么继续搜索意味着什么?

2)不是(伪)确切意义上的。通常的做法是利用您的知识来提出合理的初始猜测。如果这是不可能的,你只需要反复进行随机的初步猜测,然后保持最好的。

3)取决于你想做什么,如果你想做统计检验,这取决于残差是正态分布的,那么是的。如果您只对拟合具有最低残差范数的函数感兴趣,则为 NO。

最新更新