代码之家  ›  专栏  ›  技术社区  ›  Dr proctor

Python statsmodel稳健线性回归(RLM)离群值选择

  •  1
  • Dr proctor  · 技术社区  · 7 年前

    我正在分析一组数据,我需要找到它的回归。数据集中的数据点数量很低(约15个),我决定使用稳健线性回归。问题是,该过程选择了一些似乎影响不大的点作为异常值。以下是数据的散点图,其影响用作大小: X vs Y. The Points B and C are selected as outliers, while point A is not.

    选择B点和C点(图中红色圆圈所示)作为异常值,而不选择影响更大的A点。虽然点A不会改变回归的总体趋势,但它基本上是沿着X最高的点定义斜率。而点B和C仅影响斜率的显著性。所以我的问题有两个部分: 1) 如果没有选择最有影响的点,RLM包选择离群值的方法是什么?你知道我想到的其他包有离群值选择吗? 2) 你认为A点是异常值吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Josef    7 年前

    statsmodels中的RLM仅限于M估计量。默认的Huber范数仅对y中的异常值具有鲁棒性,而对x中的异常值不具有鲁棒性,即对不良影响点不具有鲁棒性。

    参见示例 http://www.statsmodels.org/devel/examples/notebooks/generated/robust_models_1.html [51]和之后的行。

    像bisquare这样的重新设计规范能够消除不利的影响点,但解是局部最优解,需要适当的起始值。具有低崩溃点且对x异常值(如LTS)具有鲁棒性的方法目前在statsmodels中不可用,在Python的任何其他地方也不可用。R有一套更广泛的稳健估计量,可以处理这些情况。在statsmodels中添加更多方法和模型的一些扩展。健壮的请求处于当前暂停的pull请求中。

    在特定情况下,通常很难将观察值声明或识别为异常值。研究人员经常使用稳健的方法来表明 离群候选人 这需要进一步调查。例如,一个原因可能是“异常值”是从不同的人群中采样的。在许多情况下,使用纯机械的统计识别可能不合适。

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