본문 바로가기
공부/R & Python

7-4. 이원분산분석 (two-way ANOVA)

by 드인 2020. 2. 16.

7-4. 이원분산분석 (two-way ANOVA)


two-way -> factor가 2개

1) 이원분산분석 (two-way ANOVA)

- ANOVA (Analysis of Variance) : 전체분산(variance)을 분할(분석, analysis)하여 어떤 요인(factor)의 영향이 유의한지(significant) 검정하는 방법.

 

- 데이터 : High-Density Lipoprotein (HDL) 콜레스테롤

chol_ex.csv

1. ID

2. drug : 5mg, 10mg, placebo

3. age : young(18-39), old(>=40세)

4. value : HDL(투약전)-HDL(투약후)

*HDL(고밀도 리포 단백질)은 높을수록 좋은것으로 알려진 콜레스테롤. 40mg/dl이상이 정상범위

 

- 이원분산분석 (two-way ANOVA) : factor가 두개인 경우

(1) 투약효과가 있는가? (5mg, 10mg, 위약)

(2) 연령그룹(young/ old)에 따른 영향이 있는가?

가설 1 : 신약의 투약효과가 있는가? HDL을 상승시키는 효과가 있나?

가설 2 : 연령그룹에 따라 투약효과(HDL변화)에 차이가 있나?

가설 3 : 신약의 투약과 연령그룹간 상호작용 효과가 있는가?

 

- 이원분산분석 : aov(타겟변수~factor1+ factor2)

a6 <- aov(value ~ drug + age)
summary(a6)

 

[분석 결과]

              Df Sum Sq Mean Sq F value   Pr(>F)    
drug         2 161.44   80.72  33.568 4.55e-06 ***
age          1   4.50    4.50   1.871    0.193    
Residuals   14  33.67    2.40                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(1) drug effect : p-value~0이므로 HDL값에 통계적으로 유의한 차이가 있음

(2) age : p-value=0.19로 유의수준 0.05에서 유의한 차이는 없음

 

- 이원분산분석 : aov(타겟변수~factor1+ factor2+ 상호작용)

두개의 factor간 상호작용의 유의성을 검정하기 위한 분석

a7 <- aov(value ~ drug + age+ drug*age)
summary(a7)

 

[분석 결과]

              Df Sum Sq Mean Sq F value   Pr(>F)    
drug         2 161.44   80.72  35.439 9.21e-06 ***
age          1   4.50    4.50   1.976    0.185    
drug:age     2   6.33    3.17   1.390    0.286    
Residuals   12  27.33    2.28                     
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(3) drug와 age그룹간 상호작용 : p-value=0.286으로 유의수준 0.05에서 유의한 차이는 없음

 

2) 이원분산분석 (two-way ANOVA) : 두 요인의 상자그림

- 투약용량과 연령그룹에 따른 상자그림

par(mfrow=c(1,2))
boxplot(value ~ drug, boxwex = 0.7, main="HDL by drug dose", col = c("yellow","orange", "green"))
boxplot(value ~ age, boxwex = 0.5, main="HDL by Age", col = c("blue", "coral"))

 

round(tapply(value, drug, mean),2)
(1) drug effect : 10mg인 경우 HDL 상승효과가 가장 높음
round(tapply(value, age, mean),2)

(2) age : young그룹(18-40)의 HDL 상승효과가 더 높음

 

3) 이원분산분석 (two-way ANOVA) : 상호작용 그래프

- 상호작용 그래프

par(mfrow=c(1,2))
interaction.plot(drug, age, value)   (1) 투약용량을 기준(x축)으로 그릴때
interaction.plot(age, drug, value)   (2) 연령그룹을 기준(x축)으로 그릴때

투약 용량 10mg에서 young그룹의 상승효과가 old그룹보다 훨씬 높음

5mg에서와 placebo에서는 연령그룹의 차이가 거의 없음