Skip to content

ANOVA in R #

Find similar titles

27회 업데이트 됨.

Edit
  • 최초 작성자
    ANOVA in R
  • 최근 업데이트
    jmkang

Structured data

Category
Statistics

분산분석(ANOVA)? #

그룹 간 변동(between-group variation)과 그룹 내 변동(within-group variation)을 이용해 분석, 그룹 간 변동이 그룹 내 변동보다 크다면 그룹 간에 차이가 있다고 검정함 2개의 집단을 비교하고자 하는 경우에는 일반적으로 t-test 방법을 많이 이용하지만 비교하고자 하는 집단이 3개 이상일 경우에는 ANOVA를 이용해야 한다.

분산분석의 가정 #

정규성 #

  • 각 그룹의 변수는 정규분포를 따라야 한다.

등분산성 #

  • 그룹 간 분산 값은 서로 같아야 한다.

독립성 #

  • 그룹 간 변수의 값은 서로 독립적이어서 서로에 대한 영향력을 갖지 않아야 한다.

분산분석의 종류 #

일원분산분석(one-way ANOVA) #

  • 집단 간 하나의 종속변수에 대해서 평균의 차이가 통계적으로 유의한지를 검정
  • 종속변수가 1개이며 독립변수도 1개인 경우

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

  • 집단 간 하나의 종속변수에 대해 평균의 차이가 유의미한지를 검정하는 측면에서는 일원분산분석과 유사하나 이원분산분석은 독립변수가 2개이며 이들 독립변수와 종속변수 간의 상호작용 효과를 비교할 수 있다.

R을 활용한 분산분석 예제 #

일원분산분석(one-way ANOVA) #

> analysis<-aov(Sepal.Width~Species,data=iris)
> summary(analysis)
Df Sum Sq Mean Sq F value Pr(>F) 
Species 2 11.35 5.672 49.16 <2e-16 ***
Residuals 147 16.96 0.115 
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1

P-value 값을 보고 귀무가설의 기각 여부를 판단한다. P-value 값이 0.05를 기준으로 낮은 값을 나타낸다면 귀무가설을 기각하고 iris 품종 간 해당 변수에 대해 평균차가 유의미하다고 검정결과를 낼 수 있다.

분산분석이 성립하기 위한 조건으로서 각 변수에 대해 등분산성을 가지는지 검정하기 위해 bartlett.test 함수를 이용한다.

> bartlett.test(Sepal.Width~Species,data=iris)

Bartlett test of homogeneity of variances

data: Sepal.Width by Species
Bartlett`s K-squared = 2.0911, df = 2, p-value = 0.3515

마찬가지로 P-value 값을 비교하여 등분산성 여부를 검정한다. P-value 값이 0.05보다 크다면 기존 귀무가설을 기각하지 못하므로 등분산성을 가진다고 본다.

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

이원분산분석을 위해서 R에서 제공하는 mtcars데이터의 변속기 종류(am) 실린더 개수(cyl)정보를 다음과 같이 변경해준다.

> m2<-mtcars
> m2$am <- factor(mtcars$am, levels=c(0, 1), labels=c("Automatic", "Manual"))
> m2$cyl <- factor(mtcars$cyl, levels=c(4, 6, 8), labels=c("4cyl", "6cyl", "8cyl"))
> analysis2<-aov(mpg ~ am*cyl,data=m2)
> summary(analysis2)
Df Sum Sq Mean Sq F value Pr(>F) 
am 1 405.2 405.2 44.064 4.85e-07 ***
cyl 2 456.4 228.2 24.819 9.35e-07 ***
am:cyl 2 25.4 12.7 1.383 0.269 
Residuals 26 239.1 9.2 
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘

am:cy1에서의 P-value 0.269로 0.05보다 크므로 한쪽의 변화가 다른 쪽에 미치는 영향이 없다고 볼 수 있다.

또한, am , cyl 각각의 P-value는 0.05보다 낮은 값을 가지므로 각각 차이가 유의미하다고 볼 수 있다.

이를 그래프를 그려서 다시 한번 비교해보면

> with(m2, interaction.plot(am, cyl, mpg))

Image

그림 1. 선끼리 교차가 되지 않는 것을 확인할 수 있다. 따라서 am 및 cyl의 효과가 mpg의 변화에 대해 상호 작용을 보이지 않는 것으로 나타난다고 볼 수 있다.(출처:Steemit.com)

0.0.1_20230725_7_v68