데이터 분석/통계(Statistics)

[Python] 대응 2표본 검정(Paired test) - (1)

Jerry Jun 2020. 8. 26. 12:23
728x90

♪ 대응 2표본 검정

 - (1) Paired t-test

 - (2) Wilcoxon's signed rank test

 

 

※ 대응표본(paired sample)

- 두 모집단으로부터 표본을 각각 추출할 때 표본 각각의 인자가 서로 대응되는 표본

- 사전(pre)과 사후(post)를 비교할 때 주로 사용한다.

 

 

만약에 이런 질문을 받았다고 생각해보자.

"다이어트 프로그램이 체중 감량하는데 효과가 있다는 것을 증명해봐!"

이런 상황일 때 대응 2표본 검정을 실행시키면 된다.

 

pairedtest

 

모집단 A(Pre) 와 모집단 B(Post)가 있다고 가정하자.

각 모집단에는 인자들이 있을 것이고 서로 대응한다.

 

예를 들어, 다이어트 프로그램을 하기 전(Pre)과 후(Post) 라고 정하였다.

 

귀무가설은 "다이어트 프로그램을 하기 전의 평균과 한 후의 평균은 같다." 이다.

이런 경우에는 다이어트 프로그램이 살을 빼는 데 효과가 없는 것으로 결론이 날 수 있다.

또한, 사전(Pre) - 사후(Post) = D(Difference) 이고 [ D의 평균 = 0 ] 과 같다 할 수 있다.

 

대립가설

"다이어트 프로그램을 하기 전의 평균과 한 후의 평균이 같지 않다."(D의 평균 ≠ 0) or

"다이어트 프로그램을 하기 전의 평균이 한 후의 평균보다 크다." (D의 평균 > 0) or

"다이어트 프로그램을 하기 전의 평균이 한 후의 평균보다 작다." (D의 평균 < 0) 인 경우로 3가지가 있을 수 있다.

 


 

paired01paired02

이제 가설 검정을 시작해보자.

 

* 가정 : D는 정규분포를 따른다.

기무가설 : 사전평균 = 사후평균

대립가설 : 사전평균 < 사후평균

 

어떤 D의 평균에 따라 기무가설과 대립가설로 바뀔까.

D의 평균이 정규분포를 따를 때 오른쪽 그림처럼 나타난다. 

유의수준의 방향은 대립가설이 결정하기 때문에 이 예시의 경우 "작다" 라는 대립가설에 의해 왼편에 기준을 둔다.

그 기준에 따라 왼편에 있다면 대립가설을 따르고 오른쪽에 있다면 기무가설을 따른다고 할 수 있다.

 

 

3. 표본조사

표본조사를 통해 하나의 값이 나왔다고 치면 그 값은 D의 평균보다 클 수도 있고 작을 수도 있다.

그 경우가 그림과 같이 나타나있다. 저 경우에서도 왼편의 값을 보고 있는데 이 또한 대립가설의 경우 때문이다.

 

이제 D의 평균을 표준화 한 'Z' 와 다음 최종인 t를 보자.

 

aver01aver02


이제 파이썬으로 처음부터 차근차근 시작.

 

import pandas as pd
import scipy.stats as stats

[가설검정]

귀무가설 : 다이어트는 몸무게를 줄이는 것에 효과가 없다. (사전 몸무게 = 사후 몸무게)

대립가설 : 다이어트는 몸무게를 줄이는 것에 효과가 있다. (사전 몸무게 > 사후 몸무게)

 

diet = pd.read_excel(io = "저장경로/diet.xlsx", 
                     sheet_name = 0, 
                     header = 0)
-------------------------------------------------------
      name	  before  after
0	김철수	    49	     46
1	김영희	    53	     49
2	바둑이	    55	     52
3	김한문	    57	     53
4	이수학	    50	     47
5	박영어	    45	     48
6	최과학	    80	     73
7	신미술	    67	     62
8	오체육	    47	     44

 

임시로 엑셀파일을 만들어 불러왔다.

 

stats.ttest_rel(diet.before, diet.after)
-----------------------------------------------
Ttest_relResult(statistic=3.603944642806961, pvalue=0.006942420396505738)

stats.ttest_rel 을 이용했다.

* 검정통계량(t) = 3.604

* p-value = 0.007?

파이썬에서 계산되는 p-value는 가설이 "같지 않다" 일 때 나오는 결과이다.

따라서 현재 내가 실행하는 가설은 "크다" 이기 때문에 

 

아래에 나와있는 코드를 참조하여

D mean : 3.22

이 값을 t로 바꾸면?

t = (3.22 - 0) / (2.68 / root(9)) =  3.604

diet["difference"] = (diet.before - diet.after)
diet.difference.describe()
-----------------------------------------------------
count    9.000000
mean     3.222222
std      2.682246
min     -3.000000
25%      3.000000
50%      3.000000
75%      4.000000
max      7.000000
Name: difference, dtype: float64

pvalue

따라서 p-value 0.004 이므로

유의수준 0.05보다 작기 때문에 대립가설에 따라

"다이어트는 몸무게를 줄이는 것에 효과가 있다" 로 나타났다.

 


* 자료출처 :  2020 AI 데이터분석 개발자과정 : 기초 통계 (이부일 CEO님)

대응 2표본 검정은 복습할 게 많다.

다음 게시물에서....

300x250