05단계 · 3유형 — 검정과 해석
가설·유의수준·p-value
귀무가설과 대립가설을 세우고 p-value 를 유의수준과 비교해 결론을 문장으로 옮긴다.
먼저 알아볼게요
코드로 이동 ↓귀무가설(H0) 은 "차이가 없다 · 효과가 없다 · 관련이 없다" 는 쪽이다. 대립가설(H1) 은 우리가 보이고 싶은 "차이가 있다" 쪽이다. 검정은 언제나 귀무가설을 기준으로 계산한다.
유의수준(α) 은 검정 전에 정해 두는 기준선이고 보통 0.05 다. 결과를 보고 나서 기준을 바꾸면 그건 검정이 아니다.
p-value 는 "귀무가설이 참이라고 할 때, 지금 본 것만큼 또는 그보다 극단적인 결과가 나올 확률" 이다. scipy 문서의 표현도 같다.
p < α 면 귀무가설을 기각한다. p >= α 면 기각하지 못한다.
"귀무가설을 채택한다" 고 쓰면 안 된다. 기각하지 못한 것은 "차이가 없다는 증거를 찾았다" 가 아니라 "차이가 있다고 할 만한 증거가 부족하다" 일 뿐이다. 아래 과제는 정확히 그 경우다 — 평균이 200 과 다르다고 말할 근거가 부족한 상태이지, 200 이라는 것이 증명된 것이 아니다.
이렇게 써요
from scipy import stats
r = stats.ttest_1samp([5.1, 4.9, 5.0, 5.2, 4.8], 5.0)
print(round(float(r.statistic), 4))
print(round(float(r.pvalue), 4))기억할 한 가지
기각하지 못한 것은 "차이가 없다" 가 아니라 "증거가 부족하다" 다. 귀무가설은 채택하지 않는다.
직접 해보기
health.csv 의 콜레스테롤 평균이 200 과 다른지 일표본 t검정으로 확인하세요. ① 검정통계량(소수 4) ② p-value(소수 4) ③ p < 0.05 인지 ④ 결론 문장(귀무가설을 기각한다 또는 귀무가설을 기각하지 못한다)을 출력하세요.
제공 파일 1개 · 내용 보기
파일은 준비되어 있어요. 코드에서 이름으로 불러오세요.
health.csv
성별,나이,키,몸무게,콜레스테롤,식단,운동,진단 여,27,167,79,203.3,C,예,0 남,73,176,77,235.1,A,아니오,0 남,74,168,57,229.0,B,아니오,1 여,50,159,60,251.0,C,아니오,0 여,71,161,46,201.6,C,예,0 남,70,182,82,189.1,C,예,0 여,47,161,59,240.0,C,아니오,1 남,52,179,73,197.5,A,예,0 남,57,176,74,207.0,A,예,0 남,65,167,51,185.8,A,예,0 여,25,165,49,202.1,B,아니오,0 남,59,169,59,205.3,B,아니오,0 여,26,164,58,201.2,B,아니오,0 남,38,166,65,193.3,C,아니오,0 남,58,170,60,199.0,A,아니오,1 여,55,160,66,191.8,C,아니오,0 여,37,160,69,234.6,C,아니오,0 여,50,161,65,204.2,B,예,0 남,59,172,50,228.9,C,예,0 남,64,168,61,196.7,A,아니오,1 남,60,178,73,208.7,B,예,0 남,38,168,71,183.0,A,예,0 여,42,159,53,204.0,A,예,0 여,45,164,55,183.2,A,예,0 여,37,157,72,212.6,B,아니오,0 남,38,171,66,200.9,A,아니오,0 남,25,164,55,213.1,C,아니오,0 여,37,166,64,178.7,A,아니오,0 남,37,173,79,197.4,C,예,0 남,42,177,75,262.3,C,아니오,1 남,49,173,64,161.1,C,예,0 여,39,158,64,187.9,A,아니오,0 남,58,171,68,225.6,A,아니오,0 여,29,167,71,176.7,A,예,0 남,46,179,71,222.7,B,아니오,0 여,39,161,48,158.9,C,예,0 남,60,168,60,175.7,B,아니오,0 여,42,169,58,181.6,B,예,0 여,49,155,50,221.8,C,예,0 여,60,156,51,252.5,A,아니오,0 남,29,174,74,213.5,C,아니오,0 여,34,164,57,172.4,A,아니오,0 여,69,155,40,188.8,A,아니오,0 여,59,165,56,211.3,B,아니오,0 여,71,161,46,188.6,A,아니오,1 남,25,174,66,168.0,A,예,0 여,35,147,31,180.7,C,예,0 여,73,155,54,211.2,C,아니오,0 여,48,159,63,191.7,A,예,0 남,30,167,69,166.0,A,아니오,0 여,36,168,58,158.9,A,아니오,0 남,25,162,68,202.5,B,예,0 여,52,166,60,155.4,C,예,0 여,51,161,62,196.7,A,예,0 여,33,163,57,169.2,A,아니오,0 남,52,177,68,217.5,A,아니오,0 남,51,172,65,204.7,C,예,0 남,38,172,79,201.2,B,예,0 남,67,181,79,238.9,C,아니오,0 남,50,170,62,186.9,C,예,0 여,55,155,67,214.7,B,예,0 여,38,166,63,188.7,B,예,0 남,35,177,80,149.7,A,예,0 여,73,167,60,220.7,C,예,0 남,37,173,57,157.1,B,아니오,0 여,42,157,51,190.2,A,예,0 여,60,160,61,180.4,A,아니오,0 남,49,176,71,208.3,C,예,0 남,27,168,64,198.4,B,예,0 여,47,165,53,183.3,A,예,0 여,38,147,37,210.2,B,예,0 남,34,171,63,207.8,C,예,0 여,74,166,59,190.5,C,예,1 여,61,160,52,190.7,C,아니오,0 여,57,162,70,195.5,C,아니오,0 여,37,166,63,164.6,A,예,0 여,32,153,53,202.9,B,아니오,0 남,74,169,66,219.7,C,아니오,0 남,62,178,67,207.1,A,아니오,0 남,56,175,75,177.0,A,아니오,0 남,46,170,57,139.4,B,예,0 남,32,180,84,191.4,B,아니오,0 남,26,172,61,177.9,A,예,0 남,53,171,76,195.3,A,예,0 남,51,167,53,188.8,C,예,0 남,39,178,75,204.0,A,예,0 여,73,158,53,189.1,B,아니오,0 남,59,171,53,193.8,C,예,0 남,46,167,77,200.4,C,예,0 여,42,159,63,205.1,C,아니오,0 남,53,175,62,138.0,C,예,0 남,71,176,66,210.3,B,예,1 남,35,175,73,196.1,A,아니오,0 남,32,158,48,199.7,B,예,0 여,73,155,61,182.1,B,예,0 남,69,180,72,192.8,B,예,0 남,56,161,59,168.3,A,예,0 남,57,190,75,193.9,C,예,0 여,63,162,56,192.5,B,아니오,0 남,74,175,76,211.0,A,예,0 남,39,178,89,210.9,A,아니오,0 여,67,160,55,202.4,C,예,0 남,64,172,55,206.3,B,예,0 여,52,165,75,209.5,B,아니오,0 남,66,172,70,215.0,C,아니오,0 남,67,177,84,187.1,A,예,0 남,39,183,75,180.3,C,예,0 여,71,162,61,199.0,B,예,0 남,56,168,72,210.1,A,아니오,0 여,25,158,42,172.7,C,예,0 여,64,147,50,177.1,B,예,0 남,26,180,74,201.2,A,아니오,0 여,36,162,55,215.4,C,아니오,0 남,70,175,73,212.7,B,아니오,1 여,73,164,53,197.3,A,예,0 여,31,154,45,192.5,B,아니오,0 여,29,159,51,147.9,A,아니오,0 여,66,162,46,202.9,C,아니오,0 남,51,181,95,179.2,A,예,0 남,50,174,59,181.2,A,아니오,0 남,50,160,65,187.8,B,예,0 여,72,175,65,216.2,A,아니오,1 남,69,171,68,192.1,B,아니오,0 남,52,177,78,185.5,C,예,0 남,70,169,83,206.2,A,예,0 여,37,159,50,177.4,C,예,0 남,67,162,60,235.3,C,아니오,0 여,42,158,56,224.3,B,예,0 여,59,154,36,214.2,B,예,0 남,30,170,68,163.8,B,예,0 남,73,168,61,218.5,C,예,0 남,57,157,57,191.5,B,예,0 남,52,166,59,225.2,C,아니오,0 여,26,159,63,181.1,A,아니오,1 남,35,177,75,200.6,A,아니오,0 여,29,155,41,132.1,A,예,0 여,60,162,64,244.1,C,예,0 여,55,159,55,222.1,B,아니오,1 남,62,181,67,214.9,C,예,0 남,64,171,64,215.4,B,아니오,0 남,56,176,72,227.0,C,아니오,0 여,36,163,46,183.5,C,아니오,0 여,48,155,46,201.9,C,예,0 여,67,163,44,156.1,A,예,0 남,27,176,71,167.5,A,예,0 여,64,158,48,198.1,C,아니오,0 남,46,167,66,170.4,B,아니오,0 여,39,159,65,208.6,C,아니오,0 남,52,167,55,191.7,B,예,0 여,45,155,60,205.7,B,예,0
내 코드 Python
Python 준비 중… 처음 한 번만 내려받아요
들여쓰기: Tab · 편집기에서 나가기: Esc 다음 Tab
실행 결과
실행하면 코드가 출력한 내용이 여기에 나타나요.
막혔을 때
풀이와 비교하기
내 코드와 한 줄씩 비교해 보세요. 풀이를 보는 것만으로 완료되지는 않아요.
import pandas as pd
from scipy import stats
df = pd.read_csv("health.csv")
chol = df["콜레스테롤"]
alpha = 0.05
result = stats.ttest_1samp(chol, 200)
print(round(float(result.statistic), 4))
print(round(float(result.pvalue), 4))
print(bool(result.pvalue < alpha))
print("귀무가설을 기각한다" if result.pvalue < alpha else "귀무가설을 기각하지 못한다")