Python 기초 통계

Python으로 하는 기초 통계 분석법


수강중

26. 비균형자료의 이원분산분석

동영상이 없는 텍스트 강의 자료입니다.

예제 데이터 poison.csv를 다운로드 받는다.

데이터를 연다. poison이 수치형으로 표현되어 있으므로 factor로 변환해준다.

import pandas as pd
dat = pd.read_csv('poisons.csv', index_col=0)

예시를 위해 자료를 하나 삭제하여 비균형 설계로 바꿔보자.

dat2 = dat.loc[1:,:]  # 데이텃의 첫 행을 제거한다

삭제된 자료는 poison은 1, treat는 A이다. 해당하는 집단의 표본 수가 다른 집단보다 하나씩 적은 것을 확인할 수 있다.

이제 집단별 표본수가 동일하지 않으므로 비균형설계자료가 되었다.

이원분산분석을 실시한다.

from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm

model = ols('time ~ C(poison) * C(treat)', dat).fit()

비균형설계자료의 경우 typ=3 옵션을 추가해준다.

anova_lm(model, typ=3)
sum_sq df F PR(>F)
Intercept 0.680625 1.0 30.600393 0.000003
C(poison) 0.082217 2.0 1.848200 0.172157
C(treat) 0.453950 3.0 6.803085 0.000947
C(poison):C(treat) 0.250137 6.0 1.874333 0.112251
Residual 0.800725 36.0 NaN NaN

treat만 통계적으로 유의미하다. (p < .05)