如何在 r 中计算杠杆统计数据


在统计学中,如果某个观测值的响应变量值远大于数据集中的其他观测值,则该观测值被视为异常值

同样,如果某个观测值具有一个或多个与数据集中其他观测值相比更为极端的预测变量值,则该观测值被视为高杠杆

任何类型的分析的第一步都是仔细研究具有高影响力的观察结果,因为它们可能对给定模型的结果产生很大影响。

本教程展示了如何计算和可视化 R 模型中每个观察的杠杆率的分步示例。

第 1 步:创建回归模型

首先,我们将使用 R 中内置的mtcars数据集创建一个多元线性回归模型

 #load the dataset
data(mtcars)

#fit a regression model
model <- lm(mpg~disp+hp, data=mtcars)

#view model summary
summary(model)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.735904 1.331566 23.083 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309 
F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09

第 2 步:计算每个观察的杠杆率

接下来,我们将使用hatvalues()函数来计算模型中每个观察的杠杆率:

 #calculate leverage for each observation in the model
hats <- as . data . frame (hatvalues(model))

#display leverage stats for each observation
hats

                    hatvalues(model)
Mazda RX4 0.04235795
Mazda RX4 Wag 0.04235795
Datsun 710 0.06287776
Hornet 4 Drive 0.07614472
Hornet Sportabout 0.08097817
Valiant 0.05945972
Duster 360 0.09828955
Merc 240D 0.08816960
Merc 230 0.05102253
Merc 280 0.03990060
Merc 280C 0.03990060
Merc 450SE 0.03890159
Merc 450SL 0.03890159
Merc 450SLC 0.03890159
Cadillac Fleetwood 0.19443875
Lincoln Continental 0.16042361
Chrysler Imperial 0.12447530
Fiat 128 0.08346304
Honda Civic 0.09493784
Toyota Corolla 0.08732818
Toyota Corona 0.05697867
Dodge Challenger 0.06954069
AMC Javelin 0.05767659
Camaro Z28 0.10011654
Pontiac Firebird 0.12979822
Fiat X1-9 0.08334018
Porsche 914-2 0.05785170
Lotus Europa 0.08193899
Ford Pantera L 0.13831817
Ferrari Dino 0.12608583
Maserati Bora 0.49663919
Volvo 142E 0.05848459

通常,我们会仔细研究杠杆值大于 2 的观测值。

执行此操作的一个简单方法是根据观测值的杠杆值按降序对观测值进行排序:

 #sort observations by leverage, descending
hats[ order (-hats[' hatvalues(model) ']), ]

 [1] 0.49663919 0.19443875 0.16042361 0.13831817 0.12979822 0.12608583
 [7] 0.12447530 0.10011654 0.09828955 0.09493784 0.08816960 0.08732818
[13] 0.08346304 0.08334018 0.08193899 0.08097817 0.07614472 0.06954069
[19] 0.06287776 0.05945972 0.05848459 0.05785170 0.05767659 0.05697867
[25] 0.05102253 0.04235795 0.04235795 0.03990060 0.03990060 0.03890159
[31] 0.03890159 0.03890159

我们可以看到最高杠杆值为0.4966 。由于这个数字不大于 2,我们知道数据集中的所有观测值都没有高杠杆率。

第 3 步:可视化每个观察结果的杠杆作用

最后,我们可以创建一个快速图表来可视化每个观察的杠杆率:

 #plot leverage values for each observation
plot(hatvalues(model), type = ' h ')

R 中的杠杆

x 轴显示数据集中每个观测值的索引,y 值显示每个观测值相应的杠杆统计数据。

其他资源

如何在 R 中执行简单线性回归
如何在 R 中执行多元线性回归
如何在 R 中创建残差图

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注