본문 바로가기
회귀와 검정 - 회귀분석결과가 괜찮은가? 통계적인 해석 t, F검정, 그리고 갑분싸 ANOVA 엥?

"회귀분석 결과의 해석과 R²(설명력,결정계수)의 의미, 그리고 R²은 상관계수의 제곱. 응?"편에 이어, 회귀분석을 했으면 그 결과를 검정해야 무릇 통계라고 할 수 있지 않겠습니꽈아아? 회귀에 대해서는 대체 어떤 검정이 기다리고 있을까 하면, 또다시 반가운(?) 그놈의 t, F 검정이 기다리고 있겠습니다. 이전에 했던 분석 결과를 다시 한번 늘어놓으면,

R-squared: 0.952   ⓵
Adj. R-squared: 0.936 ⓵ 
F-statistic:    59.41 ⓶
Prob (F-statistic): 0.00454 ⓶ 

⓷           coef   std err   t        P>|t|	
Intercept    -27.8  18.331   -1.517    0.227	
X            0.426  0.055    7.708     0.005

 

이런데요, 이 결과를 보면 ② F검정도 있고, ③ t검정도 있군요. 흐음~ 그러면, 조금은 더 친숙한 ③ t 검정부터 보고, ② F검정을 보는 순서로 들여다보도록 하겠습니다.

먼저 t검정을 보자면, 명색이 검정이니까, 이때에 걸맞은 가설이 있어야 하겠죠.

y = β₀ + β₁x 가 회귀식이라고 했을 때,

Null Hypothesis가 β₁=0이고,
Alternative Hypothesis는 β₁≠0입니다. β₁은 모집단의 기울기입니다.

이게 무슨 의미냐면 모 기울기가 0이면 즉, 지난번에 보았던 엉망진창 회귀선과 똑같은 경우이고, Null Hypothesis를 기각하지 못하면, 회귀분석을 통해 회귀선을 찾았다고 해도 엉망진창 상태와 다름이 없다는 의미입니다. 기울기가 0이 아니면 모집단의 독립변수와 종속변수가 관계가 있긴 하고, 그럭저럭 회귀분석이 의미가 있다는 뜻이겠죠.

자, 그러면 t검정을 할 때 어떤 검정을 할 것인가 하면, 기억할지 모르겠지만, "진짜 평균이 그래도 되나. t분포- One Sample t-Test"편에서 보았던 One Sample t-Test를 하려고 합니다. 그러니까 진짜 기울기가 그래도 되나? 즉, 진짜 기울기가 0이어도 되나?라는 가설입니다.

이때 검정 통계량으로 사용했던 것이 - 당연히 기억하고 있겠죠...??? -

$$ t_{stat} = \cfrac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}} = \cfrac{\bar{X}-\mu}{SE} \,\, where \, SE=\cfrac{s}{\sqrt{n}}$$

이었는데요, t Test는 다 그놈이~ 그놈. 똑같은 이야기입니다. 이번에 구해서 검정하려고 하는 검정 통계량은
$$ t_{stat} = \cfrac{b_1 - \beta_1}{SE(b_1)} = \cfrac{b_1 - 0}{SE(b_1)}$$

입니다. 여기에서 β₁은 귀무가설에서 주장하는 모집단의 회귀계수이고요 -그래서 0이어도 되나? 니까, 0으로 설정하고요 - SE는 회귀계수 b₁의 표준오차입니다. 그러니까 b₁의 SE를 구하는 것이 가장 큰 관심사가 되겠는데, 그 목표를 향하여 가보겠습니다. 만 사실 결과만 알아도 된다면 굳이 자세히 들여다볼 필요는 없다고 생각합니다만. 늘 그렇듯이.

관심 있는 사람은 고고.

일단 $b_1 = \cfrac{\sum{(x_i-\bar{x})(y_i - \bar{y})}}{\sum{(x_i - \bar{x})^2}}$ 잖아요? 여기서부터 시작해 보시죠.
$SE(b_1)$ 는 분산에 루트를 씌우면 되니까, 분산에서 시작해 보겠습니다. $Var(b_1) = Var\left( \cfrac{\sum{(x_i-\bar{x})(y_i - \bar{y})}}{\sum{(x_i - \bar{x})^2}} \right)$ 입니다. 여기에서 $(x_i - \bar{x})$는 들고 다니기 거추장스러우니까, cᵢ로 치환해서 보면
$= Var\left( \cfrac{\sum{c_i(y_i - \bar{y})}}{\sum{c_i ^2}} \right) = \sum \left( Var\left( \cfrac{{c_i(y_i - \bar{y})}}{{c_i ^2}} \right) \right)$ 가 될 수 있겠습니다.

