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-값을 보면 그룹 ab 사이의 평균 차이가 유의하게 다르며 그룹 bc 사이의 평균 차이도 유의하게 다르다는 것을 알 수 있습니다.

추가 리소스

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

의견을 추가하다

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