library(ggplot2)
library(patchwork)
01 - Los ositos de Pagani
Este script fue utilizado en la primer clase de práctica en el laboratorio para mostrar como resolver el ejercicio de los ositos utilizando código.
En base al prior elicitado grupalmente en clase:
# Determinar grilla de puntos
<- seq(0, 1, length.out = 11)
pi_grid print(pi_grid)
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
# Especificar prior
# Tenemos $100 y los dividimos en los diferentes valores de "pi"
<- c(0, 5, 20, 50, 20, 5, 0, 0, 0, 0, 0)
prior_ <- prior_ / sum(prior_)
prior
# Recolectar datos
<- 10 # n
cantidad_de_gomitas <- 6 # y
cantidad_de_gomitas_amarillas
# Calcular verosimilitud para cada valor de "pi" en la grilla
<- dbinom(
likelihood
cantidad_de_gomitas_amarillas,
cantidad_de_gomitas,
pi_grid
)
# Obtener posterior
<- prior * likelihood
posterior_ <- posterior_ / sum(posterior_) # normalización
posterior
# Graficar prior
<- data.frame(x = pi_grid, y = prior) |>
plt_prior ggplot() +
geom_segment(aes(x = x, xend = x, y = 0, yend = y), linewidth = 0.8) +
geom_point(aes(x = x, y = y), size = 2.4) +
scale_x_continuous(breaks = pi_grid) +
labs(
x = expression(pi),
y = expression(p ~ "(" ~ pi ~ ")"),
title = "Distribución a priori"
)
# Graficar verosimilitud
<- data.frame(x = pi_grid, y = likelihood) |>
plt_likelihood ggplot() +
geom_segment(aes(x = x, xend = x, y = 0, yend = y), linewidth = 0.8) +
geom_point(aes(x = x, y = y), size = 2.4) +
scale_x_continuous(breaks = pi_grid) +
labs(
x = expression(pi),
y = expression(p ~ "(y | " ~ pi ~ ")"),
title = "Función de verosimilitud"
)
# Graficar posterior
<- data.frame(x = pi_grid, y = posterior) |>
plt_posterior ggplot() +
geom_segment(aes(x = x, xend = x, y = 0, yend = y), linewidth = 0.8) +
geom_point(aes(x = x, y = y), size = 2.4) +
scale_x_continuous(breaks = pi_grid) +
labs(
x = expression(pi),
y = expression(p ~ "(" ~ pi ~ " | y)"),
title = "Distribución a posteriori"
)
# Concatenar graficos
| plt_likelihood | plt_posterior plt_prior
En base a un prior beta:
# Determinar grilla de puntos
<- seq(0, 1, length.out = 100)
pi_grid
# Obtener prior
<- dbeta(pi_grid, 3, 7)
prior_ <- prior_ / sum(prior_)
prior
# Calcular verosimilitud para cada valor de "pi"
<- dbinom(
likelihood
cantidad_de_gomitas_amarillas,
cantidad_de_gomitas,
pi_grid
)
# Obtener posterior
<- prior * likelihood
posterior_ <- posterior_ / sum(posterior_)
posterior
# Graficar prior
<- data.frame(x = pi_grid, y = prior) |>
plt_prior ggplot() +
geom_line(aes(x = x, y = y)) +
labs(
x = expression(pi),
y = expression(p ~ "(" ~ pi ~ ")"),
title = "Distribución a priori"
)
# Graficar verosimilitud
<- data.frame(x = pi_grid, y = likelihood) |>
plt_likelihood ggplot() +
geom_line(aes(x = x, y = y)) +
labs(
x = expression(pi),
y = expression(p ~ "(y | " ~ pi ~ ")"),
title = "Función de verosimilitud"
)
# Graficar posterior
<- data.frame(x = pi_grid, y = posterior) |>
plt_posterior ggplot() +
geom_line(aes(x = x, y = y)) +
labs(
x = expression(pi),
y = expression(p ~ "(" ~ pi ~ " | y)"),
title = "Distribución a posteriori"
)
# Concatenar graficos
| plt_likelihood | plt_posterior plt_prior
Preguntas
- ¿Qué pasa con el prior si incrementamos el \(n\)?
- ¿Qué pasa con el posterior si incrementamos el \(n\)?