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

+ Recent posts