獨斷論

통계 R의 명령어 입문 (4): one-way ANOVA 본문

과학과 기술/R 통계

통계 R의 명령어 입문 (4): one-way ANOVA

부르칸 2013. 7. 2. 12:34

R에서 ANOVA(analysis of variance, 분산분석)를 실행하기 위해 데이터를 아래와 같이 입력한다.

> x1 = c(18, 25, 17, 20, 23)
> x2 = c(20, 30, 22, 25, 28, 30)
> x3 = c(35, 27, 27, 30, 40, 33)

x1, x2, x3의 그룹변화에 따라 데이터가 얼마나 변화하는지 알아보는 것이다.

그러기 위해서는 x1, x2, x3의 데이터를 하나의 변수에 넣고 x1, x2, x3를 factor로 변환하여 ANOVA를 수행한다.

    > all.scores = c(x1, x2, x3)    # 데이터를 합친다
    > grp = c("x1", "x2", "x3")     # 여기서 x1, x2, x3는 문자열로 group의 이름이다
    > n = c(5, 6, 6)                # 각 group의 샘플크기이다
    > groups = rep(grp, n)          # 각 score마다 label을 지정
    > results = aov(all.scores ~ factor(groups))     # ANOVA수행결과를 results에 보관
    > summary(results)
                   Df Sum Sq Mean Sq F value Pr(>F)  
    factor(groups)  2  358.2  179.10   9.569 0.0024 **
    Residuals      14  262.0   18.72                 
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

ANOVA수행의 명령어는 aov라는 점을 유의해야 한다.

Post Hoc test를 위해서 아래의 명령을 수행하면 된다.

    > TukeyHSD(results)   
      Tukey multiple comparisons of means
        95% family-wise confidence level

    Fit: aov(formula = all.scores ~ factor(groups))

    $`factor(groups)`
               diff        lwr      upr     p adj
    x2-x1  5.233333 -1.6231312 12.08980 0.1493412
    x3-x1 11.400000  4.5435354 18.25646 0.0017968
    x3-x2  6.166667 -0.3707158 12.70405 0.0656473

one-way ANOVA를 수행하는 함수는 R에서 aov() 이외에 oneway.test()가 있는데 aov()는 post hoc test를 수행할수 있다는 장점이 있고 oneway.test()는 데이터가 nonhomogeneity임에도 불구하고 수행할수 있다는 장점을 가지고 있다.

아래는 oneway.test()를 R에서 수행한 결과를 보여준다.

> oneway.test(all.scores ~ groups)

        One-way analysis of means (not assuming equal variances)

data:  all.scores and groups
F = 9.4638, num df = 2.000, denom df = 9.299, p-value = 0.005727

Comments