Introduccion a la probabilidad bayesiana

Definicion

Un letrero de neón que muestra el enunciado del teorema de Bayes

El teorema de Bayes, en la teoría de la probabilidad, es una proposición planteada por el matemático inglés Thomas Bayes (1702-1761)1y publicada póstumamente en 1763,2 que expresa

la probabilidad condicional de un evento aleatorio A dado B

en términos de la distribución de probabilidad condicional del evento B dado A y la distribución de probabilidad marginal de solo A

Es decir, por ejemplo, que sabiendo la probabilidad de tener un dolor de cabeza dado que se tiene gripe, se podría saber (si se tiene algún dato más), la probabilidad de tener gripe si se tiene un dolor de cabeza. Muestra este sencillo ejemplo la alta relevancia del teorema en cuestión para la ciencia en todas sus ramas, puesto que tiene vinculación íntima con la comprensión de la probabilidad de aspectos causales dados los efectos observados.

Formula

La formula del teorema de bayes toma la siguiente forma:

Aplicaciones

El teorema de Bayes es válido en todas las aplicaciones de la teoría de la probabilidad. Sin embargo, hay una controversia sobre el tipo de probabilidades que emplea. En esencia, los seguidores de la estadística tradicional solo admiten probabilidades basadas en experimentos repetibles y que tengan una confirmación empírica mientras que los llamados estadísticos bayesianos permiten probabilidades subjetivas. El teorema puede servir entonces para indicar cómo debemos modificar nuestras probabilidades subjetivas cuando recibimos información adicional de un experimento. La estadística bayesiana está demostrando su utilidad en ciertas estimaciones basadas en el conocimiento subjetivo a priori y el hecho de permitir revisar esas estimaciones en función de la evidencia empírica es lo que está abriendo nuevas formas de hacer conocimiento. Una aplicación de esto son los clasificadores bayesianos que son frecuentemente usados en implementaciones de filtros de correo basura o spam, que se adaptan con el uso. Otra aplicación se encuentra en la fusión de datos, combinando información expresada en términos de densidad de probabilidad proveniente de distintos sensores.

Epistemiologia bayesiana

La epistemología bayesiana es un enfoque formal para varios temas de la epistemología que tiene sus raíces en el trabajo de Thomas Bayes en el campo de la teoría de la probabilidad.1 Una ventaja de su método formal en contraste con la epistemología tradicional es que sus conceptos y teoremas pueden definirse con un alto grado de precisión. Se basa en la idea de que las creencias pueden interpretarse como probabilidades subjetivas. Como tales, están sujetas a las leyes de la teoría de la probabilidad, que actúan como normas de racionalidad. Estas normas pueden dividirse en condiciones estáticas, que rigen la racionalidad de las creencias en cualquier momento, y condiciones dinámicas, que rigen cómo los agentes racionales deben cambiar sus creencias al recibir nueva evidencia.

Ejercicios de Bayes

1.- Ejercicio de probabilidad condicionada de una moneda

Lanzamiento de una moneda 10 veces, calcular la probabilidad de que caiga 0 (cara)

tabla <- sample(0:1,10, replace = TRUE)
print(tabla)
##  [1] 0 1 1 1 1 1 0 1 1 0

Conteo de frecuencias

prop.table(table(tabla))
## tabla
##   0   1 
## 0.3 0.7

Que pasa si se repite el experimento, pero aumentando el numero de repeticiones (probabilidad frecuentista)

lanza_moneda=function(n) {
  tabla = sample(0:1,n, replace = TRUE)
  p=prop.table(table(tabla))
  return(p[1])
}

lanza_moneda(10)
##   0 
## 0.4

Ejercio de analisis bayesiano

A priori y a posteriori

Las locuciones latinas a priori1 (‘previo a’)2 y a posteriori1posterior a’) se utilizan para distinguir entre dos tipos de conocimiento: el conocimiento a priori es aquel que, en algún sentido importante, es independiente de la experiencia;4 mientras que el conocimiento a posteriori es aquel que, en algún sentido importante, depende de la experiencia.

Por ejemplo, el conocimiento de que «no todos los cisnes son blancos» es un caso de conocimiento a posteriori, pues se requirió de la observación de cisnes negros para afirmar lo establecido. Los juicios a posteriori se verifican recurriendo a la experiencia, son juicios empíricos, se refieren a hechos. Tienen una validez particular y contingente. Ejemplos: «los alumnos de filosofía son aplicados» o «los ancianos son tranquilos».

En cambio, el conocimiento de que «ningún soltero es casado» no requiere de ninguna investigación para ser establecido como verdadero, por lo que es un caso de conocimiento a priori. Parece razonable afirmar que todo el mundo sabe que eso es cierto. Incluso diríamos que es obvio. ¿De dónde proviene la justificación para ese conocimiento? Está claro que no viene de haber preguntado a cada soltero si es casado. Más bien, parece que basta con comprender el significado de los términos involucrados, para convencerse de que la proposición es verdadera.

Logica de bayes

Los análisis Bayesianos son similares a los de máxima verosimilitud en el sentido que dependen explícitamente de modelos probabilísticos para los datos. Es decir, tenemos que definir un modelo de datos. La gran diferencia es que con Bayes, podemos obtener distribuciones de probabilidades para todas las cantidades no observadas, incluyendo parámetros, valores perdidos o nuevas observaciones que todavía no hemos hecho. De esta manera, los análisis Bayesianos nos permiten cuantificar incertidumbre y armar modelos realistas que tienen en cuenta por ejemplo observaciones imperfectas.

