R에서 dffits를 계산하는 방법


통계에서 우리는 회귀 모델에서 다양한 관찰이 어떤 영향을 미치는지 알고 싶어하는 경우가 많습니다.

관측치의 영향을 계산하는 한 가지 방법은 “적합의 차이”를 의미하는 DFFITS 라는 측정항목을 사용하는 것입니다.

이 측정항목은 개별 관찰을 생략할 때 회귀 모델에 의한 예측이 얼마나 변경되는지 알려줍니다.

이 튜토리얼에서는 R 모델의 각 관측값에 대한 DFFITS를 계산하고 시각화하는 방법에 대한 단계별 예를 보여줍니다.

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단계: 각 관측치에 대한 DFFITS 계산

다음으로 내장된 dffits() 함수를 사용하여 모델의 각 관측값에 대한 DFFITS 값을 계산합니다.

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

#display DFFITS for each observation
challenges

                    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

일반적으로 우리는 임계값 2√ p/n을 초과하는 DFFITS 값을 갖는 관측치를 자세히 살펴봅니다. 여기서:

  • 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

처음 5개 관측치의 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)

R의 DFFITS

x축은 데이터 세트의 각 관측치 색인을 표시하고 y값은 각 관측치에 해당하는 DFFITS 값을 표시합니다.

추가 리소스

R에서 단순 선형 회귀를 수행하는 방법
R에서 다중 선형 회귀를 수행하는 방법
R에서 레버리지 통계를 계산하는 방법
R에서 잔차 플롯을 만드는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다