9.2 Simple Bootstrap

주어진 자료에서 같은 sample size (n)의 자료를 복원추출하는 것을 N회(주로 2000회 정도) 반복하여, 통계량들의 percentile로 신뢰구간을 구한다.

9.2.1 난수 발생시키기

mu1 = 0
sig1 = 1
n1 = 20

x = rnorm(n1, mu1, sig1)

9.2.2 공식 (Formula)으로 CI 구하기

alpha1 = 0.05
mx = mean(x)
mx + c(-1, 1)*qnorm(1 - alpha1/2)*sd(x)/sqrt(n1)
[1] -0.0252573  1.0214392

9.2.3 Bootstrapping으로 CI 구하기

N = 2000
Res = rep(NA, N)
for (i in 1:N) {
  Res[i] = mean(x[sample(n1, n1, replace=T)])
}
  • 일반적인 percentile (quantile) 신뢰구간
ci0 = quantile(Res, c(alpha1/2, 1 - alpha1/2)) # if symmetric, percentile CI
ci0
       2.5%       97.5% 
-0.01737132  1.01246058 
  • Reverse percentile CI (reflection method) (별로 추천하지 않음)
2*mx - rev(ci0)
      97.5%        2.5% 
-0.01627869  1.01355321 

주의할 점: 한 사람(대상자, 개체)에서 여러 번 측정한 경우(예를 들어, 농도 자료가 그렇다)에는 한 개체 자료 전체가 resmapling unit이 된다. 예를 들어, 100명에게서 1000개의 관측값이 있다면 resampling은 (개별 관측값이 아니고) 100개의 ID로 한다.