9.4 2x2 카이제곱 검정의 검정력 구하기
다음은 위와 유사한 개념으로 2x2 table자료의 카이제곱 검정에서 검정력을 구하는 함수이다. 어느 한 cell의 크기가 5미만이면 카이제곱 검정이 아니라 Fisher’s exact test를 하도록 하였다. (엄밀히는 기대도수가 5미만이면서 그런 cell이 전체의 20~25%가 넘으면 Fisher’s exact를 해야한다. 이런 cell이 없다고 Fisher’s exact test를 못하는 것은 아니다.) 이와 같이 두 가지 검정이 혼재되어 있다면 하나의 공식으로 표현할 수 없기 때문에 simulation이 바람직한 방법이 된다.
= function(n, p1, p2, N=10000, alpha=0.05)
Power.chisq
{= rep(NA, N)
Res for (i in 1:N) {
= rbinom(1, n, p1)
n11 = n - n11
n12 = rbinom(1, n, p2)
n21 = n - n21
n22 = matrix(c(n11, n12, n21, n22), ncol=2, byrow=T)
A if (any(A < 5)) {
= fisher.test(A)$p.value
Res[i] else {
} = chisq.test(A)$p.value
Res[i]
}
}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를 어떻게 바꾸어야 하는지 생각해보라.