cᵢ를 Var밖으로 빼면 제곱이 되고, 상수의 Var은 0이니까,
$ = \sum\left( \cfrac{1}{c_i ^2} Var(y_i-\bar{y}) \right) = \sum\left( \cfrac{Var(y_i)}{c_i ^2} \right)$ 가 됩니다.

$Var(y_i ) = Var(b_0 + b_1 x_i + \epsilon_i) = Var(\epsilon_i) $ 입니다 (Var(상수)=0 이 되므로). 여기에서 모든 i에 대하여 Var(εᵢ)는 가우시안을 따르는 오차항으로써 Σ와 관계없는 $Var(y_i) \triangleq \sigma^2$(상수)로 정의할 수 있겠습니다.

$= \sum\left( \cfrac{\sigma^2}{c_i ^2} \right) = \sum \left( \cfrac{\sigma^2}{(x_i - \bar{x})^2} \right) = \cfrac{\sigma^2}{\sum(x_i-\bar{x})^2}$가 되는 긴 귀찮은 이야기인데 말이죠.

이것이 b₁의 분산이 되겠습니다. 기울기는 y/x의 비(ratio)잖아요? x는 상수이고, yᵢ의 개별 분포가 가우시안 - 해당 개별 오차항이 가우시안 이니까요 - 이라고 했으니까, 회귀계수는 가우시안을 따르겠습니다.

$b_1 \sim \mathcal{N} \left( \beta_1, \cfrac{\sigma^2}{\sum(x_i - \bar{x})^2} \right)$

이런 분포를 갖게 된다고 할 수 있겠습니다. 흐음. 이때! 가우시안을 따르는 모분산의 오차항의 분산을 알리 없고, 표본의 분산밖에 모르니까, 상수로 취급했던 σ를 표본의 s로 바꾸면 t 분포를 따르겠군요! 유후!

$b_1 \sim \mathcal{t_{dof}} \left( \beta_1, \cfrac{s^2}{\sum(x_i - \bar{x})^2} \right)$

여기에서, s를 구해야 결론에 이르를 수 있겠는데,

$s^2 = Var(y_i) = Var(b_0 + b_1 x_i + \epsilon_i) = Var(\epsilon_i) = \cfrac{\sum{(\epsilon_i-0)^2}}{dof} = \cfrac{\sum{(\epsilon_i)^2}}{dof}$ 가 되겠습니다. 여기에서 자유도 dof는 n개의 표본에서 b₀와 b₁을 구하느라고 관측값 하나씩 사용했으므로 n-2가 되겠다고 설명할 수도 있겠지만, 자세한 이야기는 나중에 하도록 하고, 지금은 n-2로 생각해 주세요. 이어지는 F 검정에서의 T/R/E를 이용해서 자유도를 한번 더 정리하는 것이 어떨까 합니다. 결국 b₁의 분포는

$b_1 \sim \mathcal{t}_{n-2} \left( \beta_1, \cfrac{s^2}{\sum(x_i - \bar{x})^2} \right) \,\, where \,\, s^2 = \cfrac{\sum \epsilon_i^2}{n-2}$ 가 되겠습니다. 표준오차 SE를 구하기 위해 너무 먼길을 왔군요. 여기에서 한 걸음만 더 가보자면, T, R, E에서
$\sum \epsilon_i ^2 = SSE$입니다. 기억하겠지요? 그러니까,

결국, $b_1 \sim \mathcal{t}_{n-2} \left( \beta_1, \cfrac{s^2}{\sum(x_i - \bar{x})^2} \right) \,\, where \,\, s^2 = \cfrac{\sum \epsilon_i^2}{n-2} = \cfrac{SSE}{n-2}$

잘 보면, SE는 $\sqrt{\left( \cfrac{s^2}{\sum(x_i-\bar{x})^2} \right)} = \sqrt{\left( \cfrac{SSE/(n-2)}{\sum(x_i-\bar{x})^2} \right)} $ 가 됩니다. 코쓱. 이런 식으로 정리할 수 있겠습니다. 손으로 계산하려니까, 잠시만요. 이전에 R²를 구하느라 정리해 두었던 테이블을 다시 한번 꺼내보면 들여다 보기 편하겠네요.

자, 이제 t 검정 통계량을 구해보면, (β₁=0)

$\begin{aligned}
t_{stat} = \cfrac{b_1 - \beta_1}{SE} = \cfrac{0.426-0}{SE} \, , SE = \sqrt{\cfrac{\frac{916.95}{(5-2)}}{100000}} = 0.055285622000661255 \end{aligned}$
$\therefore t_{stat} = 7.7054392188063785$ 됩니다. 자, 그러면 t검정 통계량을 찾았으니까, t검정이 가능하겠군요.

