獨斷論

ANOVA에 대한 Power Analysis (통계 R 초급 - 7) 본문

과학과 기술/R 통계

ANOVA에 대한 Power Analysis (통계 R 초급 - 7)

부르칸 2013. 8. 1. 19:15

http://dogmas.tistory.com/190에서 one-way ANOVA를 수행하였는데 여기서는 이에 대한 power analysis를 수행하도록 하자.

 

기본적인 문법은 아래와 같다. 각 인자에 대한 설명은 help(power.anova.test)를 수행하면 자세하게 볼수있다.

    power.anova.test(groups = NULL, n = NULL,
                              between.var = NULL, within.var = NULL,
                              sig.level = 0.05, power = NULL)

가장 중요한 사항은 기본값이 NULL로 표시된 인자들 중에서 하나는 반드시 값이 계산되어지는 변수이어야만 한다는 것이다. 간단한 예를 들면.

    > power.anova.test(groups = 4, n = 5, between.var = 1, within.var = 3)

         Balanced one-way analysis of variance power calculation

             groups = 4
                  n = 5
        between.var = 1
         within.var = 3
          sig.level = 0.05
              power = 0.3535594

    NOTE: n is number in each group

    > power.anova.test(groups = 4, between.var = 1, within.var = 3, power=0.9)

         Balanced one-way analysis of variance power calculation

             groups = 4
                  n = 15.18834
        between.var = 1
         within.var = 3
          sig.level = 0.05
              power = 0.9

    NOTE: n is number in each group

첫번째 명령에서는 샘플의 크기가 5였을때 power가 0.35라는걸 보여줬다면 두번째 명령에서는 power가 0.9이기 위해서는 샘플이 적어도 16개는 되어야 한다걸 보여준다.

그럼 저 between.var와 within.var는 뭘까?

between.var는 Between group variance이고 within.var는 Within group variance라고 되어 있는데 어떻게 계산하는지 알면 이해하기 쉽다. 물론 이것은 앞서 수행한 ANOVA의 연장이므로 데이터를 가지고 있어야 한다.

    > meancounts = tapply(InsectSprays$count, InsectSprays$spray, mean)
    > meancounts
            A         B         C         D         E         F
    14.500000 15.333333  2.083333  4.916667  3.500000 16.666667
    > var(meancounts)
    [1] 44.48056
    > results = aov(InsectSprays$count ~ InsectSprays$spray)
    > summary(results)
                       Df Sum Sq Mean Sq F value Pr(>F)   
    InsectSprays$spray  5   2669   533.8    34.7 <2e-16 ***
    Residuals          66   1015    15.4                  
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    > power.anova.test(groups=6, between.var=44.48, within.var=15.4, power=0.9)


         Balanced one-way analysis of variance power calculation


             groups = 6
                  n = 2.283024
        between.var = 44.48
         within.var = 15.4
          sig.level = 0.05
              power = 0.9

    NOTE: n is number in each group

between.var는 각 그룹의 평균을 가지고 분산을 구한 것이고, within.var는 mean squared error이다. 여기서는 power가 0.9이기 위해서 각 샘플 크기가 3이어야 한다는걸 보여준다.

Comments