我有一组等距间隔的测得半径(t epsilon误差).
该模型是半径为(R)的圆,中心为(r,Alpha),并添加了较小的噪声和一些比噪声大得多的随机误差值.
问题是找到圆模型的中心(r,Alpha)和圆的半径(R).但是它对随机误差应该不太敏感(在下面的数据点7和14).
某些半径可能会丢失,因此简单均值在这里不起作用.
我尝试了最小二乘优化,但对错误有明显的反应.
有没有一种方法可以优化最小增量而不是最小增量平方?
Model:
n=36
R=100
r=10
Alpha=2*Pi/6
Data points:
[95.85, 92.66, 94.14, 90.56, 88.08, 87.63, 88.12, 152.92, 90.75, 90.73, 93.93, 92.66, 92.67, 97.24, 65.40, 97.67, 103.66, 104.43, 105.25, 106.17, 105.01, 108.52, 109.33, 108.17, 107.10, 106.93, 111.25, 109.99, 107.23, 107.18, 108.30, 101.81, 99.47, 97.97, 96.05, 95.29]
解决方法:
回答您的最后一个问题
Is there a way to optimize least deltas but not the least squares of delta in Python?
是的,选择一种优化方法(例如,在scipy.optimize.fmin中实现的下坡单纯形),然后使用绝对偏差之和作为评价函数.您的数据集很小,我想任何通用的优化方法都将迅速收敛. (在进行非线性最小二乘拟合的情况下,也可以使用通用优化算法,但是更常见的是使用Levenberg-Marquardt算法来最小化平方和.)
如果您有兴趣在最小化绝对偏差而不是平方的情况下获得理论上的证明,请参阅《数字配方》的“稳健估计”一章.
从实际的角度来看,绝对偏差之和可能没有唯一的最小值.
在两点的平凡情况下,例如(0,5)和(1,9)且常数函数y = a,在5到9之间的任何a值都会得出相同的和(4).当偏差平方时没有这种问题.
如果最小化绝对偏差不起作用,则可以考虑采用启发式程序来识别和删除异常值.例如RANSAC或ROUT.