일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 부트캠프
- 파이썬
- AI부트캠프
- 주성분분석
- 빅데이터
- 로지스틱회귀분석
- 기계학습
- 캐글
- 컨설팅펌
- K-Digital Training
- BCG
- 컴퓨터공학
- 선형대수학
- Ai
- 디지털트레이닝
- 비전공자
- 데이터시각화
- 다중회귀분석
- 코드스테이츠
- 데이터사이언스
- PCA
- 코랩
- 웹스크래핑
- 컨설팅
- 인공지능
- 맥킨지
- t-test
- RA
- 국비지원교육
- 웜업
- Today
- Total
94년생 스피노자
[코드 블록] t 검정 (t-test) 본문
t 검정은 샘플 값들의 평균을 기준으로 집단을 평가한다.
종류로는 일원 t 검정(one sample t-test)와 이원 t 검정(two samples t-test)가 있다.
일원 t 검정은 하나의 샘플 집단이 특정 평균값을 갖고있는지 판별한다.
이원 t 검정은 두개의 샘플 집단의 평균값을 서로 비교한다.
0. t-test를 활용하기 위한 조건
t-test는 분명 강력한 도구다.
하지만 아래 3가지 조건을 만족해야 사용가능하다.
* 독립성
t-test에서 비교하는 자료는 서로 독립적이어야 한다.
특정 약을 복용하기 전의 환자와 복용한 후의 환자는 독립적이지 않다.
이러한 자료는 서로 종속적이기 때문에 t-test가 불가능하다.
* 정규성
t-test에 쓰일 샘플 값들은 정규분포의 형태여야 한다.
다른 분포의 형태일 경우 t-test가 불가능하다.
파이썬에서 다음 코드를 활용하면 정규성을 검증할 수 있다.
from scipy.stats import normaltest
import numpy as np
normaltest(sample)
<결과 해석>
결과값으로 pvalue가 0.05보다 작게 나오면 sample은 normal 분포가 아니다.
반대로 pvalue가 0.05보다 크게 나오면 sample은 정규성을 지닌 것으로 볼 수 있다.
* 등분산성
등분산성은 이원 t 검정을 할 때 필요하다.
t-test에 쓰일 샘플 값들의 분산은 서로 같아야 한다.
서로 다른 샘플의 분산이 다를 경우 t-test가 불가능하다.
파이썬에서 다음 코드를 활용하면 등분산성을 검증할 수 있다.
from scipy import stats
lresult = stats.levene(sample1, sample2)
print('F-value : %.3f \np-value : %.3f' % (lresult))
<결과 해석>
결과값으로 pvalue가 0.05보다 작게 나오면 샘플들은 분포가 다르다는 의미다.
다행히도 등분산성은 보장되지 않더라도 t-test가 가능하다.
분산이 서로 다를 경우 자유도를 수정한 독립표본 t-test를 수행하면 된다.
1. t-test를 위한 코드
앞서 말한 것처럼 t-test는 일원 t 검정과 이원 t 검정이 있다.
i) 일원 t 검정 (One sample t-test)
일원 t 검정은 샘플 값들의 평균이 특정값과 유사한지 판별해준다.
주로 검증하려는 특정한 수치가 있을 때 사용한다.
예를 들어 대한민국 남성들의 평균 키가 175cm라는 것을 검증할 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
male_height = height.Male
result = stats.ttest_1samp(male_height, 175)
print('t statistic : %.3f \np-value : %.3f' % (result))
<결과 해석>
결과를 저장한 값에는 첫째로 t 값이, 그리고 둘째로 p 값이 저장돼있다.
p 값이 0.05라면 신뢰수준 95%하에 대한민국 남성들의 평균 키가 175cm라는 가설을 기각할 수 있다.
ii) 이원 t 검정 (Two samples t-test)
이원 t 검정은 두 샘플 값들의 평균이 서로 비슷한지 보기 위해 쓴다.
예를 들어 한국 남성들의 평균 키가 일본 남성들의 평균 키와 차이가 없는지 알 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
# 등분산성을 충족하는 경우
result = stats.ttest_ind(korea_male.Height, japan_male.Height)
# 등분산성을 충족하지 못하는 경우
result = stats.ttest_ind(korea_male.Height, japan_male.Height, equal_var=False)
샘플 값들의 등분산성에 따라 쓰는 코드가 달라진다.
앞서 소개했던 등분산성 검정을 먼저 수행하는 것을 잊지말자.
<결과 해석>
p 값이 0.05라면 신뢰수준 95%하에 한국 남성과 일본 남성의 평균 키가 같다는 가설을 기각할 수 있다.
iii) 쌍체표본 t 검정 (Paired t-test)
실은 t 검정이 한 종류 더 있다.
쌍체표본 t 검정은 t-test를 위한 조건 중 독립성에 어긋나는 자료를 다룬다.
아까 예를 들은 것처럼 특정 약을 복용하기 전의 환자와 복용 후의 환자를 다룰 수 있다.
이를 위한 코드는 아래와 같다.
from scipy import stats
result = stats.ttest_rel(after_med, before_med)
print('t statistic : %.3f \np-value : %.3f' % (result))
<결과 해석>
p 값이 0.05라면 신뢰수준 95%하에 약 복용 전과 복용 후에 차이가 없다는 가설을 기각할 수 있다.
모두 행복하길
-끝-
'철기시대 석공 벗어나기 > 코딩 조각' 카테고리의 다른 글
[코드 블록] 주성분 분석 (Principal Component Analysis) (0) | 2021.05.22 |
---|---|
[코드 블록] ANOVA (Analysis of Variance) (0) | 2021.05.15 |
[코드 블록] Plotly으로 그래프 그리기 (0) | 2021.05.10 |
[코드 블록] 캡챠 우회해서 웹 스크래핑/ 크롤링하기 (0) | 2021.05.09 |
[코드 블록] Matplotlib & Seaborn 한글표기 (0) | 2021.05.08 |