95 % 신뢰 구간의 반복 실험 해석을 시뮬레이션하기 위해 R 스크립트를 작성하려고합니다. 비율의 실제 모집단 값이 표본의 95 % CI에 포함되어있는 시간의 비율을 과대 평가하는 것으로 나타났습니다. 큰 차이는 아니지만 약 96 % 대 95 %이지만 그럼에도 불구하고 관심이 있습니다.
내 함수는 samp_n
확률로 Bernoulli 분포에서 표본을 추출한 pop_p
다음 prop.test()
연속성 보정 을 사용하거나보다 정확하게를 사용하여 95 % 신뢰 구간을 계산합니다 binom.test()
. 실제 모집단 비율 pop_p
이 95 % CI에 포함되어 있으면 1을 반환합니다 . 두 가지 기능을 사용했습니다. 하나는 사용 prop.test()
하고 다른 하나는 사용 binom.test()
하고 비슷한 결과를 얻었습니다.
in_conf_int_normal <- function(pop_p = 0.3, samp_n = 1000, correct = T){
## uses normal approximation to calculate confidence interval
## returns 1 if the CI contain the pop proportion
## returns 0 otherwise
samp <- rbinom(samp_n, 1, pop_p)
pt_result <- prop.test(length(which(samp == 1)), samp_n)
lb <- pt_result$conf.int[1]
ub <- pt_result$conf.int[2]
if(pop_p < ub & pop_p > lb){
return(1)
} else {
return(0)
}
}
in_conf_int_binom <- function(pop_p = 0.3, samp_n = 1000, correct = T){
## uses Clopper and Pearson method
## returns 1 if the CI contain the pop proportion
## returns 0 otherwise
samp <- rbinom(samp_n, 1, pop_p)
pt_result <- binom.test(length(which(samp == 1)), samp_n)
lb <- pt_result$conf.int[1]
ub <- pt_result$conf.int[2]
if(pop_p < ub & pop_p > lb){
return(1)
} else {
return(0)
}
}
실험을 몇 천 번 반복 pop_p
하면 표본의 95 % CI 내에있는 시간의 비율 이 0.95가 아니라 0.96에 가깝다는 것을 알았습니다.
set.seed(1234)
times = 10000
results <- replicate(times, in_conf_int_binom())
sum(results) / times
[1] 0.9562
이것이 왜 그런지에 대한 나의 생각은
- 내 코드가 잘못되었습니다 (그러나 많이 확인했습니다)
- 처음에는 이것이 정상적인 근사 문제로 인한 것이라고 생각했지만
binom.test()
어떤 제안?
times=100000
몇 번 다른 시간으로 코드를 다시 실행 하고 동일한 결과를 보았습니다. 누군가 이것에 대한 설명이 있는지 궁금합니다. 코드는 충분히 간단하여 코딩 오류가 없다고 확신합니다. 또한, 하나 개의 실행과는times=1000000
준.954931
결과로.