异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)

定义

异常点(Outlier):残差很大的点(即:因变量y的值是极端值的观测值)
高杠杆点(High Leverage Point):远离样本空间中心的点(即:自变量x的值是极端值的观测值)
强影响点(Influential Point):对模型有较大影响的点,如果删除该点能改变拟合回归方程

注意:

1,异常点不一定是强影响点,强影响点也不一定是异常点
2,高杠杆点不一定是强影响点,强影响点也不一定是高杠杆点

异常点

异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)

虚线和实线分别是包含红点在内和不包含红点在内训练出来的回归模型。可以看到,两条回归线之间相差不大,因此,该红点不是强影响点。

同时,该红点并没有离其他自变量的值很远,因此也不是高杠杆点。但是它离回归线很远(残差大),因此该红点是异常点。

高杠杆点

异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
虚线和实线分别是包含红点在内和不包含红点在内训练出来的回归模型。可以看到,两条回归线之间相差不大,因此,该红点不是强影响点。

同时,该红点离回归线不远,因此也不是异常点。但是它离其他自变量的值很远,因此该红点是高杠杆点。

强影响点

异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
虚线和实线分别是包含红点在内和不包含红点在内训练出来的回归模型。可以看到,两条回归线之间相差较大,因此,该红点是强影响点。

同时,该红点离其他自变量的值较远,因此是高杠杆点。它离回归线也很远(残差大),因此该红点也是异常点。

判断是否是异常点

(1)标准化残差(standardized residuals):异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
相对于普通残差来说,消除了量纲的影响。如果标准化残差的绝对值>3,该观测值即判定为异常值

(2)学生化残差(studentized residuals):
异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)
对于标准化残差,还去除了高杠杆值的影响。如果学生化残差的绝对值>3,该观测值即判定为异常值。

判断是否是高杠杆点

如果帽子统计量大于平均帽子值的3倍,那么可以判断该观测值是高杠杆点。
异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)

H被称为帽子矩阵,因为其相当于给y戴上了一顶帽子来预测y的值。 h i j h_{ij} hij​是权重,当 h i j h_{ij} hij​较大时,说明第 j j j个观测值对第 i i i个拟合值有较大的影响。

判断是否是强影响点

异常点VS高杠杆点VS强影响点(Outlier,High Leverage Point,Influential Point)

实战

import pandas as pd
import numpy as np
from sklearn import model_selection
import statsmodels.api as sn

sdata = pd.read_csv("../input/traindatas/char7/Predict to Profit.csv")
#print(sdata.head())

train,test = model_selection.train_test_split(sdata,test_size = 0.2,random_state = 1234)
mode = sn.formula.ols("Profit~RD_Spend +Administration + Marketing_Spend+C(State)",data=train).fit()

outliers = mode.get_influence()
leverage = outliers.hat_matrix_diag

dffits = outliers.dffits[0]

resid_stu = outliers.resid_studentized_external

cook = outliers.cooks_distance[0]

print(sdata.columns)

pr = train.loc[:,['RD_Spend', 'Administration', 'Marketing_Spend', 'State']]
pr.index = range(pr.shape[0])
pr['cook'] = pd.Series(cook)
pr['resid_stu'] =pd.Series(resid_stu)
pr['dffits'] =pd.Series(dffits)
pr['leverage'] = pd.Series(leverage)
print(pr.columns)
print(pr.loc[:,['Marketing_Spend', 'State', 'cook',
       'resid_stu', 'dffits', 'leverage']])

Index(['RD_Spend', 'Administration', 'Marketing_Spend', 'State', 'Profit'], dtype='object')
Index(['RD_Spend', 'Administration', 'Marketing_Spend', 'State', 'cook',
       'resid_stu', 'dffits', 'leverage'],
      dtype='object')
    Marketing_Spend       State      cook  resid_stu    dffits  leverage
0         201126.82     Florida  0.068436   1.816348  0.662739  0.117491
1          35534.17    New York  0.022867   0.857159  0.368913  0.156286
2         282574.31    New York  0.007137  -0.579571 -0.204848  0.111052
3         229160.95     Florida  0.026777   1.101083  0.402113  0.117675
4         299737.29    New York  0.016770  -0.701793 -0.314755  0.167467
5         298664.47  California  0.000438   0.146877  0.050496  0.105705
6         303319.26     Florida  0.010295  -0.769609 -0.246995  0.093381
7         443898.53  California  0.030914   0.766112  0.427972  0.237843
8          46085.25  California  0.014879  -0.731151 -0.296674  0.141368
9         297114.46     Florida  0.107106  -1.305513 -0.810158  0.278032
10        353183.81    New York  0.046211  -1.206906 -0.530189  0.161764
11        210797.67  California  0.041713   1.016371  0.500526  0.195184
12        137962.62  California  0.003120   0.408034  0.135089  0.098782
13        214634.81     Florida  0.005810  -0.581160 -0.184823  0.091850
14        471784.10    New York  0.006976   0.394700  0.201959  0.207490
15        249744.55  California  0.020788   0.920375  0.352352  0.127828
16        323876.68     Florida  0.009824  -0.619459 -0.240510  0.130997
17        383199.62    New York  0.055789   1.477126  0.588829  0.137118
18        197029.42  California  0.018076  -0.561927 -0.325891  0.251691
19        127716.82  California  0.016905  -0.567816 -0.315197  0.235557
20        407934.54     Florida  0.063940   1.239273  0.624393  0.202458
21        205517.64    New York  0.005906   0.483170  0.186040  0.129114
22          1903.93    New York  0.137454   1.977724  0.947356  0.186631
23        304981.62  California  0.014797  -0.802036 -0.296348  0.120126
24        264346.06  California  0.024965   1.247048  0.390270  0.089204
25        362861.36    New York  0.020919  -0.872668 -0.352998  0.140616
26        118148.20     Florida  0.000151  -0.053932 -0.029673  0.232369
27        172795.67  California  0.000437   0.139047  0.050429  0.116244
28        174999.30  California  0.018759  -0.854749 -0.334119  0.132547
29         91131.24     Florida  0.008397  -0.546958 -0.222068  0.141514
30        134050.07     Florida  0.026656  -1.082497 -0.400963  0.120648
31        164470.71     Florida  0.001221  -0.205803 -0.084341  0.143796
32        304768.73     Florida  0.003420  -0.421431 -0.141457  0.101258
33        261776.23    New York  0.090686  -2.436406 -0.790889  0.095328
34        140574.81    New York  0.028772  -1.061846 -0.416294  0.133225
35        249839.44     Florida  0.031618   1.455359  0.442868  0.084752
36        185265.10    New York  0.062287   1.196744  0.615316  0.209085
37             0.00    New York  0.025039   0.624172  0.383998  0.274566
38             0.00  California  0.051040  -1.180349 -0.556679  0.181956
上一篇:数据结构——线性表


下一篇:SAP MM '独立/集中'等于1的MTS物料MRP运行后合并需求触发PR