Moneda Bayesiana
Ejemplo de estimación Bayesiana
Lanzamiento de una moneda
Todo libro contenido de estadística debe contener uno, o muchos más, ejemplso de lanzamiento de moneda. y para estadística Bayesiana esto es igualmente válido. Es por esto que Cameron Davidson-Pilon propone, en su libro un ejemplo de estimación Bayesiana asociada al lanzamiento de una moneda. Un ejemplo muy representativo que se describe a continuanción:
Supongamos, de manera ingenua, que no estás seguro de la probabilidad de obtener cara al lanzar una moneda (advertencia: es 50%). Crees que hay una proporción subyacente verdadera, a la que llamaremos p, pero no tienes una opinión previa sobre cuál podría ser el valor de p.
Proceso de observación
Comenzamos a lanzar una moneda y registramos las observaciones: ya sea cara (H) o cruz (T). Estos son nuestros datos observados.
Una pregunta interesante es:
¿cómo cambia nuestra inferencia a medida que observamos más y más datos?
Más específicamente,
¿cómo se ven nuestras probabilidades posteriores cuando tenemos pocos datos, en comparación con cuando tenemos muchos datos?
Progresión de las probabilidades posteriores
A medida que observamos lanzamientos sucesivos:
Comenzamos con una creencia previa (prior), que puede ser completamente uniforme (es decir, no tenemos una inclinación hacia ningún valor particular de p).
Con cada lanzamiento, actualizamos esta creencia previa utilizando el Teorema de Bayes para obtener una probabilidad posterior (posterior).
La probabilidad posterior refleja nuestra confianza actualizada sobre p, considerando los datos observados hasta ese momento.
Visualización
Al graficar una secuencia de probabilidades posteriores:
Con pocos datos: Las distribuciones suelen ser amplias, lo que indica mucha incertidumbre sobre el verdadero valor de p.
Con muchos datos: Las distribuciones se vuelven más estrechas y centradas alrededor del valor verdadero (idealmente, p=0.5 en este caso).
Este ejemplo simple demuestra cómo el enfoque bayesiano se adapta dinámicamente a los datos disponibles, preservando la incertidumbre inicial y refinando progresivamente las creencias a medida que se acumula evidencia.
Explicación del proceso y el código python
Este ejemplo se desarrolla y codifica en un jupyter notebook y se comparte en github. Ademas está contenido en el libro citado como referencia para este apartado:
Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
1. Distribución inicial (prior):
rv_coin_flip_prior = tfp.distributions.Bernoulli(probs=0.5, dtype=tf.int32)
Aquí se define una distribución Bernoulli con una probabilidad de 0.5 para cada lanzamiento. Esto representa una creencia inicial de que la moneda es justa.
2. Simulación de datos:
num_trials = tf.constant([0,1, 2, 3, 4, 5, 8, 15, 50, 500, 1000, 2000])
coin_flip_data = rv_coin_flip_prior.sample(num_trials[-1])
Se simulan 2000 lanzamientos de moneda.
El número de lanzamientos relevantes se selecciona a partir del array num_trials
.
3. Cómputo acumulativo de caras:
cumulative_headcounts = tf.gather(tf.cumsum(coin_flip_data), num_trials)
Se calculan los conteos acumulativos de caras después de cada lanzamiento en num_trials
.
4. Distribución posterior:
rv_observed_heads = tfp.distributions.Beta(
concentration1=tf.cast(1 + cumulative_headcounts, tf.float32),
concentration0=tf.cast(1 + num_trials - cumulative_headcounts, tf.float32))
Usando una distribución Beta (conjugada a la distribución Binomial), se calculan las probabilidades posteriores basadas en las observaciones. Aquí, los parámetros concentration1
y concentration0
se ajustan con los conteos de caras y cruces.
5. Ejes de probabilidad:
probs_of_heads = tf.linspace(start=0., stop=1., num=100, name="linspace")
observed_probs_heads = tf.transpose(rv_observed_heads.prob(probs_of_heads[:, tf.newaxis]))
Se crea un rango de valores de probabilidad entre 0 y 1. Luego, se calculan las probabilidades de cada valor en la distribución posterior.
Graficación
El gráfico muestra cómo la distribución posterior cambia con cada conjunto de datos acumulados:
Subplots:
Cada gráfico muestra la distribución posterior después de un número creciente de lanzamientos (e.g., 0, 1, 2, ..., 2000).Relleno:
El área bajo la curva indica la probabilidad acumulada. Las distribuciones iniciales son amplias (alta incertidumbre) y se vuelven más estrechas a medida que se recopilan más datos.