Introducción

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.

Objetivo

Aplicar el Teorema de Bayes para:

Desarrollo

Definición de datos

# ====================================================
# 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  

Interpretación

Se establecen los parámetros del problema. La baja prevalencia indica que la enfermedad es poco común.

Construcción de la tabla bayesiana

# -------------------------------
# Tabla Bayesiana
# -------------------------------

# Estados posibles
estados <- c("Cáncer", "No Cáncer")

# Probabilidades previas
prior   <- c(prevalencia, 1 - prevalencia)

# Verosimilitudes
likel   <- c(sensibilidad, falso_pos)   

Interpretación

Se definen los posibles estados y las probabilidades necesarias para aplicar Bayes.

Probabilidades conjuntas

# -------------------------------
# Paso 1-3: conjuntas
# -------------------------------

# Probabilidad conjunta
conjunta <- prior * likel

Interpretación

Se combinan las probabilidades previas con la evidencia observada.

Probabilidad marginal

# -------------------------------
# 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

Interpretación

Representa la probabilidad total de obtener un resultado positivo.

Probabilidades posteriores

# -------------------------------
# Paso 5: posteriors
# -------------------------------

# Aplicación del Teorema de Bayes
posterior <- conjunta / P_positivo

Interpretación

Se obtiene la probabilidad real de tener cáncer dado un resultado positivo.

Tabla completa

# -------------------------------
# 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

Interpretación

Se organiza toda la información para facilitar su análisis.

Interpretación final

# -------------------------------
# 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.

Interpretación

El resultado muestra que la probabilidad real es baja, a pesar de un resultado positivo.

Visualización

# -------------------------------
# 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, "%"))

Interpretación

El gráfico evidencia que la prevalencia influye fuertemente en la probabilidad posterior.

Decisión Final

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.

Conclusión

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.

Bibliografía