diff --git a/notas/02-flujo-basico.qmd b/notas/02-flujo-basico.qmd index 0f64bb8..a2f3017 100644 --- a/notas/02-flujo-basico.qmd +++ b/notas/02-flujo-basico.qmd @@ -378,7 +378,7 @@ a lo largo de distintas muestras, cuando $N=30$: ```{r} simulacion_datos_tbl |> group_by(rep, theta_sim) |> - summarise(Npos = sum(Pos)) |> + summarise(Npos = sum(Pos), .groups = "drop") |> ggplot(aes(x = Npos)) + geom_bar() + labs(x = "Número de positivos", y = "Frecuencia (muestras)") @@ -399,7 +399,7 @@ muy baja: es probable que obtengamos 0 observaciones positivas. # Verificación predictiva a priori Con este tipo de verificaciones podemos detectar las consecuencias de -nuestros supuestos (incluyendo la elección de distribuciones a prior), así +nuestros supuestos (incluyendo la elección de distribuciones a priori), así como otras decisiones de modelado (como la discretización). Conflictos con el conocimiento del área deben ser explorados para entenderlos @@ -490,7 +490,7 @@ también es posible tomar algunos valores fijos de interés. - Veremos más de *chequeos o pruebas predictivas a priori*, que en general también sirven para entender la adecuación del modelo y supuestos en términos -de teoría y +de como coinciden o no datos generados con la teoría. ::: Este paso también es importante para entender si, bajo nuestros propios supuestos, @@ -515,6 +515,7 @@ ggplot(simulacion_rep, aes(x = theta, y = prob_posterior)) + geom_vline(aes(xintercept = theta_sim), color = "red", linetype = "dashed") + facet_wrap(~rep) ``` + Nuestra respuesta en este caso es que quizá con 3 personas la información obtenida no será suficiente para tomar decisiones útiles: nótese que la posterior está muy poco concentrada alrededor del verdadero valor de $\theta$. @@ -681,9 +682,10 @@ derecha, y dividir por el resultado. En general, escribiremos $$B(a,b) = \int_{0}^1 \theta^{a-1}(1-\theta)^{b-1} d\theta$$ así que en nuestro caso, la posterior es: -$$p(\theta|D) = \frac{1}{B(N_+ + 1,N_{-}+1)} \theta^{N_+}(1-\theta)^{N_-}$$ +$$p(\theta|D) = \frac{1}{B(N_{+} + 1,N_{-}+1)} \theta^{N_+}(1-\theta)^{N_-}$$ Es posible demostrar con cálculo que $B(a,b) = \frac{(a-1)!(b-1)!}{(a+b-1)!}$, -pero eso no es importante. Este tipo de densidades pertenecen a la **familia +pero eso no es importante ahora. Este tipo de densidades +pertenecen a la **familia beta** con parámetros $(a,b)$, donde $a>0, b>0$. Por ejemplo, si observamos 2 positivos y tres negativos, @@ -702,13 +704,13 @@ que no sea la uniforme. En este caso particular es *conveniente* (aunque no siempre tiene sentido) usar una distribución beta, de manera que es fácil ver que si ponemos por ejemplo -$$p(\theta) \propto \theta^{a}(1-\theta)^{b}$$ +$$p(\theta) \propto \theta^{a-1}(1-\theta)^{b-1}$$ entonces la posterior, por la fórmula de Bayes, es: -$$p(\theta|D) \propto \theta^{N_+ +a }(1-\theta)^{N_{-}+b}$$ +$$p(\theta|D) \propto \theta^{N_+ +a -1 }(1-\theta)^{N_{-}+b-1}$$ que también es de la familia beta, pero con parámetros -$(N_+ +a+1, N_- +b+1)$. +$(N_{+} +a, N_{-} +b)$. ### Ejercicio: actualizaciones de posterior @@ -727,7 +729,8 @@ datos_graf <- datos_sim |> mutate(muestra = accumulate(obs, ~ paste0(.x, .y))) |> group_by(n) |> mutate(dens_graf = - list(tibble(theta = theta_seq, densidad = dbeta(theta_seq, 1 + n_pos, 1 + n_neg)))) |> + list(tibble(theta = theta_seq, + densidad = dbeta(theta_seq, n_pos + 1, n_neg + 1)))) |> unnest(dens_graf) ggplot(datos_graf, aes(x=theta, y = densidad, group = n)) + geom_line() + @@ -753,7 +756,7 @@ datos_graf <- datos_sim |> group_by(n) |> mutate(dens_graf = list(tibble(theta = theta_seq, - densidad = dbeta(theta_seq, 1 + n_pos + 0, 1 + n_neg + 2)))) |> + densidad = dbeta(theta_seq, n_pos + 1, n_neg + 3)))) |> unnest(dens_graf) ggplot(datos_graf, aes(x=theta, y = densidad, group = n)) + geom_line() + @@ -908,7 +911,7 @@ sims_post |> sup = round(sup, 2)) ``` **Observación**: No hay un intervalo mágico que debe reportarse -(por ejemplo 95% de probabilida es una costumbre o superstición). Hay varias maneras +(por ejemplo 95% de probabilidad es una costumbre o superstición). Hay varias maneras de construir intervalos de probabilidad. Dejaremos esta discusión para más adelante. @@ -937,9 +940,10 @@ en los que la aproximación es mala. **Nota 2**: En nuestro caso, las integrales de interés usualmente son de la forma $$I = \int f(\theta)p(\theta|D) d\theta,$$ -donde $D$ es la información de la muestra, $\theta$ es un vector de parámetros +donde $D$ es la información de la muestra, $\theta$ en general +es un vector de parámetros del modelo, y $f(\theta)$ es una función de $\theta$ que nos interesa. Por ejemplo, -para la media posterior de $\theta_i$, usaríamos $f(\theta) = \theta_i$. Podemos +para la media posterior de $\theta$, usaríamos $f(\theta) = \theta$. Podemos aproximar cualquier integral si tenemos simulaciones de la posterior: $$\theta_i \sim p(\theta|D) \implies \frac{1}{M} \sum_{i=1}^{M} f(\theta_i) \to I.$$ @@ -952,7 +956,7 @@ de la posterior. En este caso, el proceso es como sigue: 1. Generamos un valor de la apriori $\theta_{sim} \sim \text{Beta}(1,3)$ 2. Simulamos datos de la muestra ($N=25$) con el valor simulado de $\theta$ -3. Simulamos 10000 valores de la posterior +3. Simulamos un número grande $M$ de valores de la posterior (aquí usaremos $M=10000$) 4. Repetimos 1-3 @@ -973,6 +977,11 @@ simulacion_rep <- map_df(1:20, mutate(rep = rep) |> mutate(theta_sim = theta_sim) }) +simular_posterior <- function(muestra, n){ + tibble(theta = + rbeta(n, sum(muestra) + 1, + length(muestra) - sum(muestra) + 3)) +} ``` Ahora usamos histogramas por ejemplo para mostrar cómo luce la posterior, @@ -1002,7 +1011,23 @@ la inferencia (verificación apriori) es correcta bajo nuestros supuestos. arriba están resueltos, para tener confianza en nuestras conclusiones. -## Ventajas y desventajas de métodos bayesianos +### Resumen + +Aquí juntamos algunas observaciones que se derivan de lo que hemos +visto (flujo de trabajo y estimación bayesiana): + +1. Todo nuestro trabajo está fundamentado en entender qué es lo +que queremos estimar dentro de un modelo generativo. Los diagramas +causales nos ayudan a conectar el problema de interés con nuestros modelos, a construir modelos generativos y hacer explícitos +nuestros supuestos. + +2. El proceso de estimación siempre es el mismo: nuestro estimador es +la distribución posterior, que se construye a partir de la verosimilitud y la apriori (modelo generativo). Nuestro estimador es la posterior de las cantidades de interés, que pueden resumirse de distintas maneras. Cualquier cálculo derivado de otras cantidades de interés debe considerar toda la posterior (no solo la media o la moda, etc. posterior). + +3. Nuestro proceso incluye los chequeos predictivos a priori (basados en simulación de datos). Esto son cruciales para detectar problemas en +nuestros supuestos (vs teoría) y que nuestro proceso sea internamente consistente. Esto también es una verificación de la información a priori. + +4. Generalmente es más conveniente y práctico hacer simulaciones que calcular analíticamente la posterior o sus integrales.