Me ha llegado noticia de una entrada en un blog, Visualizing Bayesian Updating, en el que se muestra visualmente cómo se actualiza la distribución a posteriori conforme aumenta el número de ensayos en un problema bayesiano simple. Explica también los fundamentos estadísticos del asunto.
Yo me limitaré a ofrecer una nueva versión del código —que no funcionaba copiando y pegando sin más— en el que he introducido ciertas modificaciones. Es el siguiente:
sim.bayes <- function(p=0.5, N=10, y.lim=15) { plot( 1, xlim = c(0,1), ylim = c(0, y.lim), xlab = 'p', ylab = 'Posterior Density', type = "n" ) legend('topright', legend=c('Prior','Updated Posteriors','Final Posterior'), lty=c(2,1,1),col=c('black','black','red')) exitos <- cumsum( rbinom( N, 1, p ) ) foo <- function( exitos, n.pruebas, col = "black", lwd = 1, lty = 1 ){ curve( dbeta( x, exitos + 1, n.pruebas - exitos + 1 ), add = TRUE, col = col, lwd = lwd, lty = lty ) print( paste(exitos, "éxitos y ", n.pruebas - exitos, "fracasos") ) } foo( 0, 0, lty = 2 ) mapply( foo, exitos, 1:N ) foo( exitos[N], N, col='red', lwd = 2 ) } sim.bayes(p = 0.6, N = 20, y.lim = 5)
Quiero pensar que mis lectores encontrarán útil el ejemplo de uso de la función mapply
(para recorrer dos vectores simultáneamente), curve
(para representar gráficamente funciones).