9.4 2x2 카이제곱 검정의 검정력 구하기

다음은 위와 유사한 개념으로 2x2 table자료의 카이제곱 검정에서 검정력을 구하는 함수이다. 어느 한 cell의 크기가 5미만이면 카이제곱 검정이 아니라 Fisher’s exact test를 하도록 하였다. (엄밀히는 기대도수가 5미만이면서 그런 cell이 전체의 20~25%가 넘으면 Fisher’s exact를 해야한다. 이런 cell이 없다고 Fisher’s exact test를 못하는 것은 아니다.) 이와 같이 두 가지 검정이 혼재되어 있다면 하나의 공식으로 표현할 수 없기 때문에 simulation이 바람직한 방법이 된다.

Power.chisq = function(n, p1, p2, N=10000, alpha=0.05) 
{
  Res = rep(NA, N)
  for (i in 1:N) {
    n11 = rbinom(1, n, p1)
    n12 = n - n11
    n21 = rbinom(1, n, p2)
    n22 = n - n21
    A = matrix(c(n11, n12, n21, n22), ncol=2, byrow=T)
    if (any(A < 5)) {
      Res[i] = fisher.test(A)$p.value
    } else {
      Res[i] = chisq.test(A)$p.value      
    }
  }
  return(mean(Res < alpha))
}

Power.chisq(44, 0.5, 0.2) # about 0.8
[1] 0.8061

위 함수를 잘 활용하면 표본 크기(sample size)를 구하는 함수를 만들 수 있다.

그런데, 여기에서도 t.test때와 같은 문제를 고려해 볼 수 있다. 즉, 귀무 가설이 단지 ’\(p_1\)\(p_2\)가 다르다’인 경우가 있고, \(p_1 - p_2 < 0.1\)과 같이 특정값을 제시할 때가 있다. 후자의 경우 위의 R script를 어떻게 바꾸어야 하는지 생각해보라.