Los árboles de decisión y los modelos bayesianos son marcos analíticos que permiten a los gestores evaluar alternativas complejas. En un entorno donde el gasto operativo y de inversión debe optimizarse, estas herramientas facilitan el cálculo del Valor Monetario Esperado (VME), ayudando a elegir la ruta que maximiza el beneficio o minimiza la pérdida.
En este informe exploraremos:
Diagnóstico Médico (Bayes): Cómo interpretar pruebas imperfectas.
Exploración Petrolera: Decisiones de alto riesgo y gran escala.
Startups e Industria: Modelos de actualización secuencial de datos.
Una mamografía detecta cáncer de mama. La prevalencia (prior) es del 1% en mujeres de 40–50 años. La prueba tiene sensibilidad del 80% (detecta correctamente el 80% de casos reales) y especificidad del 90.4% (tasa de falsos positivos del 9.6%). Una paciente da positivo. ¿Cuál es la probabilidad real de que tenga cáncer?
# ====================================================
# BAYES — Caso 1: Diagnóstico Médico
# ====================================================
# --- CONFIGURACIÓN DE PARÁMETROS INICIALES ---
# Definimos las probabilidades base (creencias antes de la prueba)
prevalencia <- 0.01 # Prior: Probabilidad base de tener cáncer (1% de la población)
sensibilidad <- 0.80 # P(Positivo | Cáncer): Probabilidad de que la prueba detecte el cáncer
falso_pos <- 0.096 # P(Positivo | No Cáncer): Probabilidad de que una persona sana dé positivo
# --- ESTRUCTURA DE LA TABLA BAYESIANA ---
# Definimos los posibles escenarios (Estados de la Naturaleza)
estados <- c("Cáncer", "No Cáncer")
# Asignamos el Prior (Distribución de probabilidad inicial)
prior <- c(prevalencia, 1 - prevalencia)
# Definimos la Verosimilitud (Likelihood): ¿Qué tan probable es el resultado observado en cada estado?
likel <- c(sensibilidad, falso_pos)
# --- CÁLCULO BAYESIANO ---
# Paso 1-3: Probabilidades Conjuntas
# Multiplicamos el Prior por la Verosimilitud para ver el peso de cada escenario
conjunta <- prior * likel
# Paso 4: Probabilidad Marginal (Evidencia)
# Es la suma de todas las conjuntas. Representa la probabilidad total de dar positivo (P(Positivo))
P_positivo <- sum(conjunta)
cat("P(Positivo) =", round(P_positivo, 4), "\n")
## P(Positivo) = 0.103
# Paso 5: Cálculo de Probabilidades Posteriores
# Aplicamos el Teorema de Bayes: (Conjunta / Evidencia) para actualizar nuestra creencia
posterior <- conjunta / P_positivo
# --- PRESENTACIÓN DE RESULTADOS ---
# Creamos un data frame para visualizar el proceso completo de actualización
tabla <- data.frame(
Estado = estados,
Prior = prior,
Verosimil = likel,
Conjunta = conjunta,
Posterior = round(posterior, 4)
)
print(tabla)
## Estado Prior Verosimil Conjunta Posterior
## 1 Cáncer 0.01 0.800 0.00800 0.0776
## 2 No Cáncer 0.99 0.096 0.09504 0.9224
# Imprimimos la conclusión principal
cat("\n→ P(Cáncer | Positivo) =", round(posterior[1] * 100, 1), "%\n")
##
## → P(Cáncer | Positivo) = 7.8 %
cat("→ Aunque la prueba es positiva, solo el",
round(posterior[1] * 100, 1), "% tiene cáncer.\n")
## → Aunque la prueba es positiva, solo el 7.8 % tiene cáncer.
# --- ANÁLISIS DE SENSIBILIDAD (VISUALIZACIÓN) ---
# Evaluamos cómo cambia el resultado si la enfermedad fuera más o menos común
library(ggplot2)
# Generamos un rango de prevalencias desde 0.1% hasta 20%
prevalencias <- seq(0.001, 0.20, 0.001)
# Calculamos la probabilidad posterior para cada punto del rango anterior
post_cancer <- sapply(prevalencias, function(p) {
# Calculamos conjuntas para cada prevalencia 'p'
conj <- c(sensibilidad * p, falso_pos * (1 - p))
# Retornamos la posterior de tener cáncer (Punto 1 / Suma total)
conj[1] / sum(conj)
})
# Creamos un set de datos para el gráfico
df_prev <- data.frame(prevalencia = prevalencias, posterior = post_cancer)
# Graficamos la curva de Valor Predictivo Positivo
ggplot(df_prev, aes(x = prevalencia * 100, y = posterior * 100)) +
geom_line(color = "#3a7fbd", linewidth = 1.2) + # Línea de tendencia
# Marcamos el punto específico del caso de estudio (1% de prevalencia)
geom_point(data = data.frame(x = 1, y = posterior[1] * 100),
aes(x = x, y = y), color = "#b0305a", size = 4) +
# Añadimos etiqueta informativa al punto
annotate("text", x = 2, y = posterior[1] * 100,
label = paste0("Prevalencia 1%\nP(Cáncer|+) = ",
round(posterior[1] * 100, 1), "%"),
hjust = 0, color = "#b0305a", size = 3.5) +
labs(title = "Efecto de la Prevalencia sobre el Valor Predictivo Positivo",
subtitle = "Mamografía: Sensibilidad=80%, Tasa FP=9.6%",
x = "Prevalencia (%)", y = "P(Cáncer | Positivo) (%)") +
theme_minimal() +
scale_x_continuous(labels = function(x) paste0(x, "%")) +
scale_y_continuous(labels = function(x) paste0(x, "%"))
Decisión Recomendada: No realizar procedimientos invasivos de forma inmediata (como una cirugía o biopsia agresiva).
Justificación: A pesar de que la prueba dio positivo, la probabilidad posterior de tener cáncer es de apenas 7.8%. Esto significa que hay un 92.2% de probabilidad de estar sana.
Acción Sugerida: Lo óptimo es realizar una segunda prueba independiente o un seguimiento clínico menos invasivo. Iniciar un tratamiento costoso o doloroso con una probabilidad tan baja de enfermedad representaría un gasto de recursos y un riesgo físico injustificado.