일원분산분석의 가정 확인 :: Python 기초 통계 - mindscale
Skip to content

일원분산분석의 가정 확인

일원분산분석의 가정들

  • 독립성: 자료의 추출은 독립적으로 이루어졌음
  • 무선표집을 하였다면 만족하는 것으로 여김
  • 정규성: 자료의 모집단 분포는 정규분포를 따름
  • 등분산성: 모든 집단의 모분산은 동일함

정규성 확인

  • 수준별(집단별)로 실시하여 확인

먼저 데이터를 연다.

import pandas as pd
df = pd.read_csv('PlantGrowth.csv')

ctrl 수준의 정규성을 확인한다.

import scipy.stats

scipy.stats.shapiro(df.weight[df.group=='ctrl'])
(0.9566815495491028, 0.7474744915962219)

trt1 수준의 정규성을 확인한다.

scipy.stats.shapiro(df.weight[df.group=='trt1'])
(0.9304107427597046, 0.4519447386264801)

trt2 수준의 정규성을 확인한다.

scipy.stats.shapiro(df.weight[df.group=='trt2'])
(0.9410051107406616, 0.5642509460449219)

모두 p >.05이므로 각 집단의 자료가 정규성을 크게 벗어난다고 보기 어려움

독립성 확인

  • 자료 수집이 무선표집(random sampling)되었다면 만족한다고 봄

등분산성 확인

레빈 검증:

scipy.stats.levene(
    df.weight[df.group == 'ctrl'],
    df.weight[df.group == 'trt1'],
    df.weight[df.group == 'trt2'] )
LeveneResult(statistic=1.1191856948703909, pvalue=0.3412266241254737)

바틀렛 검증:

scipy.stats.bartlett(
    df.weight[df.group == 'ctrl'],
    df.weight[df.group == 'trt1'],
    df.weight[df.group == 'trt2'] )
BartlettResult(statistic=2.8785737872360935, pvalue=0.23709677363455822)

두 테스트 모두, 세 집단의 모분산에 유의미한 차이를 발견하지 못함. 등분산성 가정이 유지됨