나는 t-interval을 부트 스트랩 간격과 비교하고 두 범위의 적용 확률을 계산하는 클래스 데모를 원했습니다. 데이터가 기울어 진 분포에서 나오기를 원했기 때문에 exp(rnorm(10, 0, 2)) + 1
시프트 된 로그 노멀에서 크기가 10 인 표본으로 데이터를 생성하기로 결정했습니다 . 나는 1000 개의 표본을 추출하는 스크립트를 작성했으며, 각 표본에 대해 1000 개의 반복 실험을 기반으로 95 % t 간격과 95 % 부트 스트랩 백분위 간격을 계산했습니다.
스크립트를 실행할 때 두 방법 모두 매우 비슷한 간격을 제공하고 두 범위 모두 50-60 %의 적용 확률을 갖습니다. 부트 스트랩 간격이 더 좋을 것이라고 생각했기 때문에 놀랐습니다.
내 질문은
- 코드에서 실수를 했습니까?
- 구간 계산에 실수를 했습니까?
- 부트 스트랩 간격이 더 나은 범위 속성을 가질 것으로 예상하여 실수를 했습니까?
또한이 상황에서보다 안정적인 CI를 구성 할 수있는 방법이 있습니까?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability