2표본 문제에 대한 가설검정¶
- 대응표본: 두 데이터에게 서로 대응하는 각각 다른 조건으로 측정한 표본
- 예시: 동일한 피검자에게 약물 투약 전과 약물 투약 후라는 다른 조건으로 측정한 경우
- 정규성 검정을 통과(정규분포를 가정 가능) -> 대응비교 t 검정
- 정규성 검정 통과 실패 -> 윌콕슨 부호순위 검정.
- 윌콕슨 부호순위 검정: 평균이 아닌 중앙값 차이에 대한 검정
- 독립표본: 두 데이터에서 개체가 다른 데이터로 되어 있는 표본
- 예시: A조와 B조의 시험 점수 비교
- 정규성 검정을 통과(정규분포를 가정 가능) -> 독립비교 t 검정
- 정규성 검정 통과 실패 -> 만 위트니 U 검정
- 만 위트니 U 검정: 평균이 아닌 중앙값 차이에 대한 검정
In [1]:
import numpy as np
import pandas as pd
import scipy
from scipy import stats
대응비교 t검정¶
- 근력 운동의 집중력에 대한 영향
- ua: 운동 전 집중력 테스트 평균 점수
- ub: 운동 후 집중력 테스트 평균 점수
- H0: ub - ua == 0
- H1: ub - ua != 0
In [5]:
df_rel = pd.read_csv('data/ch11_training_rel.csv')
df_rel.head()
Out[5]:
전 | 후 | |
---|---|---|
0 | 59 | 41 |
1 | 52 | 63 |
2 | 55 | 68 |
3 | 61 | 59 |
4 | 59 | 84 |
In [7]:
df_rel['차'] = df_rel['후'] - df_rel['전']
df_rel.head(3)
Out[7]:
전 | 후 | 차 | |
---|---|---|---|
0 | 59 | 41 | -18 |
1 | 52 | 63 | 11 |
2 | 55 | 68 | 13 |
In [11]:
samp_rel = np.array(df_rel['차'])
t, p = stats.ttest_1samp(samp_rel, 0)
print(f'p값은 {p: .3f}')
p값은 0.040
In [14]:
t, p = stats.ttest_rel(df_rel['후'], df_rel['전']) #다른 메소드, 동일한 결과
print(f'p값은 {p: .3f}')
p값은 0.040
In [17]:
alpha = 0.05
if p >= alpha:
print('귀무가설 채택')
else:
print('귀무가설 기각')
귀무가설 기각
해석 및 보고¶
- t 통계량, p 값을 통해서 가설 검정
- 평균값의 전과 후를 시각화하여 차이를 비교
독립비교 t검정¶
- 근력 운동의 집중력에 대한 영향
- ua: A 학급의 평균 점수
- ub: B 학급의 평균 점수
- H0: ub - ua == 0
- H1: ub - ua != 0
In [18]:
df_ind = pd.read_csv('data/ch11_training_ind.csv')
df_ind.head(3)
Out[18]:
A | B | |
---|---|---|
0 | 47 | 49 |
1 | 50 | 52 |
2 | 37 | 54 |
In [25]:
alpha = 0.05
t, p = stats.ttest_ind(df_ind['A'], df_ind['B'], equal_var = True) #등분산성 동일
print(f'p값은 {p: .3f}')
if p >= alpha:
print('귀무가설 채택')
else:
print('귀무가설 기각')
p값은 0.086
귀무가설 채택
In [27]:
alpha = 0.05
t, p = stats.ttest_ind(df_ind['A'], df_ind['B'], equal_var = False) #등분산성 다름 --> 웰치의 방법
print(f'p값은 {p: .3f}')
if p >= alpha:
print('귀무가설 채택')
else:
print('귀무가설 기각')
p값은 0.087
귀무가설 채택
예제¶
- 주어진 데이터(data/toothgrowth.csv)에는 기니피그 60마리의 치아 길이, 투여한 비타민 C 종류, 투여량이 저장되어 있다. 오렌지주스를 투여받은 기니피그의 치아 길이 평균이 아스코르브산을 투여받은 기니피그의 치아 길이 평균과 일치하는지 t-검정(Two Sample t-test)를 통해 답하고자 한다. 가설은 아래와 같다.
- 가설검정
- 귀무가설 : 투여한 약제별 치아의 길이는 같다.
- 대립가설 : 투여한 약제별 치아의 길이는 같지 않다.
- 데이터의 변수
- len : 치아의 길이
- supp : 투여한 약제(VC: 아스코르브산, OJ: 오렌지주스)
- does : 투여량
- 단, 데이터의 각 변수들은 정규분포를 만족한다. (등분산성 검정 진행하세요~)
- 문제 1: 표본평균 $\overline{X_{OJ}}$, $\overline{X_{VC}}$를 구하시오.
- 문제 2: 위의 가설을 검정하기 위한 검정통계량을 구하시오. (반올림하여 소숫점 둘째 자리까지 계산)
- 문제 3: 위의 통계량에 대한 p-값을 구하고 (반올림하여 소숫점 넷째 자리까지 계산), 유의수준 0.05하에서 가설검정의 결과를 채택/기각 중 하나로 선택하시오.
- p-value에 값에 따른 결괏값을 조건문(if-else)으로 구하세요.
In [28]:
import pandas as pd
df = pd.read_csv("data/toothgrowth.csv")
df.head()
Out[28]:
len | supp | dose | |
---|---|---|---|
0 | 4.2 | VC | 0.5 |
1 | 11.5 | VC | 0.5 |
2 | 7.3 | VC | 0.5 |
3 | 5.8 | VC | 0.5 |
4 | 6.4 | VC | 0.5 |
등분산성 검정¶
- 독립표본 T-검정은 정규성 검정 뿐만 아니라, 두 그룹이 등분산성을 띠는지 확인하는 작업 필요
- Levene 검정을 사용한 등분산성 검정이 선행되어야 함
- stats.levene() 함수 활용. 라이브러리 링크 : https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.levene.html
- 가설설정
- 귀무가설 :
- 대립가설 :
- pvalue 값 :
In [43]:
#귀무가설: 등분산성을 충족시킨다.
#대립가설: 등분산성을 충족시키지 못한다.
vc_sample = df.loc[df['supp'] == 'VC', 'len']
oj_sample = df.loc[df['supp'] == 'OJ', 'len']
levene = stats.levene(vc_sample, oj_sample) #LeveneResult(statistic=1.2135720656945064, pvalue=0.2751764616144052)
print(f'pvalue 값: {round(levene[1], 4)}')
if levene[1] >= 0.05:
print('채택')
else:
print('기각')
pvalue 값: 0.2752
채택
문제 1¶
- 표본평균 $\overline{X_{OJ}}$, $\overline{X_{VC}}$를 구하시오.
In [44]:
oj_mean = oj_sample.mean()
vc_mean = vc_sample.mean()
print(round(oj_mean, 2), round(vc_mean, 2))
20.66 16.96
문제 2¶
- 위의 가설을 검정하기 위한 검정통계량을 구하시오. (반올림하여 소숫점 둘째 자리까지 계산)
In [45]:
t, p = stats.ttest_ind(vc_sample, oj_sample)
round(t, 2)
Out[45]:
-1.92
문제 3.¶
- 위의 통계량에 대한 p-값을 구하고 (반올림하여 소숫점 넷째 자리까지 계산), 유의수준 0.05하에서 가설검정의 결과를 채택/기각 중 하나로 선택하시오.
- p-value에 값에 따른 결괏값을 조건문(if-else)으로 구하세요.
In [46]:
print(round(p, 4))
if p >= 0.05:
print('채택')
else:
print('기각')
0.0604
채택
'데이터분석' 카테고리의 다른 글
[selenium] 동적 웹크롤링 루틴 (0) | 2024.02.17 |
---|---|
[통계분석] 다중회귀분석(예제 위주) (0) | 2024.01.19 |
[통계분석] 단순선형회귀분석, 카이제곱검정 (0) | 2024.01.19 |
[통계분석] 정규성 검정, 가설검정의 기본, 단일표본 가설검정 (0) | 2024.01.18 |
[통계분석] 데이터 분석 연습하기 (0) | 2024.01.17 |