Cette réponse analyse le sens de la citation et offre les résultats d'une étude de simulation pour l'illustrer et aider à comprendre ce qu'elle pourrait essayer de dire. L'étude peut facilement être étendue par n'importe qui (avec des R
compétences rudimentaires ) pour explorer d'autres procédures d'intervalle de confiance et d'autres modèles.
Deux questions intéressantes sont apparues dans ce travail. L'une concerne la manière d'évaluer la précision d'une procédure d'intervalle de confiance. L'impression que l'on obtient de robustesse en dépend. J'affiche deux mesures de précision différentes afin que vous puissiez les comparer.
L'autre problème est que, bien qu'une procédure d' intervalle de confiance à faible confiance puisse être robuste, les limites de confiance correspondantes pourraient ne pas être robustes du tout. Les intervalles ont tendance à bien fonctionner parce que les erreurs qu'ils commettent à une extrémité compensent souvent les erreurs qu'ils font à l'autre. En pratique, vous pouvez être sûr que près de la moitié de vos intervalles de confiance à couvrent leurs paramètres, mais le paramètre réel peut toujours se trouver près d'une fin particulière de chaque intervalle, selon la façon dont la réalité s'écarte de vos hypothèses de modèle.50 %
Robuste a une signification standard en statistique:
La robustesse implique généralement une insensibilité aux écarts par rapport aux hypothèses entourant un modèle probabiliste sous-jacent.
(Hoaglin, Mosteller et Tukey, Understanding Robust and Exploratory Data Analysis . J. Wiley (1983), p. 2.)
Cela est conforme à la citation de la question. Pour comprendre la citation, nous devons encore connaître la finalité d'un intervalle de confiance. À cette fin, passons en revue ce que Gelman a écrit.
Je préfère des intervalles de 50% à 95% pour 3 raisons:
Stabilité de calcul,
Évaluation plus intuitive (la moitié des intervalles de 50% doit contenir la vraie valeur),
Un sentiment que dans les applications, il est préférable de se faire une idée de l'emplacement des paramètres et des valeurs prédites, et non de tenter une quasi-certitude irréaliste.
Étant donné que l'obtention d'une idée des valeurs prédites n'est pas celle à laquelle les intervalles de confiance (IC) sont destinés, je vais me concentrer sur l'obtention d'une idée des valeurs des paramètres , ce que font les IC. Appelons-les les valeurs "cibles". D'où, par définition, un IC est destiné à couvrir sa cible avec une probabilité spécifiée (son niveau de confiance). Atteindre les taux de couverture prévus est le critère minimum pour évaluer la qualité de toute procédure d'IC. (De plus, nous pourrions être intéressés par des largeurs de CI typiques. Pour garder le message à une longueur raisonnable, j'ignorerai ce problème.)
Ces considérations nous invitent à étudier dans quelle mesure un calcul d'intervalle de confiance pourrait nous induire en erreur concernant la valeur du paramètre cible. La citation pourrait être lue comme suggérant que les IC à faible confiance pourraient conserver leur couverture même lorsque les données sont générées par un processus différent du modèle. C'est quelque chose que nous pouvons tester. La procédure est la suivante:
Adoptez un modèle de probabilité qui comprend au moins un paramètre. Le plus classique consiste à échantillonner à partir d'une distribution normale de moyenne et de variance inconnues.
Sélectionnez une procédure CI pour un ou plusieurs paramètres du modèle. Un excellent construit l'IC à partir de la moyenne de l'échantillon et de l'écart-type de l'échantillon, en multipliant ce dernier par un facteur donné par une distribution de Student.
Appliquer cette procédure à divers modèles différents - ne s'écartant pas trop du modèle adopté - pour évaluer sa couverture sur une gamme de niveaux de confiance.
50 %99,8 %
αp, puis
bûche( p1 - p) -journal( α1 - α)
capture bien la différence. Lorsqu'il est nul, la couverture correspond exactement à la valeur souhaitée. Lorsqu'il est négatif, la couverture est trop faible - ce qui signifie que l'IC est trop optimiste et sous-estime l'incertitude.
La question est alors de savoir comment ces taux d'erreur varient avec le niveau de confiance alors que le modèle sous-jacent est perturbé? Nous pouvons y répondre en traçant les résultats de la simulation. Ces graphiques quantifient à quel point «irréaliste» la «quasi-certitude» d'un IC pourrait être dans cette application archétypale.
( 1 / 30 , 1 / 30 )
α95 %3
α = 50 %50 %95 %5 % du temps, alors nous devrions être prêts à ce que notre taux d'erreur soit beaucoup plus élevé au cas où le monde ne fonctionnerait pas exactement comme le suppose notre modèle.
50 %50 %
C'est le R
code qui a produit les tracés. Il est facilement modifié pour étudier d'autres distributions, d'autres plages de confiance et d'autres procédures d'IC.
#
# 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)
}