【发布时间】:2016-06-20 12:56:21
【问题描述】:
我有这些数据,我拟合了一个线性函数,并且拟合决定了其他工作(没关系,不重要)。我正在使用numpy.polyfit,当我简单地包含数据和拟合度时,它会产生这个图:
现在,拟合还可以,但普遍的共识是最佳拟合线被其上方的那些红色数据点倾斜,我实际上应该拟合它下方的数据,形成一个很好的线性形状(开始在那个拥挤的蓝点周围)。因此,我尝试在对polyfit 的调用中添加权重,并且我选择了 1/sqrt(y 值) 的任意权重,因此基本上较小的 y 值将被更有利地加权。这给出了以下内容:
诚然哪个更好,但我仍然不满意,因为现在看来这条线太低了。理想情况下,我想要一个中间立场,但由于我选择了一个任意的权重,我想知道一般来说是否有一种方法可以使用 Python 执行更稳健的拟合,或者即使这可以使用polyfit 来完成?如果可行,使用单独的包也可以。
【问题讨论】:
-
是的,Python 有许多用于统计的高级包。但这更像是一个统计问题,然后是一个编程问题。查找
Classification for outlier removal、clustering、k-nearest neighbor、RANSAC、robust regression。最后,了解您的实验并可能找到排除某些数据的原因通常是最好的一阶方法。 -
非常感谢@roadrunner66!
标签: python data-fitting robust