자, 검정통계량을 구했으니, p value를 구해봅시다~ 룰루랄라.

import scipy.stats

scipy.stats.t.sf(abs(t), df=n-2)*2 # two-tailed p value를 구하자면, one-sided의 두배를 하면 됩니다. 
>
0.004543112580007979  # t검정 p value

 

회귀분석 결과에는 t검정의 p value가 0.005로 나와 있는데, 이건 반올림해서 표시된 거라서 같은 거라고 보면 되겠습니다. 반올림 전의 값은 0.00454..입니다. 어쨌든 p value를 보니 어허라. 유의합니다. 캬. 뭔가 만족스럽습니다. t검정 미션 완료!

③ 자 그리고 F검정값이 나오는데, 이건 또 무엇인가. 하는 의문을 해결해 보자구요.

F검정은 회귀 모델이 유의한가, 유의하지 않은가를 따지는데 목적이 있는데, 독립변수(xᵢ)들이 종속변수(yᵢ)를 설명하는 데 있어서 계수가 의미가 없는지, 아니면 다중 회귀의 경우에는 한 개 이상의 독립변수가 종속변수를 설명하는 유의한 설명력을 가지는가를 보는 것입니다.

이때 Null Hypothesis는 그런 의미로 β₁ = 0 입니다. t검정과 똑같이 종속변수가 영향을 끼치지 않는다는 의미입니다. 즉, 회귀선이 엉망이라는 뜻입니다. (나중에 $\hat{y} = b_0 + b_1 x_1 + b_2 x_2 + \cdots + b_i x_i$의 다중회귀까지도 적용할 수 있습니다. 그건 그때 또.)
Alternative Hypothesis는 β₁≠ 0입니다. 즉, 독립변수가 종속변수를 전혀 설명할 수 없는 것은 아니다.정도의 뜻입니다.

혹시 이전에 ANOVA F-검정에서 말했던 것을 기억하는 사람은 없겠지요. - 이런 걸 아직까지 기억하는 사람은 정말 대단하다고 생각합니다. -

이런 식의 설명을 했었는데 말이죠. 이것은 다르게 해석하면,

➊ : 효과의 분산
➋ : 오차의 분산

그러니까,

➊ : 회귀선을 찾아냈으니까, 회귀선과 평균(엉망진창 회귀선)과의 차이의 평균 (여기에서는 R이 되겠군요)
➋ : 회귀선을 찾아냈지만, 여전히 있는 관측치와 회귀선과의 차이의 평균 (여기에서는 E가 되겠습니다)

이런 얘기를 뜬금없이 꺼낸 적이 있습니다. 이제와서야 그 이야기에 대한 application을 또 만났군요.

왜 F검정을 하는가? 하면 (R²의 해석과 뭐 별반 차이는 없습니다만) R²는 R/T를 보았었는데, 조금 다른 것이, 이번에는 R/E 요런 느낌의 비율입니다. F검정을 하기 위해 분산을 다뤄야 하겠는데, SSE는 평균을 내지 않아 분산의 의미가 아니니까, 차이 제곱의 합의 평균을 내어 분산으로 만든 뒤, 분산의 비의 컨셉으로 $F = \cfrac{Mean(SSR)}{Mean(SSE)} = \cfrac{MSR}{MSE} $ 라는 것을 정의해서 검정합니다. - F 검정은 분산비의 검정이니까요.- 훗. 통제불능의 Residual에 비해 얼마나 Regression이 개선되었는가를 분산으로 측정하는 것입니다. 아주 잠깐 생각해 보는 척을 해 본다면, 이 값이 클 때, Residual 제곱합(E)은 작거나, 회귀 개선의 제곱합(R)이 크다는 것인데요, Residual(E)이 작다면 Regression 근처에 Data가 몰려있다는 뜻이고, 몰려 있다는 것은 Regression이 의미가 있네?라는 것과 어느 정도 비스므리 통한다고 생각합니다. 그러면 자연스럽게 R²도 크겠죠.

평균이라는 말이 있기 때문에 평균을 내기 위해서는 자유도로 나누어 주는 것이 정확합니다. 이때, T의 자유도는 n-1, R의 자유도는 1, E의 자유도는 n-2입니다. 왜냐하면 R부터 시작하자면, R은 회귀선이 정해지자마자 모든 x에 대해 1개의 값밖에는 가질 수가 없습니다. T의 자유도는 당연히 표본분산의 자유도이기 때문에 n-1이 되고, T와 R이 정해지고 나면 E는 전체 n개로부터 R에서 1개, T에서의 1개 도합 2개의 결정 값이 생기므로, n-2가 됩니다. 뭐 간단한 얘기 같기도 하고, 아닌 것 같기도 하고. 어쨌든 t검정에서 왜 기울기의 자유도가 n-2인지와 통하는 이야기인데, 계수에 대한 분포는 E를 이용해서 분포를 나타내기 때문입니다.

