[통계이론] >>>> https://kimmaadata.tistory.com/19
이어서 파이썬에서 활용하는 방식
분석 순서
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
귀무가설 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이 된다.
'Computer Science > 파이썬' 카테고리의 다른 글
[데이터 전처리] Pandas isin (0) | 2021.06.21 |
---|---|
[통계/python] 가설검정3 - ANOVA test (0) | 2021.06.21 |
[Python] 데이터 전처리 3 - DataFrame 슬라이스 (인덱서 loc, iloc) (0) | 2021.06.09 |
[Python] Feature Engineering 1 - DataFrame manipulation (단순 합계 column생성, string to numeric with replace def, Concat, Merge, Join) (0) | 2021.06.08 |
[Python] 데이터 전처리 2 - 중복값 확인 및 처리 (0) | 2021.06.07 |