Chap 5. 회귀분석 _ 5.2 회귀분석의 ANOVA

Date:     Updated:

카테고리:

태그:

\(R^2\)은 결정계수로 두 양적 변수 사이의 상관관계의 제곱이며 설명변수가 반응변수의 변동의 양을 설명하는 척도라 하였다. 어떻게 하면 변동의 양을 측정할 수 있을까? 접근방식은 분산분석이다. 앞의 게시물에서 여러 그룹 간의 평균 차이를 검증하기 위해 한 변수의 변동을 어떻게 분해하는지 배웠다. 회귀분석의 분산분석도 이와 유사하다.

변동 분해

양적 예측변수가 하나일 때 단순 선형모형은 다음과 같다.

\[Y = \beta_0 + \beta_1 X + \epsilon\]

모형이 반응변수를 얼마나 잘 설명하는지 평가하기 위해 반응변수의 총 변동을 두 부분으로 분해한다. 하나는 모형(최소 제곱선)으로 설명되는 변동이고, 다른 하나는 설명되지 않고 오차로 남은 변동이다.

image

각 변동은 편차 제곱합으로 측정한다.

\[SSTotal = SSModel + SSE\]

각 항은 다음과 같이 정의된다.

  • SSTotal(총 제곱합) = \(\sum(y-\bar y)^2\)
  • SSModel(모형으로 설명되는 제곱합) = \(\sum(\hat y - \bar y)^2\)
  • SSE(오차 제곱합) = \(\sum(y-\hat y)^2\)

아래 그림에서 총 제곱합과 오차 제곱합을 시각적으로 표현하였다. SSTotal은 반응변수의 값과 평균과의 편차를 구한 거의 제곱합니다.(왼쪽) \(\bar y\)는 예측 변수의 정보가 없을 때 단일 값으로 반응변수를 예측한 조잡한 모형이다. SSE는 반응 변수를 모형으로 예측할 때 발생하는 오차의 제곱합이다.(오른쪽)

image

예시

분산분석에서 회귀 모형으로 설명되는 제곱합과 오차 제곱합을 더하면 총 제곱합이 되는지 확인해보겠다.

Cereal 데이터에는 3개 제조사의 시리얼 30개 표본의 성분 등의 정보가 있다. 설탕으로 시리얼 칼로리를 예측하는 회귀모형과 분산분석을 R로 구해보겠다.

# Cereal 데이터 주소
file_url <- "http://www.lock5stat.com/datasets2e/cereal.csv"

# 데이터를 읽어서 cereal 데이터프레임으로 만든다.
cereal <- read.csv(file_url)

# 설탕으로 칼로리를 예측하는 단순 선형모형을 적합한다.
fit <- lm(calories ~ Sugars, data=cereal)

# 적합 결과
summary(fit)

# 분산분석 
anova(fit)

# 총 제곱합 계산
sum( (cereal$Calories - mean(cereal$Calories))^2 )

필요에 의해 분산분석 결과와 총 제곱합 계산의 값만 알아보겠다.

DF Sum Sq Mean Sq F value Pr(>F)
Sugrar 1 15316 15316.5 21.623 7.217e-05
Residuals 28 19834 708.3
\[> sum((cereal$Calories - mean(cereal$Calories))^2) 35150.17\]

총 제곱합 = 모형 제곱합 + 오차 제곱합은 성립한다.

\[SSModel + SSE = 15316 + 19834 = 35150 = SSTotal\]

분석 결과는 “Pr(>F)” 항복 아래 p값을 확인하면 된다. 해석은 SSModel이 SSE보다 큰 경우, 모형은 반응변수의 변동을 잘 설명한 것이다. 데이터들이 회귀선 근처에 있을 수록 모형 추정을 잘 한것이고 SSE는 줄어든다. 반면 모형의 변동은 커지기 때문이다.

F-통계량

모형에 의해 설명되는 변동과 설명되지 않고 남은 오차 변동을 비교하기 위해 먼저 각 변동을 적절한 자유도로 조정해야 한다. 단순 선형모형의 경우 모형의 자유도는 항상 1(예측 변수 한개)이고 오차 자유도는 n-2이며, 총 자유도는 n-1이다. 각 변동의 평균 제곱을 얻기 위해 제곱항르 자유도로 나눈다.

  • 모형의 평균 제곱 = \(MSModel = \frac{SSModel}{1}\)
  • 오차 평균 제곱 = \(MSE = \frac{SSE}{n-2}\)

예측 변수가 효과적이지 않은 경우, 두 개의 평균 제곱은 대략 같은 크기가 된다. 그러나 예측 변수가 유용할 경우 모형의 평균 제곱은 오차 평균 제곱에 비해 큰 값이 된다. 두 평균 제곱의 비교는 두 평균 제곱의 비율인 F-통계량으로 한다.

\[F = \frac{MSModel}{MSE}\]

검증할 가설은 아래와 같다.

\(H_0 : \beta_1 = 0\)(모형은 효과가 없다.)
\(H_\alpha : \beta_1 \neq 0\)(모형은 효과가 있다.)

위 가설은 분산분석을 통해 얻은 F-통계량을 통해 분자의 자유도가 1이고 분모의 자유도가 n-2인 F-분포에서 p값을 구하여 가설 검증을 할 수 있다.

예시

위 예제의 분산분석 결과를 이용하여 F-통계량과 p값을 구해보자.

DF Sum Sq Mean Sq F value Pr(>F)
Sugrar 1 15316 15316.5 21.623 7.217e-05
Residuals 28 19834 708.3
\[F = MSModel/MSE = 15316/708.3 = 21.62\]

분자의 자유도 1, 분모의 자유도 28인 F분포에서 21.62보다 큰 쪽의 면적이 p값이다. p값은 0.00007이다. 따라서 해당 모형에서 예측변수는 매우 효과가 있다.

깨달음

추정한 회귀모형의 예측변수에 대한 가설 검증에서 기울기에 대한 t-검증 그리고 분산분석의 p값은 같다는 것을 알 수 있다. 아래는 R을 통해 회귀모형을 만들고 각각의 가설검증을 한 결과이다.

image

t-검정) \(H_0 : \beta_1 = 0\) vs \(H_\alpha : \beta_1 \neq 0\)에서 t-통계량은 t = 1.686이고 p값은 0.103이다. 따라서 해당 모형의 기울기(예측변수)는 효과적이지 않다.

분산분석) 분산분석표에서 F = 2.844이고 자유도 1과 28인 F-분포에서 p값은 0.1028이다. 결론은 t-검증과 같다.

위 예제에서 두 검증의 p값은 거의 일치한다. 단순회귀모형의 경우, 기울기에 대한 양쪽꼬리 t-검증과 분산분석의 F-검증은 항상 동일한 p값을 갖는다. 이렇게 같은데 우리가 분산분석을 통한 F-검증을 하는 이유는 이후 다중회귀분석의 예측변수에 대한 일반화를 위해서이다. 또한, 분산분석 결과를 통해 회귀모형의 결정계수를 구할 수 있다.

R^2은 회귀모형에 의해 설명되는 반응변수의 변동의 양이기 때문에 아래 공식을 따른다.

\[R^2 = \frac{SSModel}{SSTotal}\]

Stat-basic 카테고리 내 다른 글 보러가기

댓글 남기기