Intervalos De Confianza

La probabilidad de que el parámetro esté en el intervalo de confianza es .95

Si dices lo anterior, corres el riesgo de que un estadístico gruñón frunza mucho el ceño.

Hace muchos, muchos años, las gentes ávidas de saber más acudieron al tabernáculo donde se congregaban los sapientísimos estadísticos frecuentistas implorándoles una herramienta con que estimar el error de sus estimaciones puntuales. Estos cavilaron luengamente y décadas después entregaron a los representantes de los hombres, reunidos en el ágora, unas tablas de piedra que tenían grabadas a cincel la teoría de los intervalos de confianza. Pero, les advirtieron, los intervalos de confianza no son lo que vosotros queréis sino otra cosa y a quien ose interpretarlos torcidamente le pasará lo que a aquella señora que comió la manzana inadecuada: será expulsado del paraíso de la teoría como Dios manda.

"Intervalos" de confianza con forma de rosquilla

Envalentonado por el comentario de Iñaki Úcar a mi entrada del otro día, que me remitía a este artículo, decidí rizar el rizo y crear intervalos de confianza no ya discontinuos sino con otra propiedad topológica imposible: homeomorfos con un toro.

Y aquí está:

El modelo, el código y demás,

library(rstan)
library(ggplot2)

n <- 100

a1 <- 1
a2 <- 1
sigma <- 0.4

datos <- data.frame(x1 = rnorm(n, 2, 0.1),
                    x2 = rnorm(n, 2, 0.1))

datos$y <- a1^datos$x1 + a2^datos$x2 + rnorm(n, 0, sigma)

codigo <- "
data {
  int<lower=1> N;
  real y[N];
  real x1[N];
  real x2[N];
}

parameters {
  real<lower=-3, upper="3"> a1;
  real<lower=-3, upper="3"> a2;
  real<lower=0, upper="3"> sigma;
}

model {
  for (n in 1:N)
    y[n] ~ normal(fabs(a1)^x1[n] +
      fabs(a2)^x2[n], sigma);
}"

fit <- stan(model_code = codigo,
    data = list(N = length(datos$y), y = datos$y,
                x1 = datos$x1, x2 = datos$x2),
    iter=40000, warmup=2000,
    chains=1, thin=10)

res <- as.data.frame(fit)

ggplot(res, aes(x = a1, y = a2)) + geom_point(alpha = 0.1)

De nuevo, no son intervalos propiamente dichos, lo convengo. Pero son configuraciones más fieles al espíritu de lo que un intervalo de confianza es y representa que su(s) letra(s) I N T E R V A L O.

"Intervalos" de confianza creativos que excluyen el 0

Es el de b:

(A ver cuál es el primero de mis excolegas que protesta que pinto la unión de dos intervalos de confianza y no un intervalo propiamente dicho).

Ahora un poco más en serio: esta entrada se me ocurrió mientras pensaba en las distintas opciones existentes para crear intervalos de confianza, desde las canónicas (simétricos, de longitud mínima) a cualquier otra elección de algo que contenga la debida cantidad de probabilidad.

Una pregunta sobre pruebas de hipótesis

Más que pregunta, debería haberlo planteado como encuesta: no estoy preguntando sino preguntándote qué es lo que haces tú (habitualmente).

Va de pruebas de hipótesis (a la Fisher). La teoría dice que hay que plantear una hipótesis nula y para poder estudiar lo anómalos que son los datos obtenidos experimentalmente bajo dicha hipótesis. Es decir, calculas $P(X | H_0)$.

Alternativamente (en muchos contextos, no en todos: no sabría cómo hacerlo, p.e., con el ks.test) uno puede echarle un vistazo a los intervalos de confianza del parámetro de interés y ver si incluye o no el valor de referencia.

Y termino con lo de los intervalos

Y termino con lo de los intervalos. Me refiero a esto y esto.

Nunca me habría atrevido a escribir sobre el tema, y exponerme, de paso, a la muy razonadas explicaciones de quienes tuvieron a bien comentarlas, si no hubiese sido por un tema personal: el recuerdo de la frustración que me supuso hacerme en su día con la teoría subyacente tanto a las pruebas de hipótesis como a la construcción de intervalos de confianza.

Otra vuelta al caso del test que rechaza y el intervalo que contiene

Esta visita adicional al tema es consecuencia de mi revisión de todo el asunto de las pruebas de hipótesis. En particular, en el caso de prueba binomial, como en esta entrada, de la que la que lees es continuación.

En particular,

binom.test(79, 100, 0.7)

# Exact binomial test
#
# data:  79 and 100
# number of successes = 79, number of trials = 100, p-value = 0.04982
# alternative hypothesis: true probability of success is not equal to 0.7
# 95 percent confidence interval:
#   0.6970846 0.8650563
# sample estimates:
#   probability of success
# 0.79

es un caso en el que la prueba rechaza (al nivel de confianza del 5% siempre) y el intervalo de confianza del parámetro cubre el valor 0.7 de partida.

El test rechaza pero el intervalo contiene: [contra]ejemplos

De acuerdo con el saber popular, pruebas que rechazan acompañan a intervalos de confianza que no contienen.

Pero

foo <- function(N, p = 0.7){
  n <- qbinom(0.975, N, p)
  tmp <- binom.test(n, N, p)
  c(tmp$p.value, tmp$conf.int,
    tmp$conf.int[1] < p & p < tmp$conf.int[2])
}

res <- as.data.frame(t(sapply(20:200, foo)))
res$n <- 20:200

res[res$V1 < 0.05,]

no tiene cero filas.