본문 바로가기
대응표본 차이 검정의 유익함 - Paired t test -

정말 하면 할수록 어렵네요. 사실 Independent Samples t test로 그냥 끝날 줄 알았더니, 또 뭔가 나타났습니다요. 대응표본 - Paired 라니, 또 이름만으로는 알 수 없는 이야기입니다. 검정이라는 것은 실로 여러 가지가 있군요.

Paired t test는 한 개의 집단에 대하여 뭔가를 했더니 그에 대한 변화가 일어났는가?를 알아보는 검정Test입니다. 이런 경우라면 어떤 경우가 가장 쉬운 예제냐 하면 의학 데이터 쪽이 많이 있습니다. 예를 들어, 어떤 집단의 환자들에게 아라불라샤 치료를 했더니 - 약을 복용하게 한다던가, 주사를 맞는다던가, 특정 운동을 시킨다던가 하는 뭐 그런 것들이에요 - 실제로 이게 효과가 있는가? 하는 그런 검정입니다. - 사실 눈으로 봐도 대충 알만한 경우가 꽤 있긴 한데, 그래도 확률적인 결론을 내기 위해서 Paired t test를 하게 되는 거죠. 여기에서 중요한 것은 동일한 개체에 대한 쌍(pair)의 데이터가 있어야 하고요, 동일 개체에 대한 사전 사후 데이터가 있어야 동일한 개체에 대해 뭔가 효과가 있는지 보는 것이고, 더 중요한 것은 각 개체의 변화 결과는 다른 개체의 결과와 독립입니다. 그렇다면! 그냥 감으로만 생각해 봐도 끝까지 따라가 보면 논리는 1 Sample t test와 완전 똑같은 이야기가 되지 않겠습니꽈? 사전 사후의 차이가 0인가?를 보게 될 테니까요.

이번에는 이론보다는 예를 들어서 접근하면 훨씬 쉽게 이해할 수 있다고 생각합니다. 

어떤 정신과 의사가 환자들을 상대로 스트레스 호르몬인 코르티솔을 줄이기 위해  코끼리를 타고 바흐의 음악을 듣게 했다고 합니다. 이런 치료 기법을 아라불라샤라고 하면 좋겠군요. - 사실은 실제로 아라블라샤라는 치료는 없습니다. 상상의 이름이니까 이건 거짓말입니다. -

이 환자들(각 개체)의 전후 상태를 관찰한 결과는 다음과 같습니다.

흠. 이걸 보면 어떤 생각이 드나요?라고는 했지만, 멍하니 아무 생각 없는 게 당연하니까, 일단 Box Plot으로 비교해 보겠습니다. 

에헷 그냥 봐도 꽤나 차이가 나 보이는 군요. 분명히 치료 후에 코르티솔이 줄었을 것 같습니다. 그러면 확률적으로 검정을 할 준비 완료가 되었으니, Paired t test를 본격적으로 해볼까요?

우선 Null Hypothesis는 말로 풀어쓰면 after가 더 크거나 같다.이고요, Alternative Hypothesis는 after가 더 작다. 이렇게 표현한다면 Null Hypothesis의 확률분포를 ~라고 치고 가정할 수가 있으면서 안전하게 치료에 별 효과가 없다고 주장할 수가 있고, 덤으로 단측검정 결과가 Significant(상당)하다면 치료에 효과가 있다고 주장할 수 있겠습니다. 요컨대 이렇게 Null Hypothesis를 설정하면 확실하게 모수를 가정할 수 있고, 혹시라도 Null Hypothesis가 기각된다면 확실하게 after가 더 작게 되어 실험의 효용을 판단하기 좋겠습니다. 이런 식으로 판단해야 안전하겠지요?

그러면,
$\mu_{after} - \mu_{before} \geq 0 $ 가 Null Hypothesis이고요, 
$\mu_{after} - \mu_{before} < 0 $가 Alternative Hypothesis입니다. 

차이로 이걸 다시 써보면

