獨斷論

Independent samples t test 두번째 (통계 R 초급 - 3) 본문

과학과 기술/R 통계

Independent samples t test 두번째 (통계 R 초급 - 3)

부르칸 2013. 7. 12. 11:53

지난시간에는 Independent samples t test를 R에서 어떻게 수행하는지 알아보았는데

이번에는 이에 대한 power analysis를 어떻게 수행하는지 알아보자.

R 터미널에서 help(power.t.test)라고 치면 이에 대한 도움말을 볼수있으니 참고하도록 하자.

대개 아래와 같은데... 

power.t.test(n = NULL, delta = NULL, sd = 1, sig.level = 0.05,
             power = NULL,
             type = c("two.sample", "one.sample", "paired"),
             alternative = c("two.sided", "one.sided"),
             strict = FALSE)

n은 샘플의 observation 갯수이고

delta는 비교하고자 하는 두 그룹사이의 평균의 차이이며

sd는 표준편차이고

sig.level은 (1-신뢰도)이다.

그런데 n, delta, power, sd, sig.level 중에 하나는 값을 넣어주지 말아야 하는 것을 잊지 말자.

 

이제 각 argument값을 구하면

n은 샘플의 크기이므로 10이며

delta는 두 샘플의 평균의 차이이므로 다음과 같이 구한다.

delta=mean(nonsmokers)-mean(smokers)

sd는 independent sample이므로 pooled standard deviation을 구해야 한다.

아무리 찾아봐도 R에서는 pooled standard deviation을 구하는 명령어가 없는 것 같아서 직접구했다. 아래와 같이 한다.

> pooledVar = ((length(smokers)-1)*var(smokers) + (length(nonsmokers)-1)*var(nonsmokers))/(length(smokers)+length(nonsmokers)-2) # 물론 이것도 한줄로 입력
> pooledSD = sqrt(pooledVar)

pooled Variance를 구하는 공식은 아래와 같다.

 

n1, n2, ..., nk들은 모두 각 그룹의 샘플의 크기이고

s1제곱, s2제곱과 같은 것들은 각 샘플의 분산이며

k는 그룹의 갯수이다.

위 공식과 위 pooledVar를 구하는 R의 코딩을 비교해보면 쉽게 이해할수 있다.

이제 power analysis를 하면 아래와 같다.

> power.t.test(n = 10, delta=mean(nonsmokers)-mean(smokers), sd=pooledSD, sig.level=.05, type="two.sample", alternative="two.sided") # 물론 이것도 한줄로 쳐야한다.

 

     Two-sample t test power calculation

 

              n = 10
          delta = 2.6
             sd = 2.575526
      sig.level = 0.05
          power = 0.569879
    alternative = two.sided

NOTE: n is number in *each* group

 

Wilsoxin rank sum test (Wilsoxin-Mann-Whitney test)

샘플이 정규분포를 따르지 아니할때 그리고 샘플의 크기가 작아서 central limit theorem 적용하기 불가하다면 nonparametric test를 써야만 한다. 이때 사용되는 것이 Wilcoxin rank sum test이다. Mann-Whitness U test라고 하기도 한다.

쓰는 방법은 아래와 같다.

> wilcox.test(nonsmokers,smokers)

 

        Wilcoxon rank sum test with continuity correction

 

data:  nonsmokers and smokers
W = 76.5, p-value = 0.04715
alternative hypothesis: true location shift is not equal to 0

Warning message:
In wilcox.test.default(nonsmokers, smokers) :
  cannot compute exact p-value with ties

Regression formula를 사용하려면 다음과 같이 사용한다.

> wilcox.test(scores ~ groups, data=smoke.data)

 

        Wilcoxon rank sum test with continuity correction

 

data:  scores by groups
W = 76.5, p-value = 0.04715
alternative hypothesis: true location shift is not equal to 0

Warning message:
In wilcox.test.default(x = c(18, 22, 21, 17, 20, 17, 23, 20, 22,  :
  cannot compute exact p-value with ties

여기에 나오는 Warning은 무시해도 좋다.

Comments