오늘은, 빅데이터 분석기사 준비를 위한 t-test에 대해 파이썬 코드와 함께 알아보겠습니다.
마지막에 파이썬 코드 정리까지 잘 살펴보시기 바랍니다.
■ t-test란?
t-test란, 데이터의 평균 간의 차이가 우연히 발생했는지 아니면 실제로 통계적으로 유의미한 차이가 있는지를 판단하기 위해 t 분포를 사용하여 검정하는 방법입니다.
t-test를 위한 전제조건으로는, 데이이터가 정규성을 만족해야 합니다.
만약 데이터가 정규성을 만족하지 않는다면 비모수검정(윌콕슨부호순위검정, 만휘트이유검정 등)을 사용해야 합니다.
데이터가 정규성 검정 방법으로는 샤피로윌크 검정이 있으며 파이썬 코드는 다음과 같습니다.
# 데이터의 정규성 검정(샤피로윌크 검정)
from scypi import stats
stats.shapiro(data)
■ t-test의 가설
t-test의 가설은 다음과 같습니다.
- 귀무가설(H0) : 데이터의 평균 간의 차이가 없다.
- 대립가설(H1) : 데이터의 평균 간의 차이가 있다.
■ t-test 유형
t-test는 데이터에 따라 다음의 세가지 유형으로 구분됩니다.
- one sample t-test(단일표본 t검정)
- pared-samples t-test(대응표본 t검정)
- independent samples t-test( 독립표본 t-검정)
■ one sample t-test(단일표본 t검정)
하나의 집단에서 얻은 표본 평균이 특정 기준값과 통계적으로 유의한 차이가 있는지 검정하는 방법입니다.
단일표본 t-검정에는 양측검정과 단측검정이 있습니다. 파이썬 코드와 함께 살펴보겠습니다.
양측검정의 H1(대립가설) : 어떤 그룹의 평균(또는 중간값 등)이 특정한 값과 같지 않다.
# 양측검정 : 어떤 그룹의 평균(또는 중간값 등)이 특정과 같지 않다.(default)
from scipy import stats
stats.ttest_1samp(data, 특정값)
단측검정 : H1(대립가설) : 어떤 그룹의 평균(또는 중간값 등)이 특정한 값보다 크다.
# 단측검정 : 어떤 그룹의 평균(또는 중간값 등)이 특정한 값보다 크다
from scipy import stats
stats.ttest_1samp(data, 특정값, alternative="greater")
단측검정 : H1(대립가설) : 어떤 그룹의 평균(또는 중간값 등)이 특정한 값보다 작다.
# 단측검정 : 어떤 그룹의 평균(또는 중간값 등)이 특정한 값보다 작다.
from scipy import stats
stats.ttest_1samp(data, 특정값, alternative="less")
■ paired samples t-test(대응표본 t-검정 )
동일한 샘플에 대해 두번 측정한 결과(예:사전-사후 검사)의 평균 차이가 통계적으로 유의한지 검정하는 방법입니다.
(예) 약물의 효과, 마케팅 효과 등
# 사전 검사가 사후검사보다 평균이 작다면 효과가 있다고 볼 수 있습니다.
from scipy import stats
stats.ttest_rel(df['before'], df['after'], alternative='less')
# 사후 검사가 사전검사보다 평균이 크다면 효과가 있다고 볼 수 있습니다.
from scipy import stats
stats.ttest_rel(df['after'], df['before'], alternative='greater')
위 두 코드는 데이터를 어떤 순서로 전달하느냐에 따라 alternative 옵션이 달라질 뿐, 같은 코드로 볼 수 있습니다.
■ independent samples t-test(독립표본 t-검정 )
서로 독립인 두 집단의 평균 차이가 통계적으로 유의한지 검정하는 방법입니다.
(예) 남성과 여성의 시험성적, 두가지 약물의 효과성 비교
두 집단이 모두 정규성을 만족할 때 사용해야 합니다.
독립표본 t-검정은 각 집단의 분산이 동일한지 먼저 검사하고,그 결과에 따른 옵션을 설정하게 됩니다.
# 등분산 검정
from scipy import stats
stats.levene(집단A, 집단B)
# 두 집단의 분산이 같을 때
from scipy import stats
stats.ttest_ind(처리집단, 대조집단)
# 두 집단의 분산이 다를 때
from scipy import stats
stats.ttest_ind(처리집단, 대조집단, equal_var=False)
지금까지 데이터가 정규분포를 따를 때 사용하는 t-test에 대해 알아보았습니다.
파이썬 scipy의 stats 모듈의 관련 함수를 정리해보면 다음과 같습니다.
정규성 검증 | shapiro(데이터) |
등분산 검증 | levene |
단일표본 t검정 | ttest_1samp(data, 특정값) # 양측검정 ttest_1samp(data, 특정값, alternative='less') # 단측검정 ttest_1samp(data, 특정값, alternative='greater') # 단측검정 |
대응표본 t검정 | ttest_rel(df['before'], df['after'], alternative='less') ttest_rel(df['after'], df['before'], alternative='greater') |
독립표본 t검정 | ttest_ind(처리집단, 대조집단) # 분산이 같을 때 ttest_ind(처리집단, 대조집단, equal_var=False) # 분산이 다를 때 |
만약 데이터가 정규분포를 따르지 않는다면, 비모수검정을 수행해야 합니다.
대표적인 비모수 검정에는 윌콕슨부호순위 검정, 만휘트니유 검정과 같은 것이 있습니다.
다음 포스트에서는 비모수검정에 대해 알아보겠습니다.
'데이터분석' 카테고리의 다른 글
분산분석(ANOVA, ANalysis Of VAriance) (2) | 2024.06.19 |
---|---|
데이터가 정규분포를 따르지 않을 때 사용하는 비모수 검정 (1) | 2024.06.17 |
선형회귀분석 (python의 statsmodels 활용) (1) | 2024.06.14 |
회귀분석 - 상관관계 (0) | 2024.06.12 |
카이제곱 검정 > 독립성 검정, 동질성 검정 (1) | 2024.06.11 |