R에서 강력한 표준 오류를 계산하는 방법


선형 회귀의 가정 중 하나는 모델 잔차가 예측 변수의 각 수준에 동일하게 분산되어 있다는 것입니다.

이 가정이 충족되지 않으면 회귀 모델에 이분산성이 존재한다고 합니다.

이런 일이 발생하면 모델 회귀 계수의 표준 오류가 신뢰할 수 없게 됩니다.

이를 설명하기 위해 우리는 이분산성에 대해 “견고하고” 회귀 계수에 대한 실제 표준 오류 값에 대한 더 나은 아이디어를 제공할 수 있는 견고한 표준 오류를 계산할 수 있습니다.

다음 예에서는 R의 회귀 모델에 대한 강력한 표준 오류를 계산하는 방법을 보여줍니다.

예: R에서 강력한 표준 오류 계산

한 수업에서 20명의 학생이 공부한 시간과 시험 점수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (hours=c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4,
                         4, 5, 5, 5, 6, 6, 7, 7, 8),
                 score=c(67, 68, 74, 70, 71, 75, 80, 70, 84, 72,
                         88, 75, 95, 75, 99, 78, 99, 65, 96, 70))

#view head of data frame
head(df)

  hours score
1 1 67
2 1 68
3 1 74
4 1 70
5 2 71
6 2 75

lm() 함수를 사용하여 시간을 예측 변수로 사용하고 점수를 응답 변수로 사용하는 R의 회귀 모델을 맞출 수 있습니다.

 #fit regression model
fit <- lm(score ~ hours, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = score ~ hours, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-19,775 -5,298 -3,521 7,520 18,116 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 71.158 4.708 15.11 1.14e-11 ***
hours 1.945 1.075 1.81 0.087 .  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 10.48 on 18 degrees of freedom
Multiple R-squared: 0.154, Adjusted R-squared: 0.107 
F-statistic: 3.278 on 1 and 18 DF, p-value: 0.08696

회귀 모델에서 이분산성이 문제인지 시각적으로 확인하는 가장 쉬운 방법은 잔차 그림을 만드는 것입니다.

 #create residual vs. fitted plot
plot(fitted(fit), reside(fit))

#add a horizontal line at y=0 
abline(0,0) 

x축은 반응변수의 적합치를 나타내고, y축은 해당 잔차를 나타낸다.

그래프를 보면 적합치가 증가함에 따라 잔차의 분산이 증가하는 것을 볼 수 있습니다.

이는 회귀 모델에서 이분산성이 문제가 될 가능성이 높으며 모델 요약의 표준 오류가 신뢰할 수 없음을 나타냅니다.

강력한 표준 오류를 계산하기 위해 다음과 같이 lmtest 패키지의 coeftest() 함수와 샌드위치 패키지의 vcovHC() 함수를 사용할 수 있습니다.

 library (lmtest)
library (sandwich)

#calculate robust standard errors for model coefficients
coeftest(fit, vcov = vcovHC(fit, type = ' HC0 '))

t test of coefficients:

            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 71.1576 3.3072 21.5160 2.719e-14 ***
hours 1.9454 1.2072 1.6115 0.1245    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

시간 예측 변수에 대한 표준 오차는 이전 모델 요약의 1.075에서 이 모델 요약의 1.2072로 증가했습니다.

원래 회귀 모델에는 이분산성이 존재하므로 이 표준 오류 추정치는 더 신뢰할 수 있으며 시간 예측 변수에 대한 신뢰 구간을 계산할 때 사용해야 합니다.

참고 : vcovHC() 함수에서 계산하는 가장 일반적인 추정 유형은 ‘HC0’이지만 문서를 참조하여 다른 유형의 추정을 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 이분산성에 대한 White의 테스트를 수행하는 방법
R에서 선형 회귀 출력을 해석하는 방법
R에서 잔차 플롯을 만드는 방법

의견을 추가하다

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