[python 통계분석] t-test 검정

2023. 6. 18. 14:51·🥇 certification logbook
728x90
반응형

Reference
- <파이썬 한권으로 끝내기>, 데싸라면▪빨간색 물고기▪자투리코드, 시대고시기획 시대교육

 

SciPy 패키지를 이용한 통계분석

https://docs.scipy.org/doc/scipy/reference/stats.html

 

Statistical functions (scipy.stats) — SciPy v1.10.1 Manual

Statistical functions (scipy.stats) This module contains a large number of probability distributions, summary and frequency statistics, correlation functions and statistical tests, masked statistics, kernel density estimation, quasi-Monte Carlo functionali

docs.scipy.org

 

t-test 검정

검정통게량이 귀무가설 하에서 t-분포를 따르는 통계적 가설 검정 방법

어떤 특정 집단의 평균의 값을 추정하거나 차이를 검정할 때 사용할 수 있다.

 

  • 종속변수 : 연속형
  • 독립변수 : 범주형

DataSet

http://incredible.ai/assets/posts/Linear-Regression/cats.csv

 

1. 일표본 T검정 (one sample t-test)

cats 데이터에서 고양이들의 평균몸무게가 2.6kg인지 아닌지 통계적 검정을 수행하고, 결과를 해석해보자
양측검정, 유의수준 : 0.05

 

귀무가설 : 모평균의 값은 2.6kg이다

대립가설 : 모평균의 값은 2.6kg가 아니다.

 
In [ ]:
import pandas as pd
cats=pd.read_csv('data/cats.csv')
cats
 
Out[ ]:
  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
... ... ... ...
139 M 3.7 11.0
140 M 3.8 14.8
141 M 3.8 16.8
142 M 3.9 14.4
143 M 3.9 20.5

144 rows × 3 columns

 
In [ ]:
import scipy.stats as stats
from scipy.stats import shapiro
mu = 2.6 # 고양이들의 평균 몸무게가 2.6kg인지 아닌지
# shapiro : 데이터 정규성 검정
shapiro(cats['Bwt'])
 
Out[ ]:
ShapiroResult(statistic=0.9518786668777466, pvalue=6.730228778906167e-05)
 

pvalue가 유의수준(0.05)보다 작으므로, '데이터가 정규분포를 따른다'는 귀무가설 기각

  • 정규분포를 따르지 않는다 : wilcoxon
  • 정규분포를 따른다 : ttest_1samp
 
In [ ]:
# 정규분포를 따르지 않는다.
stats.wilcoxon(cats.Bwt - mu, alternative='two-sided')
# 정규분포를 따른다
# stats.ttest_1samp(cats.Bwt, popmean=mu)
 
Out[ ]:
WilcoxonResult(statistic=3573.0, pvalue=0.025245202948140935)
 

pvalue는 유의수준(0.05)보다 작으므로, "고양이의 몸무게가 2.6kg이다"라는 귀무가설을 기각할 수 있음

 
 

2. 대응표본 T검정 (paired sample t-test)

10명의 환자 대상 수면영양제 복용 전과 후의 수면시간을 측정하였다.
영양제의 효과가 있는지를 판단해보자.
유의수준 = 0.05

 

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

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

 
In [ ]:
# 데이터 불러오기 및 확인 
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
 
Out[ ]:
  before after
0 7 8
1 3 4
2 4 5
3 5 6
4 2 2
5 1 3
6 6 6
7 6 8
8 5 6
9 4 5
 
In [ ]:
stats.ttest_rel(data['after'],data['before'],alternative='greater')
 
Out[ ]:
TtestResult(statistic=4.743416490252569, pvalue=0.0005269356285082765, df=9)
 
 

pvalue 값이 유의수준(0.05)보다 작으므로 귀무가설을 기각

 
 

3. 독립표본 T검정 (Independent sample t-test)

cats 데이터가 정규성을 따른다는 가정 하에 수컷인 고양이와 암컷인 고양이의 몸무게 차이를 비교하라
 
 

귀무가설 : 수컷과 암컷 고양이의 몸무게 차이는 없다

대립가설 : 수컷과 암컷 고양이의 몸무게 차이는 있다.

 
In [ ]:
import pandas as pd
cats=pd.read_csv('./data/cats.csv')
female = cats.loc[cats.Sex == 'F', 'Bwt']
male = cats.loc[cats.Sex == 'M', 'Bwt']

# 등분산성 검정
stats.levene(female, male)
 
Out[ ]:
LeveneResult(statistic=19.43101190877999, pvalue=2.043528525518961e-05)
 
 

성별에 따른 몸무게가 등분산성을 만족하지 않으므로, equal_val=False로 독립 t-test를 진행

 
In [ ]:
stats.ttest_ind(female, male, equal_var=False)
 
Out[ ]:
Ttest_indResult(statistic=-8.70948849909559, pvalue=8.831034455859356e-15)
 
 

pvalue가 유의수준(0.05)보다 작으므로 귀무가설을 기각

즉, 수컷과 암컷 고양이의 몸무게 차이는 존재한다.

 

4. 정리

데이터 정규성 검정 : shapiro
등분산성 검정 : levene
일표본 t-검정
  정규분포를 따른다 : ttest_1samp
  정규분포를 따르지 않는다 : wilcoxon
대응표본 t-검정 : ttest_rel
독립표본 t-검정 : ttest_ind (levene 했을 때 등분산성 만족하지 않는다면 equal_var를 False로 설정)

 

728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[Coursera/IBM] IBM AI Engineering PC 및 Machine Learning with Python 코스 소개  (1) 2025.04.30
빅데이터분석기사 (빅분기) 실기 총 정리 / 시험 시작 전 확인  (0) 2023.12.19
[ADsP] 군집분석  (0) 2023.06.18
[python 통계분석] 교차분석(카이제곱 검정)  (0) 2023.06.18
[python 데이터 전처리] 데이터 스케일링 (data scaling)  (0) 2023.06.15
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 07_Merge , Concat  (0) 2023.06.15
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 06_Pivot  (0) 2023.06.15
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 05_Time_Series  (0) 2023.06.13
'🥇 certification logbook' 카테고리의 다른 글
  • [ADsP] 군집분석
  • [python 통계분석] 교차분석(카이제곱 검정)
  • [python 데이터 전처리] 데이터 스케일링 (data scaling)
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 07_Merge , Concat
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (217)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (67)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    IBM
    Coursera
    certificate
    민법
    법학과
    머신러닝
    ADsP
    기본권의기초이론
    자격증
    방통대
    deeplearning
    datascience
    인공지능 입문
    데이터사이언스 입문
    온라인 강의 추천
    근로기준법
    형법
    빅데이터분석기사
    데이터분석준전문가
    Python
  • hELLO· Designed By정상우.v4.10.3
이소야
[python 통계분석] t-test 검정
상단으로

티스토리툴바