Python의 welch의 anova(단계별)
Welch의 분산 분석은 등분산 가정이 충족되지 않는 경우 일반적인 일원 분산 분석에 대한 대안입니다.
다음 단계별 예에서는 Python에서 Welch의 ANOVA를 수행하는 방법을 보여줍니다.
1단계: 데이터 생성
세 가지 학습 방법이 서로 다른 시험 결과를 가져오는지 확인하기 위해 교수는 무작위로 10명의 학생에게 각 기술(기술 A, B 또는 C)을 일주일 동안 사용하도록 할당한 다음 각 학생에게 동일한 난이도의 테스트를 제공합니다.
30명의 학생의 시험 결과는 다음과 같습니다.
A = [64, 66, 68, 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]
2단계: 등차 테스트
다음으로 Bartlett 테스트를 수행하여 각 그룹 간의 분산이 동일한지 확인할 수 있습니다.
검정 통계량의 p-값이 특정 유의 수준(예: α = 0.05)보다 낮으면 귀무 가설을 기각하고 모든 그룹의 분산이 동일하지 않다는 결론을 내릴 수 있습니다.
다음 코드를 사용하여 Python에서 Bartlett 테스트를 수행할 수 있습니다.
import scipy. stats as stats
#perform Bartlett's test
stats. bartlett (A, B, C)
BartlettResult(statistic=9.039674395, pvalue=0.010890796567)
Bartlett 검정의 p-값( .01089 )은 α = .05보다 작습니다. 이는 각 그룹이 동일한 분산을 갖는다는 귀무가설을 기각할 수 있음을 의미합니다.
따라서 등분산 가정이 위반되며 Welch의 ANOVA를 진행할 수 있습니다.
3단계: Welch의 분산 분석 수행
Python에서 Welch의 ANOVA를 수행하려면 Penguin 패키지의 welch_anova() 함수를 사용할 수 있습니다.
먼저 Penguin을 설치해야 합니다.
pip install Penguin
그런 다음 다음 코드를 사용하여 Welch의 ANOVA를 수행할 수 있습니다.
import penguin as pg import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' score ': [64, 66, 68, 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 Welch's ANOVA pg. welch_anova (dv=' score ', between=' group ', data=df) Source ddof1 ddof2 F p-unc np2 0 group 2 16.651295 9.717185 0.001598 0.399286
ANOVA 테이블의 전체 p-값( 0.001598 )은 α = 0.05보다 작습니다. 이는 세 가지 학습 기법 간에 시험 결과가 동일하다는 귀무가설을 기각할 수 있음을 의미합니다.
그런 다음 Games-Howell 사후 테스트를 수행하여 정확히 어떤 그룹의 평균이 다른지 확인할 수 있습니다.
pg. pairwise_gameshowell (dv=' score ', between=' group ', data=df) A B mean(A) mean(B) diff se T df pval 0 a b 77.3 91.8 -14.5 3.843754 -3.772354 11.6767 0.0072 1 a c 77.3 84.7 -7.4 3.952777 -1.872102 12.7528 0.1864 2 b c 91.8 84.7 7.1 2.179959 3.256942 17.4419 0.0119
p-값을 보면 그룹 a 와 b 사이의 평균 차이가 유의하게 다르며 그룹 b 와 c 사이의 평균 차이도 유의하게 다르다는 것을 알 수 있습니다.
추가 리소스
Python에서 일원 분산 분석을 수행하는 방법
Python에서 양방향 ANOVA를 수행하는 방법
Python에서 반복 측정 ANOVA를 수행하는 방법