Código
library(ggplot2)
custom_theme <- function() {
theme_bw() +
theme(
panel.grid.minor = element_blank(),
panel.grid.major = element_blank()
)
}
theme_set(custom_theme())Recursos
Este programa obtiene la distribución a posteriori para los diferentes casos del ejercicio ¿Quién domina el posterior? de la Práctica 2.
Creamos dos funciones para simplificar los bloques de código en cada caso. La primera, generar_datos(), recibe una grilla para \(\pi\), los valores de \(p(\pi)\), \(p(y \mid \pi)\) y \(p(\pi, \mid y)\) en cada valor de la grilla, y devuelve un data.frame que permite graficar las 3 curvas con {ggplot2}. La segunda, generar_grafico(), simplemente toma el data.frame generado por generar_datos() y produce la visualización.
grid_n <- 200
pi_grid <- seq(0, 1, length.out = grid_n)
generar_datos <- function(pi_grid, pi_prior, pi_likelihood, pi_posterior) {
grid_n <- length(pi_grid)
datos <- data.frame(
x = rep(pi_grid, times = 3),
y = c(pi_prior, pi_likelihood, pi_posterior),
1 grupo = factor(
rep(c("prior", "likelihood", "posterior"), each = grid_n),
levels = c("prior", "likelihood", "posterior"),
ordered = TRUE
)
)
return(datos)
}
generar_grafico <- function(datos) {
colores <- c("#f08533", "#3b78b0", "#d1352c")
plt <- ggplot(datos) +
geom_line(aes(x = x, y = y, color = grupo), linewidth = 1) +
scale_color_manual(values = colores) +
labs(x = expression(pi), y = NULL) +
facet_wrap(~ grupo, scales = "free_y") +
theme(
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
legend.position = "none"
)
return(plt)
}factor() ordenado para indicarle a {ggplot2} que primero se ubica el prior, luego el likelihood, y finalmente el posterior.
Caso i

Caso ii

Caso iii

Caso iv

Caso v