2017-11-10 442 views
0

我正在分析一组数据,我需要找到它的回归。数据集中的数据点数量很少(〜15),因此我决定使用强大的线性回归作业。问题在于程序选择了一些看起来不具有影响力的异常点。这里是数据的散点图,其影响用作尺寸:X vs Y. The Points B and C are selected as outliers, while point A is not.Python statsmodel鲁棒线性回归(RLM)异常值选择

点B和C(图中用红色圆圈表示)被选作异常值,而点A具有较高的影响力则不是。虽然A点并没有改变回归的总体趋势,但它基本上定义了斜率与X最高的点一样。而B点和C点只影响斜率的显着性。所以我的问题有两个部分: 1)如果没有选择最具影响力的点,并且您是否知道其他具有我选择的异常值选项的包,则RLM包的选择异常值的方法是什么? 2)你认为A点是异常点吗?

回答

1

statsmodels中的RLM限于M-估计量。默认的Huber规范只对y中的异常值有效,但对x不敏感,即对不利影响点不起作用。

例如参见http://www.statsmodels.org/devel/examples/notebooks/generated/robust_models_1.html line在[51]和之后。

像bisquare这样的降级规范能够消除不利的影响点,但解决方案是局部最优化的,需要适当的初始值。目前在statsmodels和AFAIK以及Python中的其他任何地方都无法使用具有低分解点且对x异常值(如LTS)健壮的方法。 R拥有更广泛的稳健估计器,可以处理这些情况。在statsmodels.robust中添加更多方法和模型的一些扩展现在处于暂停状态,处于pull请求状态。

通常和回答问题的第二部分:

在具体的情况下,它通常是困难的声明或识别的观察为异常值。很多时候,研究人员使用可靠的方法来指示需要进一步调查的异常候选人。例如,一个原因可能是“异常值”是从不同的人口中抽取的。在许多情况下,使用纯机械的统计鉴定可能不合适。

在这个例子中:如果我们拟合一个陡峭的斜坡并将A点作为异常值,那么B点和C点可能会合理地适合,并且不会被识别为异常值。另一方面,如果A是基于额外信息的合理点,那么也许这种关系是非线性的。 我的猜测是,LTS会将A声明为唯一异常值,并适合陡峭的回归线。