비균형자료의 이원분산분석 :: R 기초 통계 - mindscale
Skip to content

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

예제 데이터 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)