2017-11-10 439 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聲明爲唯一異常值,並適合陡峭的迴歸線。