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

[일표본 T-검정, One Sample T-Test] with Python

by Pymoon 2022. 12. 25.

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

 

기본가정

  • 정규성 만족 (아닐 시 윌콕슨의 부호 순위 검정)
  • 종속변수는 연속형, 독립변수 범주형
  • 검증하고자 하는 기준값이 존재

 


 

1
2
3
4
import pandas as pd
 
cats = pd.read_csv('data/cats.csv')
cats.head()
cs

 

> 데이터를 읽어와서 head를 찍어본다.

 

 

 

1
2
3
4
5
6
  Sex  Bwt  Hwt
0   F  2.0  7.0
1   F  2.0  7.4
2   F  2.0  9.5
3   F  2.1  7.2
4   F  2.1  7.3
cs

 

> 세 개의 컬럼으로 이루어진 데이터셋인 것을 확인할 수 있다

 

 

 


 

1
2
3
4
5
import scipy.stats as stats
from scipy.stats import shapiro
 
# 정규성 검정
shapiro(cats['Bwt'])
cs

 

> 다음은 데이터셋에서 Bwt컬럼으로 정규성 검정을 샤피로-윌크 검정으로 실시한다

 

 

귀무가설 : Bwt는 정규성을 가진다.

대립가설 : Bwt는 정규성을 가지지 않는다.

 

 

 

1
ShapiroResult(statistic=0.9518786668777466, pvalue=6.730248423991725e-05)
cs

 

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

 

> 따라서, Bwt 변수는 정규성을 만족하지 못한다.

 

 

 

 

1
stats.ttest_1samp(one_sample, popmean="지정 평균값")
cs

> 만일, 정규성을 만족다면 위 코드로 t-test를 진행하면 된다.

 

 

 

> 하지만 이번 검정결과에선 정규분포를 따르지 않으므로 윌콕슨 부호순위 검정으로 t-test를 진행한다.

 

 


 

1
2
mu=2.6
stats.wilcoxon(cats.Bwt - mu, alternative='two-sided')
cs

 

> 일표본 T검정의 기본가정 중 하나인 기준값을 mu로 정해준다. 그리곤 윌콕슨 검정으로 t-test를 진행한다.

 

 

 

귀무가설 : 모집단의 중앙값은 mu이다.

대립가설 : 모집단의 중앙값은 mu가 아니다.

 

 

 

 

1
WilcoxonResult(statistic=3573.0, pvalue=0.02524520294814093)
cs

> 진행한 결과에서 유의확률(pvalue)이 유의수준(0.05)보다 낮으므로 귀무가설 기각.

 

> 따라서, 모집단의 중앙값은 mu가 아니다.

 

> 해석하자면 Bwt(고양이의 몸무게)의 중앙값(평균)은 2.6kg이 아니다.

 

 


 

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
 
cats_Bwt_cnt = pd.value_counts(cats['Bwt'].values, sort=False)
width=0.4
plt.bar(cats_Bwt_cnt.index, cats_Bwt_cnt.values, width)
plt.title('Bwt')
plt.xlabel('Weight')
plt.ylabel('Count')
cs

 

> 위 결과에 대해서 데이터를 읽어와 시각자료로 표현해 보았다.

 

 

 

> 그래프를 통해 통계 결과를 보여주고 있지만 개인적으로 전달력이 좋지 않다고 생각하여 직관적으로 알 수 있게 코드를 통해서 확인해 보았다.

 

 

 

 

1
2
print("Bwt 변수의 중위값은 {:.3f}kg이다." .format(cats['Bwt'].median()))
print("Bwt 변수의 평균값은 {:.3f}kg이다." .format(cats['Bwt'].mean()))
cs

> 중위값과 평균을 모두 보기위해 실행히킨 결과

 

 

 

 

1
2
Bwt 변수의 중위값은 2.700kg이다.
Bwt 변수의 평균값은 2.724kg이다.
cs

> mu로 지정했던 2.6보다 큰 값이 나오게 되었다.

 

 

 

 

> 이로써, 일표본 T-검정을 통해 도출된 결과를 직관적으로도 이해할 수 있었다.