빅데이터분석기사를 준비하면서, 새로워진 작업 3 유형의 t-test를 연습해보고자하였다.
작업 3유형을 공부한다면, 아래 데이터와 문제를 활용해서 한번 연습해보는 것을 추천한다.
기사를 공부하는 이들에게 도움이 되고자 작성한다. 아래는 예제와 풀이이다.
데이터 다운로드
문제
주어진 데이터(data/blood_pressure.csv)에 고혈압 환자 120명의 치료 전후의 혈압이 저장되어 있다.
해당 치료가 효과가 있는지 (즉, 치료 후의 혈압이 감소했는지) 쌍체표본 t-검정(paried t-test)를 통해 답하고자 한다.
가설은 아래와 같다.
Ud (치료 후 혈압 – 치료 전 혈압)의 평균
H0 : Ud >=0
H1 : Ud < 0
bp_before : 치료전 혈압
bp_after : 치료 후 혈압
1) Ud의 표본 평균을 입력하시오. (반올림하여 소수점 둘째자리까지 계산)
2) 위의 가설을 검정하기 위한 검정통계량을 입력하시오. (반올림하여 소수 넷째자리까지 계산)
3) 위의 통계량에 대한 p-값을 구하여 입력하시오.(반올림하여 소수 넷째자리까지 계산)
4) 유의수준 0.05 하에서 가설검정의 결과를 (채택/기각) 중 하나를 선택하여 입력하시오.
풀이 방향
0) 귀무가설에서 확인해야할 점을 문제에 표시함
1) 가설 검정이에서 쌍체 표본 t-검정이 나오면 scipy.stats 내에있는 ttest_rel 함수로 풀수 있음
2) 귀무가설의 부호 방향을 확인할 것 : Ud가 0 이상이므로 좌측 검정을 실시해야함, 귀무가설의 부호로부터 검정방향을 확인할 수 있음, alternative='less'
3) 데이터 입력 순서 : 귀무가설 Ud >=0 이라는 것은 bp_after >= be_before 를 검정하는 것과 동일함
ttest_rel(bp_after,bp_before) 좌항부터 순차적으로 넣어줄 것
코드
import pandas as pd
import numpy as np
import scipy.stats as stats
df = pd.read_csv('data/blood_pressure.csv', index_col = 0)
# 데이터 정보 확인
print(df.info())
# 1. Ud 표본 평균 입력
d = df['bp_after']-df['bp_before']
ud = d.mean(axis=0)
ud = np.round(ud,2)
print(f"1) Ud의 표본 평균 : {ud}")
# 2. 검정통계량 계산
## 확인 필수! 귀무가설을 기준으로 결정하면됨, 귀무가설 부등호가 이상인 경우 좌측 검정
# alternative 'less' : 좌측검정
# alternative 'greatest' :우측검정
# alternative 'two-sided' : 양쪽검정
## 3. 쌍측 t-검정 : 두 집단이 변화하였는지
tstat, pval = stats.ttest_rel(df['bp_after'],df['bp_before'],alternative='less')
# 만약에 오류가 날 경우, 받아오는 변수 값이 4개인지 확인해보자. scipy 버전에 따라 상이함
# tstat, pval, _, _ = stats.ttest_rel(df['bp_after'],df['bp_before'],alternative='less')
tstat = np.round(tstat,4)
print(f"2) 검정통계량 : {tstat}")
pval = np.round(pval,4)
print(f"3) P-val : {pval}")
## 4. 가설검정
alpha = 0.05 #유의수준
if pval >=alpha :
print("4) H0 Accepted - 귀무가설 채택")
else :
print("4) H0 Reject - 귀무가설 기각")
답안)
1) Ud의 표본 평균 : -5.09
2) 검정통계량 : -3.3372
3) P-val : 0.0006
H0 Reject - 귀무가설 기각
'ComputerScience > 빅데이터분석기사' 카테고리의 다른 글
[빅데이터분석기사] 정량적 데이터 vs 정성적 데이터 (0) | 2022.01.24 |
---|