Как рассчитать DFFITS в R

Как рассчитать DFFITS в R

В статистике мы часто хотим знать, насколько разные наблюдения влияют на регрессионные модели.

Одним из способов расчета влияния наблюдений является использование метрики, известной как DFFITS , что означает «разница в совпадениях».

Эта метрика говорит нам, насколько меняются прогнозы, сделанные регрессионной моделью, когда мы опускаем отдельное наблюдение.

В этом руководстве показан пошаговый пример того, как рассчитать и визуализировать DFFITS для каждого наблюдения в модели в R.

Шаг 1: Постройте модель регрессии

Во-первых, мы построим модель множественной линейной регрессии, используя встроенный набор данных mtcars в R:

#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 < 2e-16 \*\*\*
disp -0.030346 0.007405 -4.098 0.000306 \*\*\*
hp -0.024840 0.013385 -1.856 0.073679.
---
Signif. 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: Рассчитайте DFFITS для каждого наблюдения

Далее мы будем использовать встроенную функцию dffits() для вычисления значения DFFITS для каждого наблюдения в модели:

#calculate DFFITS for each observation in the model
dffits <- as.data.frame (dffits(model))

#display DFFITS for each observation
dffits

 dffits(model)
Mazda RX4 -0.14633456
Mazda RX4 Wag -0.14633456
Datsun 710 -0.19956440
Hornet 4 Drive 0.11540062
Hornet Sportabout 0.32140303
Valiant -0.26586716
Duster 360 0.06282342
Merc 240D -0.03521572
Merc 230 -0.09780612
Merc 280 -0.22680622
Merc 280C -0.32763355
Merc 450SE -0.09682952
Merc 450SL -0.03841129
Merc 450SLC -0.17618948
Cadillac Fleetwood -0.15860270
Lincoln Continental -0.15567627
Chrysler Imperial 0.39098449
Fiat 128 0.60265798
Honda Civic 0.35544919
Toyota Corolla 0.78230167
Toyota Corona -0.25804885
Dodge Challenger -0.16674639
AMC Javelin -0.20965432
Camaro Z28 -0.08062828
Pontiac Firebird 0.67858692
Fiat X1-9 0.05951528
Porsche 914-2 0.09453310
Lotus Europa 0.55650363
Ford Pantera L 0.31169050
Ferrari Dino -0.29539098
Maserati Bora 0.76464932
Volvo 142E -0.24266054

Обычно мы более внимательно изучаем наблюдения, у которых значения DFFITS превышают пороговое значение 2√ p/n , где:

  • p: количество переменных-предикторов, используемых в модели.
  • n: количество наблюдений, используемых в модели.

В этом примере порог будет равен 0,5 :

#find number of predictors in model
p <- length (model$coefficients)-1

#find number of observations
n <- nrow (mtcars)

#calculate DFFITS threshold value
thresh <- 2\* sqrt (p/n)

thresh

[1] 0.5

Мы можем отсортировать наблюдения на основе их значений DFFITS, чтобы увидеть, превышает ли какое-либо из них пороговое значение:

#sort observations by DFFITS, descending
dffits[ order (-dffits['dffits(model)']), ]

 [1] 0.78230167 0.76464932 0.67858692 0.60265798 0.55650363 0.39098449
 [7] 0.35544919 0.32140303 0.31169050 0.11540062 0.09453310 0.06282342
[13] 0.05951528 -0.03521572 -0.03841129 -0.08062828 -0.09682952 -0.09780612
[19] -0.14633456 -0.14633456 -0.15567627 -0.15860270 -0.16674639 -0.17618948
[25] -0.19956440 -0.20965432 -0.22680622 -0.24266054 -0.25804885 -0.26586716
[31] -0.29539098 -0.32763355

Мы видим, что первые пять наблюдений имеют значение DFFITS больше 0,5, что означает, что мы можем захотеть изучить эти наблюдения ближе, чтобы определить, сильно ли они влияют на модель.

Шаг 3: Визуализируйте DFFITS для каждого наблюдения

Наконец, мы можем создать быстрый график для визуализации DFFITS для каждого наблюдения:

#plot DFFITS values for each observation
plot(dffits(model), type = 'h')

#add horizontal lines at absolute values for threshold
abline(h = thresh, lty = 2)
abline(h = -thresh, lty = 2)
DFFITS в R

На оси X отображается индекс каждого наблюдения в наборе данных, а значение Y отображает соответствующее значение DFFITS для каждого наблюдения.

Дополнительные ресурсы

Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как рассчитать статистику кредитного плеча в R
Как создать остаточный график в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.