Conceptos Bayesianos
Interpretación de Bayes
Estimación de Bayes
El objetivo aquí es comprender cómo funciona la inferencia bayesiana mediante la actualización de creencias a medida que se observa nueva evidencia.
La Filosofía de la Inferencia Bayesiana
En su libro Bayesian Methods for Hackers, un buen ebook gratuito, que proporciona una introducción práctica al uso de PyMC, su autor Davidson-Pilon,
explica de manera brillante los conceptos de la estadística bayesiana y comienza de la siguiente manera:
Eres un programador hábil, pero aún así los errores se cuelan en tu código. Después de implementar un algoritmo particularmente difícil, decides probarlo con un ejemplo trivial. Funciona. Lo pruebas con un problema más complejo. También funciona. E incluso supera la siguiente prueba, aún más difícil. Empiezas a creer que quizás no haya errores en tu código...
Si piensas de esta manera, ¡felicitaciones, ya estás pensando como un bayesiano! La inferencia bayesiana consiste en actualizar tus creencias tras considerar nueva evidencia. Un bayesiano rara vez puede estar absolutamente seguro de un resultado, pero puede estar muy confiado. Como en el ejemplo anterior, nunca podemos estar 100% seguros de que nuestro código está libre de errores, a menos que lo probemos con todos los posibles problemas, algo casi imposible en la práctica. En cambio, podemos probarlo con una gran cantidad de problemas y, si tiene éxito, podemos sentirnos más confiados, aunque no completamente seguros. La inferencia bayesiana funciona de manera similar: actualizamos nuestras creencias sobre un resultado; rara vez podemos estar absolutamente seguros, a menos que descartemos todas las demás alternativas.
La mentalidad bayesiana
La inferencia bayesiana difiere de la inferencia estadística más tradicional al mantener la incertidumbre. Al principio, esto puede parecer una mala técnica estadística. ¿No se trata la estadística de derivar certezas a partir del azar? Para reconciliar esto, necesitamos empezar a pensar como bayesianos.
El punto de vista bayesiano interpreta la probabilidad como una medida de credibilidad en un evento, es decir, cuán confiados estamos de que ocurra. De hecho, veremos en un momento que esta es la interpretación más natural de la probabilidad.
Dos interpretaciones de la probabilidad
1. Enfoque frecuentista
La interpretación clásica de la probabilidad, adoptada por los frecuentistas, asume que la probabilidad es la frecuencia a largo plazo de un evento. Por ejemplo, bajo esta filosofía, la probabilidad de accidentes de avión se interpreta como la frecuencia a largo plazo de dichos accidentes. Esto tiene sentido lógico para muchos eventos, pero resulta más difícil de entender en casos donde no hay una frecuencia a largo plazo. Por ejemplo: asignamos probabilidades a los resultados de elecciones presidenciales, ¡pero una elección solo ocurre una vez! Los frecuentistas eluden esto invocando realidades alternativas y argumentan que la frecuencia en todos estos escenarios define la probabilidad.
2. Enfoque bayesiano
Los bayesianos tienen un enfoque más intuitivo. Para ellos, la probabilidad es una medida de creencia o confianza en que ocurra un evento. En términos simples, una probabilidad resume una opinión. Una persona que asigna una probabilidad de 0 a un evento no tiene confianza en que ocurra; asignar una probabilidad de 1 implica certeza absoluta. Las creencias entre 0 y 1 permiten considerar otros resultados posibles. Este enfoque también concuerda con el ejemplo de los accidentes de avión: al observar su frecuencia, una creencia debería ser igual a esa frecuencia, excluyendo información externa. De manera similar, esta definición permite hablar de probabilidades en resultados de elecciones presidenciales: ¿qué tan confiado estás de que el candidato A ganará?
Diferencias entre creencias individuales y probabilidades
En el enfoque bayesiano, las probabilidades están ligadas al individuo, no a la naturaleza. Esto permite que existan creencias diferentes entre personas, lo cual refleja lo que ocurre naturalmente: distintas personas tienen creencias diferentes porque poseen información diferente sobre el mundo. Ejemplos de cómo las creencias individuales afectan las probabilidades:
Lanzas una moneda y ambos intentamos adivinar el resultado. Si asumimos que la moneda es justa, acordaremos que la probabilidad de "cara" es 1/2. Sin embargo, si yo miro el resultado, mi probabilidad cambia a 1 (cierta) para "cara" o "cruz", mientras que la tuya sigue siendo 1/2.
Tu código puede tener o no un error, pero no sabemos con certeza cuál es cierto; solo tenemos una creencia sobre la presencia o ausencia del error.
Un paciente muestra síntomas x, y y z. Podrían ser causados por varias enfermedades, pero solo una está presente. Un doctor puede tener ciertas creencias sobre cuál es la enfermedad, mientras que otro doctor puede tener creencias ligeramente diferentes.
Inferencia Bayesiana en la Práctica
Si la inferencia frecuentista y la bayesiana fueran funciones de programación con problemas estadísticos como entrada, ambas proporcionarían resultados distintos.
La función de inferencia frecuentista devolvería un valor numérico que representa una estimación (por ejemplo, un estadístico resumen como el promedio muestral).
En cambio, la función bayesiana devolvería probabilidades.
Ejemplo:
En el problema de depuración del código, si llamamos a la función frecuentista con el argumento: *"Mi código pasó todas las pruebas; ¿está libre de errores?"*, la respuesta sería un **SÍ** o un **NO** absoluto.
Por otro lado, si consultamos la función bayesiana con: *"Mi código suele tener errores. Pasó todas las pruebas; ¿está libre de errores?"*, la respuesta incluiría probabilidades, por ejemplo: - SÍ, con probabilidad 0.8 - NO, con probabilidad 0.2
La diferencia clave es que la función bayesiana incorpora un parámetro adicional: la probabilidad previa o prior, que refleja nuestra creencia inicial sobre la situación (por ejemplo, "Mi código suele tener errores". Este parámetro es opcional, pero su exclusión puede llevar a resultados menos completos.
Incorporación de evidencia
A medida que obtenemos más datos o evidencia, la creencia previa (*prior*) se ve influida o superada por la nueva información. Por ejemplo, si tu creencia inicial es absurda, como "Espero que el sol explote hoy", y diariamente esto no ocurre, la inferencia bayesiana corregirá tu creencia.
¿Qué sucede con muchos datos ?
Cuando acumulamos una cantidad infinita de datos, los resultados bayesianos tienden a alinearse con los frecuentistas, volviéndose más objetivos.
Sin embargo, cuando el tamaño de muestra es pequeño, los métodos frecuentistas tienden a ser menos estables, mostrando mayor varianza y amplios intervalos de confianza. En estos casos, los métodos bayesianos sobresalen, ya que incluyen una *prior* y conservan la incertidumbre inherente al problema.
¿Son incorrectos los métodos frecuentistas?
No.
Los métodos frecuentistas son eficaces y se utilizan ampliamente en múltiples áreas. Herramientas como la regresión lineal por mínimos cuadrados, LASSO y algoritmos de maximización de expectativa son rápidos y poderosos. Los métodos bayesianos no buscan reemplazar estas técnicas, sino complementarlas, resolviendo problemas que los enfoques frecuentistas no pueden abordar o proporcionando modelos más flexibles.
Nota sobre Big Data
Aunque pueda parecer paradójico, los problemas de análisis predictivo en **Big Data** suelen resolverse con algoritmos relativamente simples. Los mayores desafíos no se encuentran en los algoritmos, sino en las dificultades computacionales de almacenamiento y ejecución. Sin embargo, los problemas analíticos más difíciles surgen con datos medianos y, especialmente, con conjuntos de datos pequeños.
Como señala el estadístico Andrew Gelman:
"El tamaño de muestra nunca es suficiente, porque si lo fuera, ya estarías resolviendo el siguiente problema."
1. Conceptos Clave en Estadística Bayesiana
En estadística bayesiana, buscamos conocer la probabilidad de un parámetro (como la probabilidad de éxito en un experimento) dado lo que observamos en los datos. Este cálculo implica tres conceptos principales:
1. Distribución A Priori (prior): Representa nuestro conocimiento inicial sobre el parámetro antes de observar cualquier dato. Es una creencia inicial que puede estar basada en información previa o en suposiciones generales. En este caso, usamos una distribución Beta para representar la probabilidad de un parámetro desconocido, como la probabilidad de éxito en un experimento binomial (ej., lanzar una moneda).
2. Verosimilitud (likelihood): Mide qué tan probable es observar los datos que tenemos, dado un valor específico del parámetro. En este ejemplo, observamos datos que pueden ser éxitos o fracasos, y cada vez que observamos un nuevo dato, este actualiza nuestra creencia sobre el parámetro.
3. Distribución A Posteriori (posterior): Es la distribución que obtenemos después de actualizar nuestra creencia a priori con la evidencia observada en los datos. La fórmula de Bayes nos permite calcular esta distribución combinando la distribución a priori y la verosimilitud de los datos observados.
La fórmula de Bayes es:
posterior = prior x likelihood / text{evidence
2. Ejemplo con una Distribución Beta
Para este ejemplo, supongamos que queremos estimar la probabilidad de éxito ɵ (theta); en un proceso binomial (como lanzar una moneda y contar cuántas veces cae cara). Partimos con una creencia inicial sobre ɵ (theta), que se modela con una distribución Beta con parámetros iniciales (alpha = 2) y ( beta = 2). Esto significa que inicialmente creemos que ɵ (theta) podría estar en torno a 0.5, pero esta creencia es flexible y se ajustará a medida que observemos datos.
3. El Código Paso a Paso
Ahora, vamos línea por línea en el código para entender cada componente.
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
```
Aquí, importamos las librerías necesarias: `numpy` para manejar los datos, `matplotlib.pyplot` para graficar, y `scipy.stats.beta` para trabajar con la distribución Beta.
Paso 1: Definir la Distribución A Priori
```python
# Parámetros iniciales de la distribución Beta (a priori)
alpha_prior, beta_prior = 2, 2
```
Estos valores, `alpha_prior` y `beta_prior`, definen la forma de nuestra creencia inicial sobre (theta). Una distribución Beta con ɑ = 2 y ß= 2 centra su masa alrededor de 0.5, indicando que creemos que la probabilidad de éxito está en torno al 50%, pero esta creencia no es muy fuerte (porque podríamos ajustar estos parámetros a medida que observamos datos).
Paso 2: Generar Datos Observados
```python
# Generamos datos de ejemplo (observaciones)
n_observaciones = 20
datos = np.random.binomial(1, 0.6, size=n_observaciones) # Suponemos que la probabilidad real es 0.6
```
Aquí simulamos 20 observaciones de un proceso binomial con una probabilidad real de éxito del 60% (0.6). Esto significa que, en cada observación, tenemos un 60% de probabilidad de observar un éxito (representado como 1) y un 40% de observar un fracaso (representado como 0). La función `np.random.binomial(1, 0.6, size=n_observaciones)` genera 20 valores binarios (0 o 1) donde 1 representa éxito y 0 representa fracaso.
Paso 3: Contar Éxitos y Fracasos Observados
```python
# Contadores de éxitos y fracasos observados
exitos_observados = np.cumsum(datos)
fracasos_observados = np.cumsum(1 - datos)
```
Usamos `np.cumsum` para calcular el número acumulado de éxitos y fracasos a medida que se observan los datos. Así, después de cada observación, sabemos cuántos éxitos y fracasos llevamos. Estos valores se usarán para actualizar la distribución posterior.
Paso 4: Configurar el Gráfico
```python
# Configuramos el gráfico
x = np.linspace(0, 1, 100)
plt.figure(figsize=(10, 6))
```
Aquí, definimos `x`, que representa los posibles valores de la probabilidad de éxito (theta) en el intervalo de 0 a 1. La función `np.linspace(0, 1, 100)` crea 100 puntos entre 0 y 1 para graficar la distribución en ese rango. Luego configuramos el tamaño del gráfico.
Paso 5: Calcular y Graficar las Distribuciones Posteriores
```python
# Iteramos para visualizar la actualización posterior
for i, (exitos, fracasos) in enumerate(zip(exitos_observados, fracasos_observados), 1):
# Parámetros de la posterior en el paso i
alpha_posterior = alpha_prior + exitos
beta_posterior = beta_prior + fracasos
# Graficamos la distribución posterior
posterior = beta(alpha_posterior, beta_posterior).pdf(x)
plt.plot(x, posterior, label=f'Posterior después de {i} observaciones')
```
Aquí, realizamos el proceso de actualización bayesiana en cada paso de la observación de datos:
Actualizar Parámetros Posteriores: Cada vez que observamos un nuevo dato, actualizamos los parámetros de la distribución posterior. Para cada observación, sumamos el número acumulado de éxitos al parámetro `alpha` y el de fracasos al parámetro `beta`. La idea es que cuantos más éxitos observamos, mayor es el valor de `alpha`, y cuantos más fracasos observamos, mayor es el valor de `beta`.
Calcular Distribución Posterior: Usamos la función de densidad `pdf` de la distribución Beta (`beta(alpha_posterior, beta_posterior).pdf(x)`) para calcular la densidad de probabilidad en cada valor de `x`. Esto representa nuestra nueva creencia sobre theta después de cada nueva observación.
Agregar al Gráfico: Cada posterior se grafica como una curva en el gráfico para observar cómo nuestra creencia sobre theta se ajusta y concentra en el valor real de la probabilidad conforme vemos más datos.
Paso 6: Mostrar el Gráfico
```python
# Gráfico final
plt.title('Actualización Bayesiana de la Distribución Posterior')
plt.xlabel('Valor de la probabilidad')
plt.ylabel('Densidad de probabilidad')
plt.legend(loc='upper left', bbox_to_anchor=(1, 1))
plt.show()
```
Aquí, añadimos el título y las etiquetas para los ejes. La leyenda nos muestra cuántas observaciones se han tenido en cuenta para cada distribución posterior. Finalmente, mostramos el gráfico.
Interpretación del Gráfico
Evolución de la Distribución: Al inicio, la distribución es ancha y abarca un amplio rango de valores de theta porque tenemos poca información.
Ajuste con más Datos: A medida que se observa más evidencia (éxitos y fracasos), la distribución posterior se va ajustando, volviéndose más estrecha y centrada en el valor verdadero de theta = 0.6.
Convergencia: Finalmente, el gráfico muestra cómo la distribución a posteriori se estabiliza, indicando una creencia más fuerte y precisa sobre el valor de theta.
Este proceso ejemplifica cómo la estadística bayesiana permite ajustar creencias sobre un parámetro desconocido mediante la acumulación de datos observacionales.