Python에서 tukey 테스트를 수행하는 방법


일원 분산 분석은 3개 이상의 독립 그룹 평균 간에 통계적으로 유의한 차이가 있는지 여부를 확인하는 데 사용됩니다.

ANOVA 테이블의 전체 p-값이 특정 유의 수준보다 낮으면 그룹 평균 중 하나 이상이 다른 평균과 다르다고 말할 수 있는 충분한 증거가 있는 것입니다.

그러나 이는 어떤 그룹이 서로 다른지는 알려주지 않습니다. 이는 단순히 모든 그룹 평균이 동일하지는 않다는 것을 알려줍니다. 어떤 그룹이 서로 다른지 정확히 알기 위해서는 사후 테스트를 수행해야 합니다.

가장 일반적으로 사용되는 사후 테스트 중 하나는 Tukey 테스트 로, 이를 통해 familywise 오류율을 제어하면서 각 그룹의 평균 간의 쌍별 비교를 수행할 수 있습니다.

이 튜토리얼에서는 Python에서 Tukey 테스트를 수행하는 방법에 대한 단계별 예를 제공합니다.

1단계: 필요한 패키지 및 기능 로드

먼저 Python에서 필요한 패키지와 함수를 로드합니다.

 import pandas as pd
import numpy as np
from scipy. stats import f_oneway
from statsmodels. stats . multicomp import pairwise_tukeyhsd

2단계: 분산 분석 모델 적합

다음 코드는 세 그룹(A, B, C)으로 구성된 가짜 데이터 세트를 생성하고 일원 분산 분석 모델을 데이터에 피팅하여 각 그룹의 평균값이 동일한지 확인하는 방법을 보여줍니다.

 #enter data for three groups
a = [85, 86, 88, 75, 78, 94, 98, 79, 71, 80]
b = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96]
c = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81]

#perform one-way ANOVA
f_oneway(a, b, c)

F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)

ANOVA 테이블의 전체 p-값이 0.01258 임을 알 수 있습니다.

이 숫자는 0.05보다 작으므로 각 그룹의 평균값이 동일하지 않다고 말할 수 있는 충분한 증거가 있습니다.

따라서 Tukey 테스트를 수행하여 정확히 어떤 그룹 평균이 다른지 확인할 수 있습니다.

3단계: Tukey 테스트 수행

Python에서 Tukey 테스트를 수행하려면 statsmodels 라이브러리의 pairwise_tukeyhsd() 함수를 사용할 수 있습니다.

 #create DataFrame to hold data
df = pd. DataFrame ({'score': [85, 86, 88, 75, 78, 94, 98, 79, 71, 80,
                             91, 92, 93, 90, 97, 94, 82, 88, 95, 96,
                             79, 78, 88, 94, 92, 85, 83, 85, 82, 81],
                   'group': np. repeat (['a', 'b', 'c'], repeats= 10 )}) 

# perform Tukey's test
tukey = pairwise_tukeyhsd(endog=df['score'],
                          groups=df['group'],
                          alpha= 0.05 )

#display results
print (tukey)

 Multiple Comparison of Means - Tukey HSD, FWER=0.05 
==================================================== ===
group1 group2 meandiff p-adj lower upper reject
-------------------------------------------------- ---
     ab 8.4 0.0158 1.4272 15.3728 True
     ac 1.3 0.8864 -5.6728 8.2728 False
     bc -7.1 0.0453 -14.0728 -0.1272 True
-------------------------------------------------- ---

결과를 해석하는 방법은 다음과 같습니다.

  • a와 b 사이의 평균 차이에 대한 P 값: 0.0158
  • a와 c 사이의 평균 차이에 대한 P 값: 0.8864
  • b와 c 사이의 평균 차이에 대한 P 값: 0.0453

따라서 그룹 ab 의 평균과 그룹 bc 의 평균 간에는 통계적으로 유의미한 차이가 있지만, 그룹 ac 의 평균 간에는 통계적으로 유의한 차이가 없다는 결론을 내릴 수 있습니다.

추가 리소스

Python에서 일원 분산 분석을 수행하는 방법
Python에서 양방향 ANOVA를 수행하는 방법
Python에서 반복 측정 ANOVA를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다