본문 바로가기

Computer Science/파이썬

[Python] 가설검정1 - Student T-test

[통계이론] >>>> https://kimmaadata.tistory.com/19

 

[통계] 가설검정1 - Student T-test (ft. z-test)

Student T-test 목적: 두개의 집단이 통계적으로 같은지 다른지 비교하기 위해 사용 두집단의 평균값의 차이가 표준편차보다 현저히 작으면 이 차이는 우연히 밸생했다라고 결론, 반대로 두집단의

kimmaadata.tistory.com

이어서 파이썬에서 활용하는 방식

분석 순서 
1)두 집단의 분산이 같은지 검정한다 (var.test())
   : 데이터정규성 확인(python normal test)
2)분산이 다르면 Welch의 t-test를 적용한다 (t.test())
3)분산이 같으면 pooled variance를 이용한 t-test를 적용한다 (var.equal=TRUE)

정규성 검사 (표본이 대략 30개 이상이면 안해도된 (중심극한정리)

from scipy.stats import normaltest
import numpy as np

sample = np.random.poisson(5, 1000) # normal 분포가 아님
normaltest(sample)

NormaltestResult(statistic=39.909258134680755, pvalue=2.1568240007239498e-09)

sample2 = np.random.normal(size = 1000) # normal 분포
normaltest(sample2)

NormaltestResult(statistic=2.527616693057946, pvalue=0.28257582805231596)

 

P-value

관찰된 데이터가 귀무가설과 양립하는 정도를 0~1 사이의 수치로 표현한 것.
p-value값이 낮다는 것은, 귀무가설이 틀렸을 확률이 높다.

1) pvalue < 0.01 
: 귀무가설이 옳을 확률이 1%이하 -> 틀렸다 (깐깐한 기준)
2) pvalue < 0.05 (5%)
: 귀무가설이 옳을 확률이 5%이하 -> 틀렸다 (일반적인 기준)
2.5) 0.05 ~ pvalue ~ 0.1 사이인 경우: (애매함)
실험을 다시한다. / 데이터를 다시 뽑는다. / 샘플링을 다시한다기존의 경험 / 인사이트를 바탕으로 가설에 대한 결론을 내린다.
3) pvalue > 0.1 (10%)
: 귀무가설이 옳을 확률이 10%이상 -> 귀무가설이 맞다 ~ 틀리지 않았을것이다 사이

 

T-test 

1. OneSample t-test 

 

scipy.stats.ttest_1samp — SciPy v1.6.3 Reference Guide

Expected value in null hypothesis. If array_like, then it must have the same shape as a excluding the axis dimension.

docs.scipy.org

귀무가설 p= 0.5 1sample t-test 진행

from scipy import stats

stats.ttest_1samp(df, .5) # ttest_1samp 함수의 파라미터 1) Sample 데이터, 2) 가설 검정하려는 mean값
Ttest_1sampResult(statistic=0.5690174909554405, pvalue=0.5694721717152109)

p-value가 유의수준(1-Confidence)보다 낮은 경우, 귀무가설을 기각하고 대안 가설을 채택함

 

2. Two Sample T-test

from scipy import stats

stats.ttest_ind(df1, df2)

# 정규성만족, 분산이 같다면 var_equal = True(Student's test)
# 정규성만족, 분산 다르다면 var_equal = False(Welch's test)
Ttest_indResult(statistic=-0.5733615498088787, pvalue=0.5665845925197331)

 

p-value가 유의수준(1-Confidence)보다 낮은 경우, 귀무가설을 기각하고 대안 가설을 채택함

# paired 데이터

stats.ttest_rel()

# one side two sample t-test
stats.ttest_ind(data1, data2, alternative='greater') #two-side, less도 사용가능

Confidence (신뢰도)

신뢰도를 가설 판단기준으로 볼 수 있다.

95% 혹은 99%의 신뢰구간이다 == 귀무가설 판단의 기준인 유의수준(1-Confidence)이 p-value 0.05/ p-value 0.01이 된다.