본문 바로가기
데이터분석

데이터가 정규분포를 따를 때 사용하는 t-test

by 데이터데이트 2024. 6. 17.
728x90
반응형

오늘은, 빅데이터 분석기사 준비를 위한 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) # 분산이 다를 때

 

만약 데이터가 정규분포를 따르지 않는다면, 비모수검정을 수행해야 합니다.

대표적인 비모수 검정에는 윌콕슨부호순위 검정, 만휘트니유 검정과 같은 것이 있습니다.

다음 포스트에서는 비모수검정에 대해 알아보겠습니다.

반응형