본문 바로가기
내가 하는 데이터분석/내가 하는 통계분석

[대응표본 T-검정, Paired Samles T-Test] with Python

by Pymoon 2022. 12. 27.

두 집간 간의 평균 차이를 검정하는 T검정에서 대응표본 T-검정을 복습해보자.

 

 

 

이 전엔 일표본 T-검정에 대해서 정리해보고 복습해 보았다.

 

일표본 T-검정

두 집간 간의 평균 차이를 검정하는 T검정에서 일표본 T-검정을 복습해보자. 기본가정 정규성 만족 (아닐 시 윌콕슨의 부호 순위 검정) 종속변수는 연속형, 독립변수 범주형 검증하고자 하는 기

py-moon.tistory.com

 

 

 

기본가정

  • 정규성 만족 (아닐 시 윌콕슨의 부호 순위 검정)
  • 종속변수는 연속형, 독립변수 1개 범주형
  • 짝(개수) 만족

.

 


 

 

1
2
3
4
5
6
import pandas as pd
 
data = {'before':[7,3,4,5,2,1,6,6,5,4],
       'after':[8,4,5,6,2,3,6,8,6,5]}
data = pd.DataFrame(data)
data.head()
cs

> 수면제 복용 전과 후의 수면시간 차이를 검정하기 위한 데이터셋이다.

 

> 데이터를 임의로 개수를 맞춘 두 개의 변수를 만들어 DataFrame으로 만들어 준다.

 

 

 

data.head()

> data.head를 통해 상위 5개의 데이터를 확인해본 결과 위와 같이 출력이 되었다.

 

 

 

> 기본 가정 중 정규성을 만족하는지 확인해보자.


1
2
3
4
5
6
import scipy.stats as stats
from scipy.stats import shapiro
 
# 정규성 검정
print("before변수에 대한 정규성 검정 결과 :", shapiro(data['before']))
print("after변수에 대한 정규성 검정 결과 :", shapiro(data['after']))
cs

> 샤피로윌크 검정을 통해서 두 변수가 모두 정규분포를 따르는지 확인해보고자 한다.

 

 

귀무가설 : 해당 변수는 정규성을 만족한다.

 

대립가설 : 해당 변수는 정규성을 만족하지 않는다.

 

 

 

 

1
2
before변수에 대한 정규성 검정 결과 : ShapiroResult(statistic=0.9644594192504883, pvalue=0.8352694511413574)
after변수에 대한 정규성 검정 결과 : ShapiroResult(statistic=0.9456835985183716, pvalue=0.6177982091903687)
cs

> before 변수는 유의확률(pvalue)이 약 0.83으로 유의수준(0.05)보다 크므로 귀무가설을 채택한다.

 

> 즉, before 변수는 정규성을 만족한다.

 

> after 변수는 유의확률(pvalue)이 약 0.61으로 유의수준(0.05)보다 크므로 귀무가설을 채택한다.

 

> 즉, after 변수도 정규성을 만족한다.

 

 

 

 

> 두 변수 모두 정규성을 만족하므로 before 와 after의 변화가 얼마나 대응 되는지를 검증한다.

 

> 검증 방법은 stats.ttest_rel(x,y)를 활용하고자 한다.

 


1
2
3
import scipy.stats as stats
 
stats.ttest_rel(data['after'], data['before'], alternative='greater')
cs

> 기본 가정을 모두 충족시켰기 때문에 해당 가설검정을 대응표본 t검정으로 검정을 실시한다. 

 

 

귀무가설 : 수면제 복용 전과 후의 수면시간 차이는 없다.

 

대립가설 : 수면제 복용 전과 후의 수면시간 차이가 있다.

 

 

 

 

1
Ttest_relResult(statistic=4.743416490252569, pvalue=0.0005269356285082764)
cs

> 실시한 결과에서 유의확률(pvalue)이 유의수준(0.05)보다 작으므로 귀무가설을 기각하고 대립가설을 채택한다.

 

> 즉, 수면제 복용 전과 후의 수면시간에는 차이가 있다는 결과이다.

 

> 결과에 대한 직관적인 이해를 돕기 위해 데이터를 출력해봤다.

 

 

 

 

1
2
3
4
data.mean()
 
before    4.3
after     5.3
cs

> 두 변수에 대해서 평균을 출력해본 결과,

 

> 수면제 복용 전의 수면시간 평균은 4.3시간이고 , 수면제 복용 후의 수면시간의 평균은 5.3시간이다.

 

 

 


 

> 데이터를 통해 가설검정의 결과를 직관적으로 이해할 수 있었다.

 

> 이론적으로 공부하고 손코딩으로 학습을 그쳤을 때보다 해당 과정을 정리하며 적어 내려가는 방법이 학습에 더 도움이 되는 것 같다.

 

> 이해하는데도 도움이 되고 중간중간 이해가 안되는 부분은 바로 찾아서 정리하니 더 오래 기억에 남을 것 같다.