คำตอบนี้วิเคราะห์ความหมายของคำพูดและเสนอผลการศึกษาสถานการณ์จำลองเพื่อแสดงให้เห็นและช่วยให้เข้าใจสิ่งที่อาจพยายามพูด ทุกคนสามารถขยายการศึกษาได้อย่างง่ายดาย (พร้อมR
ทักษะพื้นฐาน) เพื่อสำรวจขั้นตอนช่วงความมั่นใจและรูปแบบอื่น ๆ
ปัญหาที่น่าสนใจสองประการเกิดขึ้นในงานนี้ หนึ่งเกี่ยวข้องกับวิธีการประเมินความถูกต้องของขั้นตอนช่วงความมั่นใจ ความประทับใจที่ได้รับจากความแข็งแกร่งขึ้นอยู่กับว่า ฉันแสดงการวัดความแม่นยำที่แตกต่างกันสองแบบเพื่อให้คุณสามารถเปรียบเทียบได้
ปัญหาอื่นคือแม้ว่าขั้นตอนช่วงความเชื่อมั่นที่มีความมั่นใจต่ำอาจแข็งแกร่ง แต่ขีด จำกัดความเชื่อมั่นที่สอดคล้องกันอาจไม่สมบูรณ์เลย ช่วงเวลามักจะทำงานได้ดีเพราะข้อผิดพลาดที่ปลายด้านหนึ่งมักจะถ่วงดุลข้อผิดพลาดที่เกิดขึ้นที่ปลายอีกด้านหนึ่ง ในทางปฏิบัติคุณสามารถมั่นใจได้ว่าประมาณครึ่งหนึ่งของช่วงความเชื่อมั่นของคุณครอบคลุมพารามิเตอร์ของพวกเขาแต่พารามิเตอร์ที่เกิดขึ้นจริงอาจอยู่ใกล้กับปลายด้านใดด้านหนึ่งของแต่ละช่วงอย่างสม่ำเสมอโดยขึ้นอยู่กับความเป็นจริง50%
Robustมีความหมายมาตรฐานในสถิติ:
ความทนทานโดยทั่วไปหมายถึงการไม่รู้สึกตัวเพื่อออกจากสมมติฐานที่อยู่รอบตัวแบบจำลองความน่าจะเป็น
(Hoaglin, Mosteller และ Tukey, เข้าใจการวิเคราะห์ข้อมูลที่แข็งแกร่งและสำรวจได้ J. Wiley (1983), p. 2)
สิ่งนี้สอดคล้องกับคำพูดในคำถาม เพื่อให้เข้าใจถึงคำพูดที่เรายังคงต้องรู้ว่าตั้งใจวัตถุประสงค์ของช่วงความเชื่อมั่น ด้วยเหตุนี้เรามาตรวจสอบสิ่งที่ Gelman เขียน
ฉันชอบช่วงเวลา 50% ถึง 95% ด้วยเหตุผล 3 ประการ:
ความมั่นคงในการคำนวณ
การประเมินที่ใช้งานง่ายขึ้น (ช่วงเวลาครึ่งหนึ่ง 50% ควรมีค่าจริง)
ความรู้สึกที่ว่าในแอปพลิเคชันจะเป็นการดีที่สุดที่จะได้ความรู้สึกว่าพารามิเตอร์และค่าที่คาดการณ์ไว้นั้นเป็นอย่างไร
เนื่องจากการรับรู้ค่าที่คาดการณ์ไม่ใช่สิ่งที่ช่วงความเชื่อมั่น (CIs) มีไว้สำหรับฉันจะมุ่งเน้นไปที่การรับค่าพารามิเตอร์ซึ่งเป็นสิ่งที่ CIs ทำ ลองเรียกค่า "เป้าหมาย" เหล่านี้ ดังนั้นโดยนิยาม CI มีวัตถุประสงค์เพื่อให้ครอบคลุมเป้าหมายด้วยความน่าจะเป็นที่ระบุ (ระดับความมั่นใจ) การบรรลุเป้าหมายที่กำหนดไว้นั้นเป็นเกณฑ์ขั้นต่ำสำหรับการประเมินคุณภาพของกระบวนการ CI ใด ๆ (นอกจากนี้เราอาจสนใจความกว้างทั่วไปของ CI เพื่อให้การโพสต์มีความยาวพอสมควรฉันจะเพิกเฉยต่อปัญหานี้)
ข้อควรพิจารณาเหล่านี้เชิญเราให้ศึกษาว่าการคำนวณช่วงความเชื่อมั่นมากเกินไปอาจทำให้เราเข้าใจผิดเกี่ยวกับค่าพารามิเตอร์เป้าหมาย สามารถอ่านใบเสนอราคาตามที่แนะนำว่า CIs ที่มีความเชื่อมั่นต่ำกว่าอาจยังคงครอบคลุมอยู่แม้ว่าข้อมูลจะถูกสร้างขึ้นโดยกระบวนการที่แตกต่างจากโมเดล นั่นคือสิ่งที่เราสามารถทดสอบได้ ขั้นตอนคือ:
ใช้โมเดลความน่าจะเป็นที่มีพารามิเตอร์อย่างน้อยหนึ่งพารามิเตอร์ คลาสสิกคือการสุ่มตัวอย่างจากการแจกแจงปกติของค่าเฉลี่ยและความแปรปรวนที่ไม่รู้จัก
เลือกโพรซีเดอร์ CI สำหรับพารามิเตอร์ของรุ่นหนึ่งรายการขึ้นไป อันยอดเยี่ยมสร้าง CI จากค่าเฉลี่ยตัวอย่างและส่วนเบี่ยงเบนมาตรฐานตัวอย่างคูณด้วยปัจจัยที่กำหนดโดยการแจกแจงนักเรียนที
นำขั้นตอนนั้นไปใช้กับโมเดลที่แตกต่างหลากหลายซึ่งแยกย้ายกันไม่มากไปกว่าการใช้เพื่อประเมินความครอบคลุมในระดับความมั่นใจ
ตัวอย่างเช่นฉันได้ทำแค่นั้น ฉันอนุญาตให้การกระจายแบบพื้นฐานแตกต่างกันไปในวงกว้างตั้งแต่เกือบ Bernoulli ถึง Uniform ไปจนถึง Normal ถึง Exponential และจนถึง Lognormal เหล่านี้รวมถึงการแจกแจงแบบสมมาตร (สามรายการแรก) และรายการที่เบ้อย่างยิ่ง (สองรายการสุดท้าย) สำหรับการแจกแจงแต่ละครั้งฉันสร้างตัวอย่างขนาด 50,000 จำนวน 12 สำหรับแต่ละตัวอย่างฉันสร้าง CIs สองระดับที่มีระดับความเชื่อมั่นระหว่างถึงซึ่งครอบคลุมแอปพลิเคชันส่วนใหญ่50%99.8%
มีปัญหาที่น่าสนใจเกิดขึ้น: เราควรวัดประสิทธิภาพของกระบวนการ CI ได้ดีเพียงใด (หรือไม่ดี) วิธีการทั่วไปจะประเมินความแตกต่างระหว่างการครอบคลุมจริงและระดับความเชื่อมั่น ซึ่งอาจดูดีอย่างน่าสงสัยสำหรับระดับความมั่นใจสูง ตัวอย่างเช่นหากคุณพยายามที่จะบรรลุความมั่นใจ 99.9% แต่คุณได้รับความคุ้มครองเพียง 99% ความแตกต่างที่แท้จริงคือเพียง 0.9% อย่างไรก็ตามนั่นหมายความว่ากระบวนการของคุณล้มเหลวในการครอบคลุมเป้าหมายสิบครั้งบ่อยกว่าที่ควร! ด้วยเหตุผลนี้วิธีเปรียบเทียบที่ครอบคลุมมากขึ้นจึงควรใช้อัตราส่วนอัตราต่อรอง ฉันใช้ความแตกต่างของการบันทึกซึ่งเป็นลอการิทึมของอัตราต่อรอง โดยเฉพาะเมื่อระดับความเชื่อมั่นที่ต้องการคือและความคุ้มครองที่แท้จริงคือαpจากนั้น
log(p1−p)−log(α1−α)
จับความแตกต่างอย่างดี เมื่อเป็นศูนย์ความครอบคลุมจะเป็นค่าที่ต้องการ เมื่อเป็นลบความคุ้มครองต่ำเกินไป - ซึ่งหมายความว่า CI นั้นมองโลกในแง่ดีเกินไปและประเมินความไม่แน่นอนต่ำเกินไป
จากนั้นคำถามคืออัตราความผิดพลาดเหล่านี้แตกต่างกันอย่างไรกับระดับความเชื่อมั่นเมื่อโมเดลพื้นฐานถูกรบกวน? เราสามารถตอบได้ด้วยการพล็อตผลการจำลอง พล็อตเหล่านี้บอกปริมาณว่า "ไม่สมจริง" "ใกล้เคียง" ของ CI อาจอยู่ในแอปพลิเคชั่นแบบนี้
(1/30,1/30)
α95%3
α=50%50%95%5% ในเวลานั้นเราควรเตรียมพร้อมสำหรับอัตราความผิดพลาดของเราให้มากขึ้นในกรณีที่โลกไม่ทำงานตามแบบที่เราคิด
50%50%
นี่คือR
รหัสที่สร้างแปลง มันได้รับการแก้ไขอย่างง่ายดายเพื่อศึกษาการกระจายตัวอื่นช่วงความเชื่อมั่นอื่น ๆ และกระบวนการ CI อื่น ๆ
#
# Zero-mean distributions.
#
distributions <- list(Beta=function(n) rbeta(n, 1/30, 1/30) - 1/2,
Uniform=function(n) runif(n, -1, 1),
Normal=rnorm,
#Mixture=function(n) rnorm(n, -2) + rnorm(n, 2),
Exponential=function(n) rexp(n) - 1,
Lognormal=function(n) exp(rnorm(n, -1/2)) - 1
)
n.sample <- 12
n.sim <- 5e4
alpha.logit <- seq(0, 6, length.out=21); alpha <- signif(1 / (1 + exp(-alpha.logit)), 3)
#
# Normal CI.
#
CI <- function(x, Z=outer(c(1,-1), qt((1-alpha)/2, n.sample-1)))
mean(x) + Z * sd(x) / sqrt(length(x))
#
# The simulation.
#
#set.seed(17)
alpha.s <- paste0("alpha=", alpha)
sim <- lapply(distributions, function(dist) {
x <- matrix(dist(n.sim*n.sample), n.sample)
x.ci <- array(apply(x, 2, CI), c(2, length(alpha), n.sim),
dimnames=list(Endpoint=c("Lower", "Upper"),
Alpha=alpha.s,
NULL))
covers <- x.ci["Lower",,] * x.ci["Upper",,] <= 0
rowMeans(covers)
})
(sim)
#
# The plots.
#
logit <- function(p) log(p/(1-p))
colors <- hsv((1:length(sim)-1)/length(sim), 0.8, 0.7)
par(mfrow=c(1,2))
plot(range(alpha.logit), c(-2,1), type="n",
main="Confidence Interval Accuracies (Logit Scales)", cex.main=0.8,
xlab="Logit(alpha)",
ylab="Logit(coverage) - Logit(alpha)")
abline(h=0, col="Gray", lwd=2)
legend("bottomleft", names(sim), col=colors, lwd=2, bty="n", cex=0.8)
for(i in 1:length(sim)) {
coverage <- sim[[i]]
lines(alpha.logit, logit(coverage) - alpha.logit, col=colors[i], lwd=2)
}
plot(range(alpha), c(-0.2, 0.05), type="n",
main="Raw Confidence Interval Accuracies", cex.main=0.8,
xlab="alpha",
ylab="coverage-alpha")
abline(h=0, col="Gray", lwd=2)
legend("bottomleft", names(sim), col=colors, lwd=2, bty="n", cex=0.8)
for(i in 1:length(sim)) {
coverage <- sim[[i]]
lines(alpha, coverage - alpha, col=colors[i], lwd=2)
}