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