1. Introducción

En el ámbito de la estadística aplicada a las ciencias de la salud, la interpretación de pruebas diagnósticas no depende únicamente de la precisión técnica del test (sensibilidad y especificidad), sino también del contexto epidemiológico en el que se aplica. Este fenómeno se fundamenta en el Teorema de Bayes, el cual permite actualizar la probabilidad de una hipótesis (presencia de enfermedad) a medida que se incorpora nueva evidencia (resultado de una prueba).

El objetivo de este informe es modelar el impacto de la prevalencia sobre el Valor Predictivo Positivo (VPP). Específicamente, analizaremos un escenario donde una prueba con una sensibilidad del 80% y una tasa de falsos positivos del 9.6% se aplica en una población con una prevalencia base del 1%.

A través de la implementación en lenguaje R, se demostrará cómo una prueba aparentemente “confiable” puede generar un alto volumen de falsos positivos cuando se aplica de forma masiva en poblaciones de bajo riesgo, subrayando la importancia de la probabilidad a priori en la toma de decisiones clínicas y estadísticas.

2. Implementación del Modelo en R

A continuación, se presenta el código comentado línea a línea para entender la mecánica del cálculo probabilístico.

# ==============================================================================
# BAYES — Caso 1: Diagnóstico Médico
# Propósito: Calcular la probabilidad real de enfermedad tras un positivo.
# ==============================================================================

# --- DEFINICIÓN DE PARÁMETROS INICIALES ---

# Concepto: Probabilidad a Priori (P(H)). 
# Sirve para: Establecer el estado del conocimiento antes de la prueba.
prevalencia  <- 0.01   

# Concepto: Sensibilidad o Tasa de Verdaderos Positivos (P(E|H)).
# Sirve para: Cuantificar la capacidad de la prueba para detectar la enfermedad.
sensibilidad <- 0.80   

# Concepto: Tasa de Falsos Positivos o Error Tipo I (P(E|~H)).
# Sirve para: Medir la probabilidad de que el test falle en personas sanas.
falso_pos    <- 0.096  


# --- ESTRUCTURACIÓN DE LA INFERENCIA ---

# Concepto: Espacio Muestral de Hipótesis.
# Sirve para: Definir todos los estados posibles y mutuamente excluyentes.
estados <- c("Cáncer", "No Cáncer")

# Concepto: Vector de Probabilidades Iniciales.
# Sirve para: Asignar pesos a cada hipótesis según la incidencia poblacional.
prior   <- c(prevalencia, 1 - prevalencia)

# Concepto: Vector de Verosimilitud (Likelihood).
# Sirve para: Indicar qué tan probable es observar la evidencia en cada grupo.
likel   <- c(sensibilidad, falso_pos)


# --- CÁLCULO BAYESIANO ---

# Concepto: Probabilidad Conjunta (P(H ∩ E)).
# Qué hace: Multiplica la prevalencia por la eficacia del test en esa línea.
# Sirve para: Determinar la proporción de la población en cada celda del modelo.
conjunta <- prior * likel

# Concepto: Probabilidad Marginal o Evidencia (P(E)).
# Qué hace: Suma todos los casos que dieron positivo (enfermos y sanos).
# Sirve para: Actuar como denominador normalizador en la fórmula de Bayes.
P_positivo <- sum(conjunta)

# Función: Reporte de la probabilidad total de un resultado positivo.
cat("P(Positivo) =", round(P_positivo, 4), "\n")
## P(Positivo) = 0.103
# Concepto: Probabilidad Posterior (P(H|E)).
# Qué hace: Divide la probabilidad conjunta entre la marginal.
# Sirve para: Obtener el Valor Predictivo Positivo (VPP) o certeza post-prueba.
posterior <- conjunta / P_positivo


# --- REPORTE Y TABULACIÓN ---

# Concepto: Matriz de Decisión Bayesiana.
# Sirve para: Comparar visualmente cómo la evidencia (Likel) modifica la creencia (Prior).
tabla <- data.frame(
  Estado      = estados,
  Prior       = prior,
  Verosimil   = likel,
  Conjunta    = conjunta,
  Posterior   = round(posterior, 4)
)

# Función: Visualización de los resultados estructurados.
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
# Concepto: Interpretación del Resultado Final.
# Sirve para: Comunicar el riesgo real al paciente (Certeza de diagnóstico).
cat("\n→ P(Cáncer | Positivo) =", round(posterior[1] * 100, 1), "%\n")
## 
## → P(Cáncer | Positivo) = 7.8 %
# --- ANÁLISIS DE SENSIBILIDAD ---

# Concepto: Simulación de Escenarios.
# Sirve para: Observar cómo el VPP depende críticamente de la prevalencia.
library(ggplot2)
prevalencias <- seq(0.001, 0.20, 0.001)

# Función: Mapeo de la fórmula de Bayes sobre el rango simulado.
post_cancer <- sapply(prevalencias, function(p) {
  conj <- c(sensibilidad * p, falso_pos * (1 - p))
  conj[1] / sum(conj)
})

# Concepto: Visualización de Datos (Data Visualization).
# Sirve para: Identificar el punto de equilibrio donde la prueba empieza a ser útil.
df_prev <- data.frame(prevalencia = prevalencias, posterior = post_cancer)

ggplot(df_prev, aes(x = prevalencia * 100, y = posterior * 100)) +
  geom_line(color = "#3a7fbd", linewidth = 1.2) + # Trazado de la curva teórica
  geom_point(data = data.frame(x = 1, y = posterior[1] * 100),
             aes(x = x, y = y), color = "#b0305a", size = 4) + # Resalte del caso actual
  labs(title = "Comportamiento del Valor Predictivo Positivo",
       subtitle = "Relación entre incidencia poblacional y certeza del test",
       x = "Prevalencia (%)", y = "Probabilidad Posterior (%)") +
  theme_minimal()

4. Conclusiones

El análisis bayesiano aplicado al diagnóstico médico permite extraer las siguientes deducciones fundamentales: