F.1 예제 배경

이 예제는 “Based on Anthony O’Hagan, John W. Stvens, Michael J. Campbell. Assurance in Clinical Trial Design. Pharmaceut. Statist. 2005;4:187-201”에 있는 것이다.

임상시험에서 표본 크기(sample size)를 계산할 때, 표본 크기(sample size)를 크게 하면 검정력이 계속 증가하여 1에 도달할 것이라고 생각하는 경우가 많다.

하지만, 우리가 가정한 효과 크기(effect size)나 오차(error) 또는 잡음(noise)의 크기가 생각과 다르다면 문제가 커진다. 이 예제는 이러한 효과 크기(errect size)나 오차 크기(error size)가 어떤 고정된 숫자가 아닌, 분포를 따르는 확률변수로 간주하고 계산하는 예이다.

다음과 같이 하나의 임상시험 결과를 simulation(모의 실험, 모사)하는 함수를 생각해보자.

require(sasLM)
Sim = function(n, alpha=0.05)
{
  SigSq = exp(rnorm(1, -2.77, 1.42857))
  Delta = rbinom(1, 1, 0.5)*rnorm(1, 0.4, sqrt(SigSq))
  XBarDiff = rnorm(1, Delta, sqrt(SigSq*2/n))
  Var1 = SigSq/(n - 1)*rchisq(1, n - 1)
  Var2 = SigSq/(n - 1)*rchisq(1, n - 1)
  t.val = XBarDiff/sqrt(Var1/n + Var2/n)
  t0 = qt(1 - alpha/2, satt(c(Var1, Var2), c(n - 1, n - 1))[[2]])
  return(abs(t.val) > t0) # two-sided Welch t-test
}

표본분산은 SigSq를 계수로 하는 카이제곱분포를 따르는데, SigSq는 평균이 -2.77, 표준편차가 1.42857인 로그정규분포를 따른다고 추정되었다. 또한 효과크기는 평균이 0.4이고, 분산이 SigSq인 정규분포를 따르지만, 50%의 확률로 효과가 전혀 없을 수도 있다. 이런 경우에 Welch t-test를 한다면 검정력은 얼마나 되는지 다음과 같이 계산하였다.

아래는 기본적(default)으로 10만회를 simulation하는 함수이다.

List = function(N=100000, n, alpha=0.05)
{
  Res = vector(length=N)
  for (i in 1:N) Res[i] = Sim(n, alpha)
  return(sum(Res)/N)
}

위의 실행결과는 다음과 같다.

List(n=25)  # 0.44704
List(n=33)  # 0.4576
List(n=35)  # 0.46113
List(n=40)  # 0.46285
List(n=50)  # 0.47301
List(n=100) # 0.48496

위 결과를 보면 검정력이 생각보다 크지 않으며, 표본 크기(sample size)를 늘여도 검정력 증가에는 한계(여기에서는 0.5)가 있음을 알 수 있다.