Caso 1 Diagnóstico Médico

Introducción

El teorema de Bayes es una herramienta fundamental en los métodos cuantitativos para la toma de decisiones bajo incertidumbre. Permite actualizar probabilidades iniciales (a priori) cuando se obtiene nueva información (evidencia).

En este caso, se analiza un problema de diagnóstico médico donde se desea calcular la probabilidad de que un paciente tenga cáncer dado que el resultado de la prueba es positivo.

Desarrollo

El método pertenece a la teoría de decisiones bajo incertidumbre.

Datos del Problema

Prevalencia del cáncer = 1% Sensibilidad de la prueba = 80% Falso positivo = 9.6%

Esto significa:

P(Cáncer) = 0.01 P(Positivo | Cáncer) = 0.80 P(Positivo | No cáncer) = 0.096

Se define la probabilidad previa de tener cáncer (1%).

prevalencia  <- 0.01

Probabilidad de que la prueba sea positiva si la persona tiene cáncer.

P(Positivo | Cáncer)

sensibilidad <- 0.80

Probabilidad de que la prueba sea positiva si la persona NO tiene cáncer.

P(Positivo | No cáncer)

falso_pos    <- 0.096

Creación de estados

Se crea un vector con los dos estados posibles.

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

Probabilidades previas Se crea el vector de probabilidades previas:

P(Cáncer) P(No cáncer)

prior   <- c(prevalencia, 1 - prevalencia)

Se define la verosimilitud:

P(Positivo | Cáncer) P(Positivo | No cáncer)

likel   <- c(sensibilidad, falso_pos)

Probabilidad Conjunta Aquí se aplica:

P(A y B) = P(A) × P(B|A)

Calcula:

P(Cáncer y Positivo) P(No cáncer y Positivo)

conjunta <- prior * likel

Probabilidad Marginal

Se calcula:

P(Positivo)

Sumando todas las probabilidades conjuntas.

P_positivo <- sum(conjunta)

Imprime la probabilidad total de obtener un positivo.

cat("P(Positivo) =", round(P_positivo, 4), "\n")
## P(Positivo) = 0.103

Probabilida Posterior

Aplicación directa del teorema de Bayes:

Posterior = Conjunta / Evidencia

posterior <- conjunta / P_positivo

Creación de la tabla

Se construye la tabla bayesiana completa con:

Estado Probabilidad previa Verosimilitud Conjunta Posterior

tabla <- data.frame(
  Estado      = estados,
  Prior       = prior,
  Verosimil   = likel,
  Conjunta    = conjunta,
  Posterior   = round(posterior, 4)
)

Muestra la tabla en consola.

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

Resultado Final

cat("\n→ P(Cáncer | Positivo) =", round(posterior[1] * 100, 1), "%\n")
## 
## → P(Cáncer | Positivo) = 7.8 %

Interpretación estadística del resultado.

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.

Visualización Gráfica

Librería Carga la librería para gráficos.

library(ggplot2)

Variación de prevalencias

Se generan valores desde:

0.1% hasta 20%

prevalencias <- seq(0.001, 0.20, 0.001)

Cálculo posterior para cada prevalencia Aplica Bayes para cada valor. Calcula probabilidades conjuntas. Calcula la posterior. Fin del cálculo.

post_cancer <- sapply(prevalencias, function(p) {
conj <- c(sensibilidad * p, falso_pos * (1 - p))
conj[1] / sum(conj)
})

Crear dataframe Se crea la base de datos para graficar.

df_prev <- data.frame(prevalencia = prevalencias, posterior = post_cancer)

Explicación Aquí se crea el gráfico usando ggplot.

df_prev → base de datos eje X → prevalencia en porcentaje eje Y → probabilidad posterior en porcentaje

Multiplicamos por 100 para mostrar en %

ggplot(df_prev, aes(x = prevalencia * 100, y = posterior * 100)) +

Dibuja la línea del gráfico.

geom_line() → gráfico de líneas color → color azul linewidth → grosor de la línea

Esto muestra cómo cambia:

P(Cáncer | Positivo) cuando cambia la prevalencia

geom_line(color = “#3a7fbd”, linewidth = 1.2) +

Agrega un punto rojo en:

Prevalencia = 1%

Este punto representa el caso original del problema.

x = 1 → prevalencia 1% y = posterior[1] * 100 → probabilidad posterior size = 4 → tamaño del punto

geom_point(data = data.frame(x = 1, y = posterior[1] 100), aes(x = x, y = y), color = “#b0305a”, size = 4) +

Agrega texto al gráfico.

x = 2 → posición horizontal y = posterior[1]100 → misma altura del punto

annotate(“text”, x = 2, y = posterior[1] 100,

Construye el texto dinámico:

Ejemplo:

Prevalencia 1% P(Cáncer|+) = 7.8%

label = paste0(“Prevalencia 1%(Cáncer|+) =”, round(posterior[1] 100, 1), “%”),

Formato del texto:

hjust = 0 → alineación izquierda color → rojo size → tamaño texto

Título principal del gráfico.

labs(title = “Efecto de la Prevalencia sobre el Valor Predictivo Positivo”,

Subtítulo con información del problema.

subtitle = “Mamografía: Sensibilidad=80%, Tasa FP=9.6%”,

Etiquetas de los ejes.

x = “Prevalencia (%)”, y = “P(Cáncer | Positivo) (%)”) +

Aplica un diseño limpio y profesional.

theme_minimal() +

Convierte los valores del eje X a porcentaje.

Ejemplo:

1 → 1% 5 → 5%

scale_x_continuous(labels = function(x) paste0(x, “%”)) +

Convierte el eje Y a porcentaje.

scale_y_continuous(labels = function(x) paste0(x, “%”))

El gráfico muestra que:

Cuando la prevalencia es baja La probabilidad posterior también es baja Aunque la prueba tenga buena sensibilidad

Esto demuestra que la prevalencia afecta el valor predictivo positivo. ## GRAFICA

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

Resultados

El resultado obtenido muestra que P(Cáncer | Positivo) ≈ 7.8%, lo que indica que un resultado positivo no implica necesariamente la presencia de la enfermedad. Esto ocurre porque la prevalencia del cáncer es baja, lo que incrementa el efecto de los falsos positivos.

Por lo tanto, no se recomienda tomar una decisión médica definitiva únicamente con esta prueba. Se deben realizar exámenes confirmatorios y considerar otros factores clínicos.

Interpretación Estadística

Este resultado demuestra que:

Una prueba con buena sensibilidad puede generar muchos falsos positivos La prevalencia influye fuertemente en la probabilidad posterior No basta con que la prueba sea positiva

Este fenómeno se conoce como:

Paradoja del valor predictivo positivo.

Conclusión

El teorema de Bayes permite actualizar probabilidades usando evidencia nueva. En este caso, aunque la prueba médica tenga buena sensibilidad, la baja prevalencia del cáncer provoca que la probabilidad posterior sea solo del 7.8%.

Esto demuestra la importancia de considerar la prevalencia en la interpretación de pruebas diagnósticas.