비균형자료의 이원분산분석
예제 데이터 poison.csv를 다운로드 받는다.
데이터를 연다. poison
이 수치형으로 표현되어 있으므로 factor
로 변환해준다.
dat = read.csv('poisons.csv')
dat$poison = as.factor(dat$poison)
예시를 위해 자료를 하나 삭제하여 비균형 설계로 바꿔보자.
dat2 = dat[-1,] # 데이텃의 첫 행을 제거한다
replications(time ~ poison * treat, dat2)
$poison poison 1 2 3 15 16 16 $treat treat A B C D 11 12 12 12 $`poison:treat` treat poison A B C D 1 3 4 4 4 2 4 4 4 4 3 4 4 4 4
삭제된 자료는 poison은 1, treat는 A이다. 해당하는 집단의 표본 수가 다른 집단보다 하나씩 적은 것을 확인할 수 있다.
이제 집단별 표본수가 동일하지 않으므로 비균형설계자료가 되었다.
이원분산분석을 실시한다.
m2 = aov(time ~ poison * treat, dat2)
summary
대신 Anova(m2, type="III")
로 결과를 확인한다.
library(car)
Anova(m2, type ="III")
Loading required package: carData
Sum Sq Df F value Pr(>F) (Intercept) 0.59853333 1 26.627969 9.880841e-06 poison 0.09620606 2 2.140041 1.327926e-01 treat 0.36709833 3 5.443909 3.525162e-03 poison:treat 0.24100650 6 1.787011 1.304056e-01 Residuals 0.78671667 35 NA NA
p값이 아주 작을 경우에는 9.880841e-06
와 같이 지수 표기법으로 출력될 수 있다. e-06
은 10의 -6승을 곱하라는 것으로, 소수점 아래 6번째 자리라는 뜻이다. 지수 표기법이 보기 불편할 경우 아래와 같이 소수점 7번째 자리까지는 지수표기법을 쓰지 않게 한다.
options(scipen=7)
결과를 다시 출력한다.
Anova(m2, type ="III")
Sum Sq Df F value Pr(>F) (Intercept) 0.59853333 1 26.627969 0.000009880841 poison 0.09620606 2 2.140041 0.132792625491 treat 0.36709833 3 5.443909 0.003525161961 poison:treat 0.24100650 6 1.787011 0.130405579248 Residuals 0.78671667 35 NA NA
treat
만 통계적으로 유의미하다. (p < .05)