Cálculo de Probabilidad Condicional con Teorema de Bayes y Python

Clase 5 de 24Curso de Introducción al Pensamiento Probabilístico

Contenido del curso

Resumen

Imagina que despiertas con dolor de cabeza y tu primer pensamiento es lo peor. ¿Realmente deberías preocuparte? El pensamiento probabilístico y el teorema de Bayes te dan herramientas concretas para responder esa pregunta con datos, no con miedo. A continuación se explica paso a paso cómo traducir una tabla de síntomas y enfermedades a código Python funcional, obteniendo resultados que probablemente te sorprendan.

¿Qué datos necesitamos para aplicar el teorema de Bayes a síntomas médicos?

El punto de partida es una tabla de contingencia que cruza dos variables: tener o no tener cáncer y mostrar o no mostrar síntomas [0:12]. De una muestra de 100 000 personas, solo una persona realmente tiene la enfermedad. Diez personas muestran síntomas pero no tienen cáncer, y el resto no presenta síntomas ni enfermedad.

Con esos números se extraen las probabilidades que el teorema de Bayes necesita como insumos:

  • Prior o probabilidad previa de tener cáncer: 1 entre 100 000.
  • Probabilidad de síntoma dado cáncer (likelihood): en estos datos es 1, porque todos los enfermos muestran síntomas.
  • Probabilidad de síntoma dado que no hay cáncer: 10 entre 99 999.
  • Probabilidad de no tener cáncer: 1 menos el prior.

El prior [1:30] representa tu creencia inicial antes de observar evidencia. Es el punto de arranque del razonamiento bayesiano y se actualiza cada vez que incorporas nueva información.

¿Cómo se traduce el teorema de Bayes a código Python?

La implementación es directa. Se crea una función calcularBayes que recibe tres parámetros y retorna el resultado de la fórmula [1:22]:

python def calcularBayes(prior_A, prob_B_dado_A, prob_B): return (prior_A * prob_B_dado_A) / prob_B

Dentro del entry point del programa (if __name__ == "__main__") se definen las probabilidades obtenidas de la tabla [2:06]:

python if name == "main": prob_cancer = 1 / 100000 prob_sintoma_dado_cancer = 1 prob_sintoma_dado_no_cancer = 10 / 99999 prob_no_cancer = 1 - prob_cancer

prob_sintoma = (prob_sintoma_dado_cancer * prob_cancer) \ + (prob_sintoma_dado_no_cancer * prob_no_cancer) resultado = calcularBayes(prob_cancer, prob_sintoma_dado_cancer, prob_sintoma) print(resultado)

La variable prob_sintoma se calcula usando la ley de probabilidad total: se suman los productos de cada likelihood por su respectivo prior [3:30]. Este paso es indispensable porque representa la probabilidad marginal de la evidencia, es decir, qué tan común es observar el síntoma en toda la población, sin importar si hay enfermedad o no.

¿Qué pasa si introduces un error en los datos?

Durante la ejecución en consola apareció un primer resultado de 50 %, lo cual era alarmante [5:13]. El error fue un nueve extra en el denominador, que inflaba la muestra a casi un millón de personas. Al corregir el valor a 99 999, el resultado bajó al 9 % [5:50]. Este tropiezo muestra lo importante que es verificar cada dato antes de interpretar resultados.

¿Por qué el resultado del 9 % es tan relevante?

El 9 % significa que, aun teniendo un síntoma, la probabilidad real de padecer cáncer es baja [6:02]. El instinto suele llevarnos a pensar lo peor, pero el análisis bayesiano demuestra que la presencia de un síntoma, por sí sola, no equivale a un diagnóstico.

¿Cómo se actualiza la probabilidad con nueva evidencia?

Aquí aparece una de las propiedades más poderosas del teorema de Bayes: es recursivo [6:30]. Una vez que visitas al doctor y recibes resultados de exámenes, ese 9 % se convierte en tu nuevo prior. La evidencia adicional —análisis de sangre, estudios de imagen— se incorpora repitiendo el mismo cálculo.

  • Tu prior original era la tasa poblacional: 0.001 %.
  • Después de observar síntomas, tu prior actualizado sube a 9 %.
  • Cada nuevo test médico vuelve a ajustar esa cifra hacia arriba o hacia abajo.

Este proceso de actualización bayesiana refleja cómo deberíamos razonar en la vida diaria: partir de una creencia, observar datos y ajustar nuestras conclusiones de forma iterativa en lugar de saltar a extremos.

Desarrollar este tipo de pensamiento probabilístico requiere práctica, pero otorga una ventaja enorme para tomar decisiones informadas. Si quieres profundizar, comparte tu propia implementación o tus dudas en los comentarios para seguir construyendo sobre estas ideas.