我将数据拟合到非线性ODE系统,以使用Matlab lsqcurvefit
估计模型参数
在这个拟合中,拟合在很大程度上取决于我用于lsqcurvefit
的初始猜测
例如,如果我使用x0=5
作为初始猜测,我将得到30的剩余范数,就像我选择x0=5.2
一样,我得到1.5的剩余范数。
1)Matlab中的残差范数(resnorm
)代表什么?它是平方误差的总和吗?有没有办法确定resnorm
的值范围是可以接受的。
2)当拟合在很大程度上取决于初始猜测时,有没有办法处理这些问题?我怎么知道是否可以从不同的初始猜测中获得更好的拟合?
3)在使用lsqcurvefit
时,是否需要检查残差是否正常分布?
答案 0 :(得分:3)
lsqcurvefit
符合最小二乘意义上的数据。因此,这一切都归结为最小化,并且由于您的数据是非线性的,因此您无法保证,这是全局最小值,也不是唯一的。
E.g。考虑函数sin(x),其中x值最小化此函数,所有x = 2 * pi * n + 3/2 * pi,对于n = 0,1,2,...但是你的数值方法只能返回一个解决方案,这将取决于您的初步猜测。
进一步阐述问题。最简单的(在我看来)最小化算法被称为最陡下降。它使用了从微积分中得知的这个想法,即最陡的下降是在渐变的方向上。因此,它发现建议点中的梯度向负方向迈出一步(按一些步长缩放)并继续这样做直到步/导数非常小。
然而,即使你认为函数cos(3 pi x)/ x从0.5到无穷大,它的唯一全局最小值为1,你只能在0.7到1.3之间找到它(或者左右) )。所有其他猜测将找到他们各自的本地最小值。
有了这个,我们可以回答你的问题:
1)resnorm
是残差的2范数。具体的规范是可以接受的意味着什么?该算法正在寻找最低限度,如果您已经处于最低限度,继续搜索意味着什么?
2)不是(伪)确切意义上的。通常做的是使用你的知识来提出合理的初步猜测。如果这是不可能的,你只需要反复进行随机的初步猜测,然后保持最佳状态。
3)取决于你想做什么,如果你想进行统计测试,这取决于正常分配的残差,然后是YES。如果您只想使用最低残差范数拟合函数,那么NO。