표로 정리하면,

이렇게 되겠군요. $F_0 > F(1, n-2; \alpha)$ 이면 Null reject입니다.

자, 그럼 실제로 계산을 해봅시다.

오, 그럼 F분포 자유도 1, 3 (R의 자유도 1, E의 자유도 3)일때 p value 값은! 짜잔!

from scipy import stats

F = 59.373
df_R = 1
df_E = 3
1- stats.f.cdf(F, df_R, df_E)
>
0.004543200147748561

 

엇, 회귀분석 결과의 F값과 p value가 이렇게 계산된 것이랍니다. 95% 신뢰도로 보았을 때 p value가 0.05보다 작군요. 그러면 Null Hypothesis를 기각하면서! 이 F검정 결과에 의해 이 회귀식은 의미가 있다! 고 표현합니다.

F분포표를 이용하여 검정 통계량으로 검정해 보고 싶다면, 이번엔 F분포표의 도움을 받아서, 보면 95% 일 때의 F값은 10.13이니까 59.373...은 훨씬 Extreme값이네요, 당연한 이야기지만 잊지 않도록 여러 가지 방법을 그냥 두루두루 살펴보았습니다.

잠시만요! F검정의 p value가 0.04543이라구여? 이거 방금 어디서 본 숫자 아닌가요? t 검정의 p value와 F검정의 p value가 같네요?? 와우.

t검정의 검정 통계량을 제곱하면 그것이 F검정통계량이 되고요, p value는 두 검정이 같습니다. 결국 단순 회귀 분석에서 F 와 t 검정이 같은데 말이죠, 왜냐하면 t(df=k)의 제곱은 F(df1=1, df2=k)이기 때문이고, t 제곱이 F이기 때문에 p value도 동일합니다. 단순회귀분석 즉, 독립변수가 하나 일때의 그 계수에 대한 t검정은 회귀모델이 유의한지 (모형이 적합한지) 검정하는 F-검정과 동일합니다. 자, 표를 잘 보시면 t 검정 통계량이 7.7054이었잖아요? 이걸 제곱하면 59.373 이게 나옵니다. 어? 이거 F의 검정통계량 아닌가요?
잘 보면, t검정이나 F검정이나 p value는 같고, (t검정 통계량) ² = F검정 통계량이 되는군요! 어째서 이렇게 자꾸 훅들어와서 뭔가가 서로 만나게 되는 것인가요. 압도적 찌릿.

여기에서 굉장히 재미있는 사실을 알 수 있게 되는데 말이죠, Regression의 F검정은 사실 ANOVA라는 이야기인데요, "충격! ANOVA와 선형 회귀는 관계가 있는 정도가 아니라 같은 것이라고?"라는 이야기입니다. 어허~ 이건 또 무슨 DOG ASMR인가 하면, 회귀를 위해 각 y의 분포를 3차원으로 표현했을 때,

이걸 오른쪽의 시선으로부터 바라보게 되면

이런 식으로 보이게 됩니다. 후후. 이거 어디서 많이 보지 않았나요? 그렇습니다. ANOVA네요. 집단 간 차이를 보는거죠! 이걸 ANOVA의 입장에서 보면 집단내 분산 Within은 MSE가 되고요, 집단간 분산 Between은 MSR이 되겠지요! 오호호. 그러니까, ANOVA의 F검정의 $F = \cfrac{Var_{Between}}{Var_{Within}} = \cfrac{MSR}{MSE}$ 가 되겠습니다. 결국 Regression의 F검정은 연속형 집단에서 집단간 최소한 1개의 집단은 차이가 있는가? 와 같은 이야기입니다.라는 말이죠. 즉 ANOVA는 범주형 집단, Regression은 연속형 집단 차이를 다룬다.입니다. 옆에서 바라본 것에 대하여 차이가 나면 이게 무슨 이야기인가? 하면 기울기가 0이 아니라는 말이겠죠. 머.

아니, 이거 뭐 회귀가 통계의 꽃이라더니, 상관계수와 결정계수가 관계가 있질 않나, F검정이 실은 ANOVA와 다를 바 없다, 고 하질 않나 자율 감각 쾌감 반응이 조금 온 것 같습니다. 이런 걸 수학적 오르가즘이라고도 하던데, 흥미진진합니다.

여러 이야기가 "회귀분석 결과의 해석과 R²(설명력,결정계수)의 의미, 그리고 R²은 상관계수의 제곱. 응?"편 에서부터 연결되는 것이 많으니 거꾸로 그 글을 읽는 것도 큰 도움이 될 거라 생각합니다. 

친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -