가설 설정
- 귀무가설 : 그룹 1의 평균과 그룹 2의 평균은 같다.
- 대립가설 : 그룹 1의 평균과 그룹 2의 평균은 같지 않다.
가정
- 독립성
- 정규성 : 각 그룹의 표본수가 𝑁 ≤ 30 이하일 때, 검정해야 함
- Shapiro-Wilk tests로 확인
- 분산의 동질성(등분산성)
실습
- 데이터 : toothgrowth.csv
- 기니피그 60마리의 치아 길이, 투여한 비타민 C 종류, 투여량이 저장
- len : 치아의 길이
- supp : 투여한 약제(VC: 아스코르브산, OJ: 오렌지주스)
- does : 투여량
t-test 미션
오렌지주스를 투여받은 기니피그의 치아 길이 평균이 아스코르브산을 투여받은 기니피그의 치아 길이 평균과 일치하는지 t-검정(Two Sample t-test)를 통해 확인
1. 데이터 확인
import pandas as pd
df = pd.read_csv('toothgrowth.csv')
df.head()
df.groupby('supp')['len'].agg(['mean', 'std', 'count']).reset_index()
2. 가설 설정
- 귀무가설 : 투여한 약제별로 평균 치아 길이는 같다
- 대립가설 : 투여한 약제별 평균 치아 길이는 같지 않다(차이가 있다)
3. 정규성 검증
- 두 데이터 모두 n이 30 이상이므로 skip
4. 등분산성 검정
from scipy import stats
stats.levene(df.loc[df['supp'] == "VC", 'len'], df.loc[df['supp'] == "OJ", 'len'])
>> LeveneResult(statistic=1.2135720656945064, pvalue=0.2751764616144053)
5. t-test
- 두 독립 샘플의 평균(예상) 값이 동일하다는 귀무가설에 대한 검정.
- 두 집단의 분산이 동일하다고 가정함.
from scipy import stats
t_score, p_value = stats.ttest_ind(df.loc[df['supp'] == "VC", 'len'],
df.loc[df['supp'] == "OJ", 'len'],
equal_var = True
print(round(t_score, 4), round(p_value, 2))
>>> -1.9153 0.06
- 메서드 설명 : ttest_ind(a, b, equal_var)
- a, b : 데이터 크기가 동일해야 함
- equal_var : True(independent t-test), False(Welch's t-test)
6. 결과 해석
- p-value를 먼저 확인하여 통계적 유의성 여부를 판단한 다음, 검정 통계량을 이용하여 평균 차이의 크기를 파악
- 만약 p-value가 유의수준보다 크다면, 두 그룹 간에는 통계적으로 유의미한 차이가 없다고 해석
- 이 경우, 귀무가설 채택 => 두 그룹의 평균이 유의미하게 차이 없음
- 검정 통계량의 절댓값이 클수록 두 그룹의 평균 차이가 크다
- 이 경우, t 통계량이 -1.91로, 검정 통계량의 절댓값이 비교적 작음. 이는 두 그룹 간의 평균 차이가 크지 않다는 것을 의미
728x90
'Machine Learning > Statistics' 카테고리의 다른 글
Wilcoxon rank sum test (윌콕슨 순위 합 검정) (0) | 2024.05.20 |
---|---|
[기초 통계] 분산분석(Analysis of Variance, ANOVA) (0) | 2023.08.14 |
[기초 통계] 대응표본 T-검정 (0) | 2023.08.14 |