분산 분석 및 모델 간의 비교
선형 회귀에서 분산 분석Analysis of Variance2 은 모델을 평가하거나 모델 간의 비교를 위해 사용된다. 이때 사용하는 함수는 anova( )다.
anova : 하나 이상의 모델 객체에 대한 분산 분석을 수행한다. |
anova( object, # 모델 피팅 함수(예를 들면, lm)의 반환 값 ... # 비교할 또 다른 객체들 ) |
summary( )가 보여주는 F 통계량은 anova( ) 함수를 사용해 직접 구할 수 있다.
> anova(m)
Analysis of Variance Table
Response: dist
Df Sum Sq Mean Sq F value Pr(>F)
speed 1 21186 21185.5 89.567 1.49e-12 ***
Residuals 48 11354 236.5
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
또한, anova( ) 함수를 사용해 완전 모델과 축소 모델을 직접 비교해볼 수도 있다. 완전 모델은 원래 사용한 모델 dist ~ speed며, 축소 모델은 원래 사용한 모델보다 설명 변수를 줄인 모델로 speed를 제외하고 dist를 상숫값으로 예측한 경우다.
> (full <- lm(dist ~ speed, data=cars)) Call: lm(formula = dist ~ speed, data = cars) Coefficients: (Intercept) speed -17.579 3.932 > (reduced <- lm(dist ~ 1, data=cars)) Call: lm(formula = dist ~ 1, data = cars) Coefficients: (Intercept) 42.98
다음은 anova( )로 full과 reduced를 비교한 결과다.
> anova(reduced, full)
Analysis of Variance Table
Model 1: dist ~ 1
Model 2: dist ~ speed
Res.Df RSS Df Sum of Sq F Pr(>F)
1 49 32539
2 48 11354 1 21186 89.567 1.49e-12 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
모델을 비교한 결과 F 통계량은 89.567이며, p 값은 아주 작게 나타났다. 따라서 reduced 모델과 full 모델 간에는 유의한 차이가 있다고 결론을 내린다. 바꿔 말하면 speed열이 유의미한 설명 변수임을 뜻한다.