Como vimos en la teórica, la regla de Bayes planteada en términos de datos y parámetros es:

\[ p(\boldsymbol{\theta} \lvert \boldsymbol{y}) = \frac{p(\boldsymbol{y} \lvert \boldsymbol{\theta}) p(\boldsymbol{\theta)}}{\int p(\boldsymbol{y} \lvert \boldsymbol{\theta)} p(\boldsymbol{\theta)} d \boldsymbol{\theta} } \]

Es decir que la probabilidad posterior de los parámetros θ dado que observamos los datos y es igual al likelihood multiplicado por las previas y dividido por la probabilidad total de los datos. La función de likelihood nos da la probabilidad de observar los datos condicional al valor de los parámetros p(y|θ) . La previa de los parámetros p(θ) refleja los posibles valores de los parámetros de acuerdo con nuestras “creencias” previas, o los resultados de estudios anteriores, o lo que nos parece que tiene sentido para el sistema de estudio (en definitiva, en base a información previa). Finalmente, la probabilidad total de los datos se obtiene integrando la función de lilkelihood sobre los posibles valores de los parámetros que define la previa. Como veremos más adelante, los análisis Bayesianos combinados con métodos numéricos permiten analizar modelos con muchos parámetros, niveles de variabilidad y variables “ocultas”, pero primero vamos a empezar por casos simples donde podemos calcular las posteriores directamente.

Para entender bien cómo es todo el proceso, vamos a simular los datos. Imaginen que queremos estudiar la remoción de frutos en 10 plantas. En cada una de las plantas marcamos 20 frutos y contamos cuántos son removidos por dispersores luego de un tiempo fijo. Si suponemos que un buen modelo para este tipo de datos es una distribución Binomial con una probabilidad de éxito fija hacemos:

set.seed(1234)
nobs <- 30 # Numero de observaciones (Plantas)
frutos <- rep(20, nobs) #frutos disponibles en cada una de las plantas
p_rem <- 0.2 #Probabiliad de remocion por fruto 
removidos <- rbinom(nobs, size=frutos, prob = p_rem) #Este es un valor posterior dado que sale de un experimento aleatorio, y entonces esta fudamentado en el fenomeno, aunque simulado nos sirve 

El modelo de datos (cuántos frutos son removidos) es una Binomial con número de pruebas (la cantidad de frutos disponibles) conocido. Para hacer un análisis Bayesiano de estos datos, tenemos que definir una previa para la probabilidad de éxito (p_rem). Esa previa tiene que tomar valores continuos entre 0 y 1 . Una opción sería una distribución uniforme con esos límites, pero si usamos una distribución Beta, es posible obtener un resultado analítico para la posterior. En este caso, la posterior es otra distribución Beta pero con sus parámetros actualizados en base a las observaciones. Se dice entonces que la distribución Beta es la conjugada de la Binomial. Si la previa de la tasa de remoción por fruto es una distribución Beta con parámetros α y β , actualizamos los valores de α y β en base a la cantidad de éxitos y fracasos obervados.

La posterior de la tasa de remoción por fruto es entonces una Beta con \(\alpha = \sum y\), \(\beta = \sum (n-y)\) donde y representa a los frutos removidos de los n disponibles. Veamos como hacer esto en R.

alpha <- 1
beta <- 1

alpha_p <- alpha + sum(removidos)
beta_p <- beta + sum(frutos - removidos)

Ahora, para obtener el valor de la distribucion beta hacemos lo siguiente:

alpha_p/(alpha_p + beta_p)
## [1] 0.1877076

Eso nos da un estimador puntual de la probabilidad de remoción por fruto p_rem. Para tener una medida de incertidumbre alrededor de este valor, podemos ver los cuantiles de la posterior

qbeta(c(0.025, 0.975), alpha_p, beta_p)
## [1] 0.1575462 0.2198340

También podemos graficar la distribución posterior y compararla con la previa para ver cuánto aprendimos haciendo el análisis.

op <- par(cex.lab = 1.5, font.lab = 2, cex.axis = 1.3, las = 1, bty = "n")
curve(dbeta(x, alpha + sum(removidos), beta + sum(frutos - removidos)), lwd = 2, 
    ylab = "Densidad de probabilidad", xlab = "Probabilidad de remoción")
curve(dbeta(x, 1, 1), lwd = 2, col = "gray", add = TRUE)
text(0.6, 2.5, "previa")
text(0.35, 12, "posterior")

par(op)

¿Cómo sabemos si estas estimaciones tienen sentido para nuestros datos? En este caso, la pregunta es trivial porque conocemos cómo se generaron los datos, pero cuando trabajamos con datos de verdad, el modelo de datos es un supuesto y tenemos que ver si ese supuesto tiene sentido.

Una opción para contestar esa pregunta es hacer simulaciones a partir de la posterior y compararlas con los datos.

nreps <- 10000
vals <- 0:20  # posibles valores de remoción
res <- matrix(NA, nreps, length(vals) - 1)  # matriz para resultados
p_sim <- rbeta(nreps, alpha_p, beta_p)  # muestra aleatoria de la posterior

for (i in 1:nreps) {
    tmp <- rbinom(nobs, frutos, p_sim[i])
    res[i, ] <- hist(tmp, right = FALSE, breaks = vals, plot = FALSE)$density
}

plot(table(removidos)/nobs, xlim = c(0, 10), ylim = c(0, 0.6), ylab = "frecuencia", 
    type = "p", pch = 19)
library(coda)
ci <- HPDinterval(as.mcmc(res))
lines(0:19, ci[, 2])
lines(0:19, ci[, 1])