A veces se hacen encuestas sobre temas sobre los que los encuestados son reticentes a revelar la verdad (p.e., ¿es Vd. un zombi?). Un procedimiento conocido para recabar tal tipo de información es el siguiente:
- Se le invita al encuestado a tirar al aire una moneda con las caras etiquetadas con sí y no; la moneda no es una moneda porque tiene una probabidad conocida (y distinta del 50%) de caer en sí.
- El encuestado responde sí si la respuesta a la pregunta y el resultado de la tirada de la moneda coinciden y no en caso contrario.
A partir de la proporción de respuestas positivas y conocida la probabilidad del sí de la moneda, , es posible estimar la proporción
de respuestas positivas a la pregunta de subyacente de interés en la muestra. Efectivamente, los síes tienen una distribución binomial
y, una vez estimado (por máxima verosimilitud)
, puede despejarse
de
para obtener
Así,
Y todo es estupendo.
¿Y si queremos intervalos de confianza, etc., del parámetro estimado? Podemos muestrear una y ver cuál sería la distribución resultante de
:
Pero el procedimiento anterior tiene algunos caveats:
- La función
get.theta
es algo inestable: nada garantiza siquiera que dé valores positivos; de hecho, en algunas pruebas, me ha dado valores negativos en algunas ocasiones. - Ni siquiera yo entiendo demasiado bien por qué, a la hora de hacer simulaciones, muestreo
: ¿por qué
y no otro valor? Porque sé que la estimación de
está sujeta a error, etc.
- Hay gente que no sabría despejar
Afortunadamente, existe un procedimiento alternativo:
library(rstan) standat <- list(N = n, pcoin = coin.par, x = sum(results)) stanmodelcode <- ' data { int<lower=1> N; real pcoin; int x; } parameters { real<lower=0, upper = 1> theta; } model { // prior (no informativa) theta ~ beta(1,1); // verosimilitud x ~ binomial(N, theta*pcoin + (1-theta)*(1-pcoin)); } ' fit <- stan(model_code = stanmodelcode, data = standat, iter=12000, warmup=2000, chains=4, thin=10) tmp <- as.data.frame(fit) hist(tmp$theta)
Que genera
sin mayores complicaciones (ni teóricas ni prácticas). Además, como ventaja adicional, uno siempre puede incluir la información previamente conocida sobre la distribución de en el lugar correspondiente en el código anterior.