El diagnóstico médico implica tomar decisiones bajo incertidumbre. Las pruebas clínicas, aunque útiles, no son perfectas y pueden generar falsos positivos o negativos. En este contexto, el Teorema de Bayes permite actualizar probabilidades y estimar la probabilidad real de que un paciente tenga una enfermedad dado un resultado de prueba.
Este análisis evalúa una prueba de detección de cáncer, considerando la prevalencia, sensibilidad y tasa de falsos positivos.
Aplicar el Teorema de Bayes para:
# ====================================================
# BAYES — Caso 1: Diagnóstico Médico
# ====================================================
# -------------------------------
# Datos del problema
# -------------------------------
# Probabilidad inicial de tener cáncer (prevalencia)
prevalencia <- 0.01
# Sensibilidad: probabilidad de detectar cáncer si existe
sensibilidad <- 0.80
# Probabilidad de falso positivo
falso_pos <- 0.096
Se establecen los parámetros del problema. La baja prevalencia indica que la enfermedad es poco común.
# -------------------------------
# Tabla Bayesiana
# -------------------------------
# Estados posibles
estados <- c("Cáncer", "No Cáncer")
# Probabilidades previas
prior <- c(prevalencia, 1 - prevalencia)
# Verosimilitudes
likel <- c(sensibilidad, falso_pos)
Se definen los posibles estados y las probabilidades necesarias para aplicar Bayes.
# -------------------------------
# Paso 1-3: conjuntas
# -------------------------------
# Probabilidad conjunta
conjunta <- prior * likel
Se combinan las probabilidades previas con la evidencia observada.
# -------------------------------
# Paso 4: probabilidad marginal
# -------------------------------
# Probabilidad total de resultado positivo
P_positivo <- sum(conjunta)
# Mostrar resultado
cat("P(Positivo) =", round(P_positivo, 4), "\n")
## P(Positivo) = 0.103
Representa la probabilidad total de obtener un resultado positivo.
# -------------------------------
# Paso 5: posteriors
# -------------------------------
# Aplicación del Teorema de Bayes
posterior <- conjunta / P_positivo
Se obtiene la probabilidad real de tener cáncer dado un resultado positivo.
# -------------------------------
# Tabla completa
# -------------------------------
# -------------------------------
# Tabla completa
# -------------------------------
# Se crea un data frame (tabla) que resume todo el proceso de Bayes
tabla <- data.frame(
# Columna con los estados posibles del problema
Estado = estados,
# Probabilidades iniciales antes de ver la evidencia (prior)
Prior = prior,
# Probabilidades condicionadas (verosimilitudes)
# Es decir: P(Positivo | estado)
Verosimil = likel,
# Probabilidad conjunta:
# Se obtiene multiplicando Prior * Verosimil
Conjunta = conjunta,
# Probabilidad posterior:
# Es el resultado final del Teorema de Bayes
# Se redondea a 4 decimales para mejor presentación
Posterior = round(posterior, 4)
)
# Se imprime la tabla en pantalla para visualizar los resultados
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
Se organiza toda la información para facilitar su análisis.
# -------------------------------
# Interpretación final
# -------------------------------
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.
El resultado muestra que la probabilidad real es baja, a pesar de un resultado positivo.
# -------------------------------
# Visualización
# -------------------------------
# Cargar librería
library(ggplot2)
# Generar rango de prevalencias
prevalencias <- seq(0.001, 0.20, 0.001)
# Calcular probabilidades posteriores
post_cancer <- sapply(prevalencias, function(p) {
conj <- c(sensibilidad * p, falso_pos * (1 - p))
conj[1] / sum(conj)
})
# Crear dataframe
df_prev <- data.frame(prevalencia = prevalencias, posterior = post_cancer)
# Gráfico
ggplot(df_prev, aes(x = prevalencia * 100, y = posterior * 100)) +
geom_line(color = "#3a7fbd", linewidth = 1.2) +
geom_point(data = data.frame(x = 1, y = posterior[1] * 100),
aes(x = x, y = y), color = "#b0305a", size = 4) +
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, "%"))
El gráfico evidencia que la prevalencia influye fuertemente en la probabilidad posterior.
Aunque la prueba sea positiva, no se debe concluir inmediatamente que el paciente tiene cáncer. Se recomienda realizar pruebas adicionales antes de tomar decisiones médicas definitivas.
El Teorema de Bayes demuestra que una prueba diagnóstica debe interpretarse en función de la prevalencia. En enfermedades raras, incluso pruebas con buena sensibilidad pueden generar una alta proporción de falsos positivos.
Este análisis resalta la importancia de una interpretación probabilística en medicina.