T-test
표본집단의 평균을 비교하고 싶을 때 선택
Sample 개수에 따라 one-sample t-test, Two sample T-test로 나뉨.
One sample T-test
1개의 샘플값들의 평균이 특정 값과 동일한지 비교.
정규화
$t =$ $\overline{X}-\mu\over{S\over{\sqrt{n}}}$
평균을 빼고 표준편차로 나눠준다! -> 주어진 데이터는 평균이 0, 표준편차가 1인 데이터로 Scaling 된다.
1 sample t test
서울시 가로수 데이터셋을 이용하였다.
서울시에는 구별로 이팝나무가 평균 400그루이다. 에 대한 검정
import pandas as pd
trees = pd.read_csv(url, sep = '\\t', skiprows = 1)
trees = trees.replace({'-':0})
trees.head(5)
# 기초 전처리
df = trees[['자치구','느티나무','왕벚나무','은행나무','이팝나무','양버즘나무']].query("자치구.str.endswith('구')", engine='python')
for col in df.columns[1:]:
df[col]=df[col].apply(lambda x : int(x.replace(',','')))
가설 검정
$H_0$: 이팝나무의 평균이 400이 맞다.
$H_1$: 이팝나무의 평균이 400이 아니다.
유의수준 $\alpha$ : 0.05
테스트 결과 p-value = 0.002로 (p값이 유의수준보다 작다) 대립가설 $H_1$ 채택.
이팝나무의 평균이 400이 아니라고 유의수준 0.05에서 말할 수 있다.
Two sample T-test
two sample 또한 표본집단의 평균을 비교한다는 점에서는 one sample과 동일하다.
다만, one sample 에서는 표본집단의 평균이 특정한 값을 비교하는것이고, two sample 에서는 표본집단 A와 다른 표본집단 B와의 평균을 비교할 때 사용.
언제활용되는지, 언제응용할수있는지, 코드를 사용할수있어야한다
1) 한 집단 평균 검정- 하나의 데이터 집단의 평균과 비교하고자 하는 관측치를 통해 차이를 검정하는 방법이다.- 데이터 집단의 평균과 거리가 멀 수록 p-value 유의수준의 값이 떨어진다.- stats.ttest_1samp() 이용
one_sample = [177.3, 182.7, 169.6, 176.3, 180.3, 179.4, 178.5, 177.2, 181.8, 176.5]
print(mean(one_sample) # 177.96
result = stats.ttest_1samp(one_sample, 175.6) # 비교집단, 관측치
print('t검정 통계량 = %.3f, pvalue = %.3f'%(result))
# t검정 통계량 = 2.296, pvalue = 0.072
2) 두 집단 평균 검정 - 두 데이터 집단간의 비교 - stats.ttest_ind(x,y) 이용
female = [63.8, 56.4, 55.2, 58.5, 64.0, 51.6, 54.6, 71.0]
male = [75.5, 83.9, 75.7, 72.5, 56.2, 73.4, 67.7, 87.9]
result = stats.ttest_ind(male, female)
print("t검정 통계량: %.3f, pvalue=%.3f"%(result))
# t검정 통계량 = 3.588, pvalue = 0.003
3) 대응 두 집단 ** - 복부 수술전 9명의 몸무게와 복부 수술후 몸무게 변화 - before 와 after의 변화가 얼마나 대응 되는지- stats.ttest_rel(x,y) 이용
baseline = [67.2, 67.4, 71.5, 77.6, 86.0, 89.1, 59.5, 81.9, 105.5]
follow_up = [62.4, 64.6, 70.4, 62.6, 80.1, 73.2, 58.2, 71.0, 101.0]
paried_sample = stats.ttest_rel(baseline, follow_up)
print('t검정 통계량 = %.3f, pvalue = %.3f'%paired_sample)
# t검정 통계량 = 3.668, pvalue = 0.006
출처 : https://m.blog.naver.com/BlogTagView.nhn?blogId=nonamed0000&pushNavigation=true&tagName=
2-sample t test
평균 느티나무 수가 왕벚나무수보다 큰가? 에 대한 가설검정을 실시
구별 평균 느티나무수와 왕벚나무수의 차이가 없다 가설검정
A : 평균 느티나무 수
B : 평균 왕벚나무 수
$H_0$: A $=$ B
$H_0$: A $\neq$ B
$\alpha$: 0.05
등분산검정 이후
p-value : 0.646
유의수준 0.05에서 귀무가설 채택
평균의 차이가 있다고 말할 수 없다.
In [ ]:df.head(5)
Out[ ]:
자치구 느티나무 왕벚나무 은행나무 이팝나무 양버즘나무
1 종로구 619 421 4072 711 1071
2 중구 460 289 3640 470 162
3 용산구 373 262 4444 198 1422
4 성동구 1975 602 1090 709 2401
5 광진구 1057 940 1247 760 2306
등분산 검정
$H_0$ : 모든 분산이 동일함
$H_1$ : 모든 분산이 동일하지 않음
F(집단간 분산 / 집단내 분산) 값이 0.628이고,
p-value가 0.432로 유의수준 0.05보다 크다. 따라서, 귀무가설을 채택, 등분산성이있다. (분산이동일함)
In [ ]:
stats.levene(df['왕벚나무'],df['느티나무'])
Out[ ]:
LeveneResult(statistic=0.628175868691159, pvalue=0.4319252158673391)
등분산성 검정 이후, 2-sample t test
In[ ]:
stats.ttest_ind(df['왕벚나무'],df['느티나무'], equal_var=True)
Out[ ]:
Ttest_indResult(statistic=-0.4629256014492562, pvalue=0.6455096880085703)
'Statistics' 카테고리의 다른 글
Covariance and Correlation 상관계수 (0) | 2021.01.27 |
---|---|
Chi-Square Test (0) | 2021.01.27 |
P-value란? (0) | 2021.01.27 |
Type of Error (0) | 2021.01.27 |
Hypothesis Test 가설검정 (0) | 2021.01.27 |