library(fivethirtyeight)
library(dplyr)
data("wwc_2019_matches")
<- wwc_2019_matches %>%
d mutate(total = score1 + score2) %>%
select(total)
Guías de problemas
Guía 1: Teorema de Bayes y modelo Beta-Binomial
Recomiendo hacer, además de estos, los ejercicios de los capítulos 1 a 3 del libro Bayes Rules!.
Supongamos que queremos averiguar cuál es la superficie de la Tierra cubierta por agua, \(\theta\). Para eso, lanzamos al aire un globo terráqueo y al atraparlo, registramos si nuestro dedo índice de la mano derecha quedó marcando agua o tierra. De esta manera obtenemos una secuencia de muestras aleatorias de una variable \(\text{Bernoulli}(\theta)\) independientes.
- Con ese procedimiento se obtienen 4 “agua” (A) y 11 “tierra” (T). Usando un prior uniforme para \(\theta\), obtener la distribución posterior para \(\theta\).
- Usando la distribución posterior calculada, obtener la distribución “posterior predictive” para las siguiente 5 muestras aleatorias
- Usar la distribución “posterior predictive” para calcular la probabilidad de obtener 3 o más A en las siguiente 5 realizaciones.
Siguiente el procedimiento del ejercicio anterior y partiendo de una distribución uniforme, graficar la distribución posterior luego de observar A. Luego, usando esa distribución posterior como prior, calcular y graficar la distribición posterior luego de observar T. Continuar este proceso para ver cómo se actualiza secuencialmente la distribución posterior cuando sucesivamente obtenemos (después de las dos primeras muestras aleatorias) {A, A, A, T, A, T, A}.
Repetir el ejercicio 2 pero partir de un prior triangular, con máximo en \(\theta = 0.5\). Para hacerlo, hacer una aproximación de grilla para calcular la posterior. Esto es:
- Definir un vector de valores de \(\theta\) en los cuales se quiere estimar la posterior.
- Calcular el prior para cada valor \(\theta\) en esa grilla.
- Calcular la función de likelihood para valor del parámetro.
- Calcular la posterior no normalizada multiplicando el prior por el likelihood.
- Normalizar la posterior dividiendo por la suma de todos sus valores.
Crear una función que genere \(N\) datos del proceso aleatorio descripto en el ejercicio 1 tomando como parámetros \(N\) y \(\theta\). Crear otra función que calcule la distribución posterior partiendo de un prior uniforme, genere muestras de esta distribución y con esas muestras devuelva un intervalo de credibilidad del 50% \(\theta\). Con esta función, estimar el número mínimo de muestras aleatorias que se necesitan para estimar \(\theta\) con un intervalo de credibilidad de ancho menor a 0.1.
Supongamos que estamos de espaldas a una mesa de pool separada en dos por una línea vertical. Juan y Alicia participan del siguiente juego. Tiran una pelota a la mesa que cae en un punto cualquiera, al azar. Si cae a la izquierda de la línea, Alicia gana 1 punto. Si cae a la derecha, Juan gana 1 punto. Gana el primero que llega a 6 puntos. Después de tirar 8 bolas, Alicia suma 5 puntos y Juan 3.
- Calcular la distribución posterior para la probabilidad \(\theta\) de que Juan gane el juego.
- Tomar muestras de la posterior y con ellas obtener la esperanza de \(\theta\). Comparar con el resultado visto en clase.
- Simular este juego para obtener la probabilidad esperada de que gana Juan el juego, entendida como la cantidad de veces que gana Juan el juego condicional a que va perdiendo 5 a 3.
Guía 2: Familias conjugadas
Se observa la realización de \(n\) variables aleatorias Poisson independientes de parámetro \(\lambda\). Escribir y graficar la función de Likelihood \(L(\lambda)\) para cada caso:
- \((y_1,y_2,y_3) = (3, 7 ,19)\).
- \((y_1,y_2,y_3,y_4) = (12, 12 ,12, 0)\).
- \(y_1 = 12\).
- \((y_1,y_2,y_3,y_4,y_5) = (16, 10 ,17, 11, 11)\).
Suponiendo un prior \(\lambda \sim \text{Gamma}(24,2)\), especificar y graficar la distribución posterior para \(\lambda\) correspondiente a cada escenario del ejercicio anterior.
Repetir el ejercicio anterior suponiendo un prior \(\lambda \sim \text{Gamma}(2,2)\)
Supongamos que uno tiene una variable aleatoria \(Y\) que puede modelar con una distribución geométrica. Es decir que \(P(Y=y \mid \theta) = \theta ~ (1-\theta)^{y-1}\) para \(y \in \{1, 2, 3, ...\}\). Se utiliza un prior \(Beta(a,b)\) para \(\theta\).
- ¿Qué situación se representa con una variable aleatoria geométrica?
- Derivar la distribución posterior para \(\theta\) suponiendo que se observó \(Y=y\). Identificar la distribución encontrada y sus parámetros.
- El modelo Beta es un prior conjugado de la Geométrica?
Supongamos que \(\lambda\) es el promedio del número total de goles por partido del mundial de fútbol femenino. En este ejercicio vamos a analizar \(\lambda\) usando el modelo Gamma-Poisson donde \(Y_i\) es el número de goles que se hicieron en un partido \(i\) del Mundial. Es decir que \(P(Y_i \mid \lambda) = \text{Pois}(\lambda)\). Como prior, tomar: \(P(\lambda) = \text{Gamma}(1, 0.25)\).
- Graficar el conocimiento previo sobre \(\lambda\).
- ¿Por qué el modelo Poisson es razonable para Y_i?
- Escribir la distribución posterior para \(\lambda\) suponiendo que en los primeros tres partidos se meten \((y_1,y_2,y_3) = (3, 7 ,4)\) goles.
- Ahora usando datos reales, graficar la evolución (partido a partido) del conocimiento sobre \(\lambda\). Los datos se pueden obtener
Guía 3: Simulaciones y muestreo de la posterior
Simular 10000 datos de una distribución Beta(3,7). Graficar un histograma de los datos y la distribución teórica superpuesta. Dar tres medidas de resumen de la distribución usando los datos simulados.
Repetir el ejercicio 1 para la distribución Gamma(4,2) y para la Normal(4,1).
Supongamos que tomaron datos \(y\) y con un modelo bayesiano llegaron a que la distribución posterior para la probabilidad de que respondan un mail dentro de las 24 horas, \(\theta\), es Beta(2,5). Les llega un nuevo mail. ¿Cuál es la probabilidad de que lo respondan en menos de 24 horas? Es decir, se pide \(P(\tilde y = 1 \mid y)\), la posterior predictive. Resolverlo de dos formas:
- Calculando analíticamente \(P(\tilde y = 1 \mid y)\).
- Simulando datos. Para esto:
- Generar 10000 valores simulados del parámetro \(\theta\) usando la distribución posterior.
- Para cada valor del parámetro \(\theta_i\), simular un \(y_i\) predicho.
- ¿Cuál es la frecuencia de \(y=1\) entre los predichos? ¿Coincide con lo calculado en a?.
Supongamos que quieren saber si los mails que reciben los lunes los responden más rápido que los que reciben los sábados. Con datos que recolectan de su propia experiencia llegan a que la distribución posterior para \(\theta_L\) es Beta(3,7) (correspondiente a mails que llegan los lunes) y \(\theta_S\) es Beta(4,8) para los que llegan los sábados. Para responder la pregunta simulando, sigan estos pasos:
- Simular 10000 valores de \(\theta_L\) y \(\theta_S\).
- Calcular, para cada para de valores \(\theta_L(i)\) y \(\theta_S(i)\), la diferencia \(\delta_i = \theta_L(i) - \theta_S(i)\).
- Usar las muestras aleatorias \(\delta_i\) para responder la pregunta. Por ejemplo, preguntarse por la probabilidad de que esa diferencia sea positiva.
Un jardín botánico tiene tres especies de árboles, A, B y C. El 18% del total de los árboles está infectado con un plaga. Entre los infectados, 15% son A, 80% son B y 5% son C. Entre los no infectados 20% son A, 10% son B y 70% son C. Para monitorear el avance de la plaga, un empleado se acerca a un árbol cualquiera para examinarlo. Para resolver este ejercicio, simular datos de 10000 árboles.
- Cuál es la probabilidad de que el árbol esté infectado (prior)?
- Si resulta que el árbol seleccionado es de la especie B. ¿Qué probabilidad tenía de haber seleccionado uno de esa especie?
- Cuál es la probabilidad posterior de que el árbol seleccionado, de la especie B, esté infectado?
- Comparar la probabilidad a priori de que el árbol esté infectado con la probabilidad posterior (luego de saber que el árbol seleccionado es de la especie B)?
- Comparar los resultados de las simulaciones con el resultado exacto usando la regla de Bayes.
Implementar el algoritmo de Metropolis-Hastings para conseguir muestras de una distribución \(\text{Normal}(\mu=0.4, \sigma=0.6)\). Construir una función que tome como argumento el largo de la cadena (número de muestras), el valor inicial y algún parámetro necesario de la función de propuesta.
(BayesRules 7.15) Identificar una pregunta que se pueda responder con un modelo Beta-Binomial para la probabilidad \(\theta\) de que ocurra algo. Por ejemplo: proporción de colectivos que vienen llenos cuando vienen a Exactas, etc.
- Proponer un prior para \(\theta\).
- Juntar datos (de verdad o inventados).
- Simular 2000 valores de \(\theta\) obtenidos con el algoritmo de Metropolis-Hastings.
- Graficar la cadena resultante (secuencia de muestras). ¿Están satisfechos con el resultado? ¿A qué hay que estar atentos para aceptar las muestras?
(BayesRules 7.16) Identificar una pregunta que se pueda responder con un modelo Normal para \(\mu\), un valor medio de interés. Por ejemplo: la temperatura máxima promedio en Otoño en Buenos Aires, el tiempo medio de uso de celular diario, etc.
- Proponer un prior para \(\mu\).
- Juntar datos (de verdad o inventados).
- Simular 2000 valores de \(\mu\) obtenidos con el algoritmo de Metropolis-Hastings. Usar \(\sigma\) fijo.
- Graficar la cadena resultante (secuencia de muestras). ¿Están satisfechos con el resultado? ¿A qué hay que estar atentos para aceptar las muestras?
Guía 4: Modelo lineal - Introducción a brms
- Para el siguiente modelo, simular observaciones \(y_{obs}\) con el prior
\[ y \sim \text{Normal}(\mu, \sigma) \\ \mu = \text{Normal}(0,10) \\ \sigma = \text{Exponencial}(1) \]
Escribir el modelo del ejercicio 1 en
brms
.Traducir el siguiente modelo (en sintaxis de
brms
) matemáticamente>
= gaussian,
family ~ 1 + x,
y = c(prior(normal(0, 10), class = Intercept),
prior prior(normal(0, 10), class = b),
prior(exp(1), class = sigma))
Supongamos que se mide la altura de un grupo de chicos durante tres años. Al cabo de los tres años, se quiere usar un modelo lineal para predecir la altura usando el año como predictora. Escribir la definición matemática para este modelo de regresión, usando los priors que quiera (pero esté preparado para defender la elección de priors.)
Usando el dataset de alturas
Howell1
que viene con el paqueterethinking
, dar una predicción para la altura de individuos que pesan 46.95, 43.72, 64.78, 32.59 y 54.63 Kg. Dar también un intervalo de credibilidad del 95% para estas predicciones.Del mismo dataset, seleccionar sólo los individuos que tienen menos de 18 años. Ajustar con
brms
un modelo de regresión lineal para la altura teniendo como explicativa al peso de los individuos. Graficar los datos y la recta obtenida con los valores medios de la posterior y un intervalo de credibilidad para esos valores. También graficar un intervalo de credibilidad para la altura predicha por el modelo. Todo en el mismo gráfico. ¿Te parece adecuado el modelo? ¿Qué aspectos podrías cambiar para mejorar el modelo?
Guía 5: Regresiones
Usando el dataset
penguins
del paquetepalmerpenguins
, estudiar la relación entre el largo de las aletas de los pinguinos (flipper_length
) y su peso (body_mass_g
).- Proponer un modelo en el que el peso tiene una distribución normal con parámetros \(\mu\) y \(\sigma\), donde \(\mu\) se basa en el largo de las aletas.
- Correr el modelo en STAN usando
brms
orstanarm
, eligiendo priors para los parámetros o usando los priors default. - Diagnosticar las cadenas de muestras de las posteriores para cada parámetro usando el número efectivo de muestras (\(n_{eff}\)) y \(\hat{R}\).
- Encontrar la distribución posterior para el peso esperado de un pinguino que tiene una aleta de largo 200 mm. Graficarla y dar medidas resumen.
- Hacer 500 predicciones del peso de un pinguino con una aleta de largo 200 mm. Graficar la distribución de estos pesos predichos y comparar con el resultado del ítem anterior. ¿A qué se debe la diferencia?
- Graficar 100 rectas correspondientes al peso esperado de pinguinos con una aleta de largo entre 150 mm y 250 mm. Hacer lo mismo para el peso predicho por el modelo.
Proponer un modelo de regresión logística para clasificar a un pinguino como de la especie Gentoo usando como variable predictora al largo del pico (
bill_length
).- Correr el modelo y extraer la probabilidad de que un pinguino sea Gentoo si su pico tiene largo 40 mm. (Ayuda: se puede usar la función
posterior_linpred(transform = TRUE)
). - Graficar la probabilidad de que un pinguino sea Gentoo en función del largo del pico.
- Correr el modelo y extraer la probabilidad de que un pinguino sea Gentoo si su pico tiene largo 40 mm. (Ayuda: se puede usar la función
Se quiere entender la relación entre el cociente de ancho y largo del pico (\(r\), variable respuesta) y el largo de la aleta (variable explicativa). Proponga un modelo (tenga en cuenta el rango posible de valores de \(r\) para elegir la distribución de la variable respuesta). Ajustar el modelo y graficar los valores de \(r\) predichos por el modelo para un rango de valores para el largo de la aleta entre 170 mm y 240 mm.