$\mu_{diff} \geq 0 $ 가 Null Hypothesis이고요, 
$\mu_{diff} < 0 $가 Alternative Hypothesis입니다. 
Paired t test에서의 실험 전, 실험 후의 차이의 분포가 t 분포를 따르겠군요. 어차피 차이의 평균을 따지는데, 표준편차를 표본의 표준편차를 쓸 것이니까요. - 물론 사전, 사후의 모집단은 정규분포가 되어야 하겠습니다. 이런 말을 일일이 붙인다는 건 고역이군요 - 그러므로 σ를 $\cfrac{s_{diff}}{\sqrt{n}}$ 으로 대치하여 보면, 1 Sample t test와 완전히 똑같은 모양입니다. 

이때 t 검정통계량은 $t=\cfrac{\bar{diff}-\mu_{diff}}{\cfrac{s_{diff}}{\sqrt{n}}}$ 이겠군요. diff자체가 변수가 되는 꼴이죠. 어때요. z분포 평균 검정통계량  $\cfrac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}}$과 완전히 똑같은 꼴이죠? 한 개의 집단에서 pair를 이루는 대상에 대한 데이터의 차이를 표본으로 두면 1 Sample t test와 완전히 같은 꼴입니다.  

그러면 통계량을 계산해 보시죠. 

$t_{stat}=\cfrac{\bar{diff}-\mu_{diff}}{\cfrac{s_{diff}}{\sqrt{n}}} \Bigg\rvert_{\substack{\begin{align*}\bar{diff}&=-20.07 \\ \mu&=0 \\ s_{diff} &=538.06 \\ n &= 12   \end{align*}}} = -3.02$ 

오, t가 -3.02가 나왔군요. t test에서 자유도 11의 5%유의수준인 경우, one-sided t값은 -1.80 이니까, 이걸 비교해 보면 -1.80보다 작으므로, NULL Hypothesis를 기각할 수 있습니다. 즉, $\mu_{diff}<0$ 이라고 할 수 있습니다. 그러니까, 어. 코르티솔이 줄었네? 스트레스가 완화되었네?라는 결론에 이르르르르게 되는 것입니다. 

사실 이걸 statmodel을 이용하면 아주 간단합니다. 첫 번째 argument - 두 번째 argument를 diff로 한다면. 즉, 실험 후-실험 전으로 넣어준다는 의미입니다 - (이것은 pandas의 Dataframe을 사용한 예입니다)

paired_sample = stats.ttest_rel(df_raw['실험후'], df_raw['실험전'] )
print('t검정 통계량 = %.3f, p_value = %.3f'%paired_sample)

이렇게 하면, 결과가 뙇.
t검정 통계량 = -3.020, p_value = 0.012

이렇게 나옵니다. 직접 계산한 것과 똑같죠? p_value를 보면 0.012가 나오니까, 5% 유의수준에서 보았을 때 훨씬 작습니다. 호옷. 코끼리를 타고 바흐를 들었더니 뭔가 줄었는데 이게 확률적으로 의미가 있게 줄었다. 뭐 그런 스토리입니다. 재밌네요. 

참고로 diff를 1개의 변수로 보았으니, 1 Sample t test로 검정한다면, 

import numpy as np

x = np.subtract(np.array(after), np.array(before))
ttest_1samp(x, 0)

이렇게 하면 처음에 예상한 것과 마찬가지로 t검정 통계량 = -3.020, p_value = 0.012으로 똑같은 결과가 나옵니다. 신기하죠?

여기에서 주의할 것은 우리가 이제까지 잊고 있었던 것이 있는데, 두 개의 데이터가 한 개의 집단에서 나왔다는 사실이긴 하지만, 서로 독립이기 때문에 t 검정이 가능합니다. 역시나 Paired t test도 모수가정을 하지 않는 비모수 검정 방법이 있는데 그것이 그 유명한 Wilcoxon Test입니다. 다음과 같이 해 볼 수 있습니다. 

import scipy.stats as st, numpy as np
print st.wilcoxon(before, after)

WilcoxonResult(statistic=506.0, pvalue=0.00058875122425830928)

이런 식이랍니다. 당연히 p value를 이용해서 해석을 하게 되는데, 이 예시라면 전후로 차이가 있다로 결론 맺을 수 있겠군요. 갑자기 비모수 검정을 이야기해서 미안하긴 한데, 뒤쪽에서 모든 검정에 대한 비모수 검정을 정리해볼 요량입니다. 



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



댓글





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