Ця відповідь аналізує значення цитати та пропонує результати симуляційного дослідження, щоб проілюструвати її та допомогти зрозуміти, що вона може намагатися сказати. Дослідження може бути легко продовжено будь-ким (з рудиментарними R
навичками) для вивчення інших процедур інтервалу довіри та інших моделей.
У цій роботі виникли два цікавих питання. Одне стосується того, як оцінити точність процедури довірчого інтервалу. Від цього залежить враження, що ви отримуєте надійність. Я показую дві різні міри точності, щоб ви могли їх порівняти.
50 %
Надійний має стандартне значення в статистиці:
Міцність, як правило, передбачає нечутливість до відхилень від припущень, що лежать в основі основної ймовірнісної моделі.
(Хоаглін, Мостеллер і Тукі, Розуміння надійного та дослідницького аналізу даних . Дж. Вілей (1983), стор. 2)
Це відповідає цитаті у питанні. Для розуміння пропозиції нам ще потрібно знати призначення цільового інтервалу. З цією метою давайте розглянемо те, що написав Гельман.
Я віддаю перевагу інтервали від 50% до 95% з 3 причин:
Обчислювальна стабільність,
Більш інтуїтивна оцінка (половина 50% інтервалів повинна містити справжнє значення),
Почуття, що в додатках найкраще зрозуміти, де будуть параметри та передбачувані значення, а не намагатися нереально досягти майже визначеності.
Оскільки розуміння передбачуваних значень - це не те, для чого призначені інтервали довіри (CI), я зупинюсь на тому, щоб зрозуміти значення параметрів , якими саме є CI. Назвемо ці значення "цільовими". Отже, за визначенням, CI призначений для покриття своєї мети із заданою ймовірністю (її рівень довіри). Досягнення запланованих показників покриття є мінімальним критерієм оцінки якості будь-якої процедури ІС. (Крім того, нас можуть зацікавити типові ширини CI. Щоб зберегти публікацію на розумній довжині, я проігнорую це питання.)
Ці міркування пропонують нам вивчити, наскільки обчислення інтервалу довіри може ввести нас в оману щодо значення цільового параметра. Цитата може розглядатися як припущення про те, що КІ з меншою довірою можуть зберігати покриття навіть тоді, коли дані генеруються процесом, відмінним від моделі. Це те, що ми можемо перевірити. Процедура така:
Прийняти ймовірнісну модель, яка включає принаймні один параметр. Класичний - вибірка з нормального розподілу невідомих середніх та дисперсійних.
Виберіть процедуру CI для одного або декількох параметрів моделі. Відмінник будує ІС із середньої вибірки та стандартного відхилення вибірки, помножуючи останнє на коефіцієнт, заданий розподілом Стьюдента.
Застосовуйте цю процедуру до різних різних моделей - не дуже сильно відхилених від прийнятої - для оцінки її охоплення за рівнем довіри.
50 %99,8 %
αp, потім
log(p1−p)−log(α1−α)
приємно фіксує різницю. Коли він дорівнює нулю, покриття - саме вказане значення. Якщо вона негативна, покриття занадто низьке - це означає, що КІ занадто оптимістичний і недооцінює невизначеність.
Отже, питання полягає в тому, як ці показники помилок змінюються в залежності від рівня довіри, коли обумовлена основна модель? На це ми можемо відповісти, побудувавши результати моделювання. Ці сюжети кількісно оцінюють, наскільки "нереальною" може бути "майже визначеність" ІС у цій архетипній програмі.
(1/30,1/30)
α95%3
α=50%50%95%5% в той час, тоді ми повинні бути готові до того, що наш рівень помилок буде набагато більшим, якщо світ працює не зовсім так, як передбачає наша модель.
50%50%
Це R
код, який створив сюжети. Він легко модифікується для вивчення інших розподілів, інших рівнів довіри та інших процедур ІС.
#
# 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)
}