ฉันกำลังพยายามเขียนสคริปต์ R เพื่อจำลองการตีความการทดลองซ้ำในช่วงความมั่นใจ 95% ฉันพบว่ามันประเมินค่าสัดส่วนของจำนวนครั้งที่ค่าของประชากรที่แท้จริงของสัดส่วนนั้นอยู่ใน 95% CI ของกลุ่มตัวอย่าง ไม่แตกต่างกันมาก - ประมาณ 96% เทียบกับ 95% แต่นี่ก็สนใจฉันอยู่ดี
ฟังก์ชั่นของฉันจะรับตัวอย่างsamp_n
จากการกระจาย Bernoulli กับความน่าจะเป็นpop_p
และจากนั้นคำนวณช่วงความเชื่อมั่น 95% มีการใช้แก้ไขความต่อเนื่องหรือมากกว่าตรงกับprop.test()
binom.test()
มันจะส่งกลับ 1 ถ้าสัดส่วนประชากรที่แท้จริงpop_p
มีอยู่ใน 95% CI ฉันได้เขียนฟังก์ชันที่สองซึ่งหนึ่งที่ใช้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.96 มากกว่า 0.95
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
เป็นผล