이원분산분석
이원분산분석
예제 데이터 poison.csv를 다운로드 받는다.
데이터를 연다.
dat = read.csv('poisons.csv')
head(dat)
X | time | poison | treat |
---|---|---|---|
1 | 0.31 | 1 | A |
2 | 0.45 | 1 | A |
3 | 0.46 | 1 | A |
4 | 0.43 | 1 | A |
5 | 0.36 | 2 | A |
6 | 0.29 | 2 | A |
이 데이터에서 종속변수는 time, 독립변수는 poison과 treat이다.
poison
이 수치형으로 표현되어 있으므로 factor
로 변환해준다.
dat$poison = as.factor(dat$poison)
균형설계자료인지 확인한다.
replications(time ~ poison * treat, dat)
- poison
- 16
- treat
- 12
- poison:treat
- 4
- poison 요인으로 구분한 집단별 표본수는 모두 16으로 동일
- treat 요인구분한 집단별 표본수는 모두 12으로 동일
- poison과 treat 요인으로 구분한 각 집단별 표본수는 모두 4로 동일
- 모든 집단별 표본수가 동일하므로, 균형설계자료
이원분산분석 실시:
m1 = aov(time ~ poison * treat, dat)
summary(m1)
Df Sum Sq Mean Sq F value Pr(>F)
poison 2 1.0330 0.5165 23.222 3.33e-07 ***
treat 3 0.9212 0.3071 13.806 3.78e-06 ***
poison:treat 6 0.2501 0.0417 1.874 0.112
Residuals 36 0.8007 0.0222
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
결과 해석: - poison: F(2, 36) = 23.222, p < 0.05로 유의미. 즉 poison의 수준에 따라 평균에 차이가 난다고 볼 수 있음 - treat: F(3, 36) = 13.806, p < 0.05로 유의미. 즉 treat의 수준에 따라 평균에 차이가 난다고 볼 수 있음 - poison:treat: F(6, 36) = 1.874, p > 0.05로 유의미하지 않음. 상호작용 효과는 발견하지 못함
비균형자료의 이원분산분석
예제 데이터 poison.csv를 다운로드 받는다.
데이터를 연다. poison
이 수치형으로 표현되어 있으므로 factor
로 변환해준다.
dat = read.csv('poisons.csv')
dat$poison = as.factor(dat$poison)
예시를 위해 자료를 하나 삭제하여 비균형 설계로 바꿔보자.
dat2 = dat[-1,] # 데이텃의 첫 행을 제거한다
replications(time ~ poison * treat, dat2)
- $poison
- 1
- 15
- 2
- 16
- 3
- 16
- $treat
- A
- 11
- B
- 12
- C
- 12
- D
- 12
- $`poison:treat`
A B C D 3 4 4 4 4 4 4 4 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)