Ejercicio 1.
# ====================================================
# BAYES — Caso 1: Diagnóstico Médico
# ====================================================
# -------------------------------
# Definición de parámetros
# -------------------------------
prevalencia <- 0.01
# P(Cáncer): Probabilidad a priori (PRIOR)
# Representa la proporción de la población que tiene la enfermedad
sensibilidad <- 0.80
# P(Positivo | Cáncer): Sensibilidad
# Probabilidad de que la prueba sea positiva dado que el paciente tiene cáncer
falso_pos <- 0.096
# P(Positivo | No Cáncer): Tasa de falsos positivos
# Probabilidad de que la prueba sea positiva en personas sanas
# -------------------------------
# Construcción del modelo bayesiano
# -------------------------------
estados <- c("Cáncer", "No Cáncer")
# Estados de la naturaleza (variable aleatoria discreta)
prior <- c(prevalencia, 1 - prevalencia)
# Vector de probabilidades a priori:
# P(Cáncer) y P(No Cáncer)
likel <- c(sensibilidad, falso_pos)
# Vector de verosimilitudes:
# P(Positivo | estado)
# -------------------------------
# Paso 1-3: Probabilidades conjuntas
# -------------------------------
conjunta <- prior * likel
# Se aplica la regla:
# P(A ∩ B) = P(A) * P(B | A)
#
# En este caso:
# P(Cáncer ∩ Positivo)
# P(No Cáncer ∩ Positivo)
#
# Representa la probabilidad conjunta de cada estado con la evidencia
# -------------------------------
# Paso 4: Probabilidad marginal (evidencia)
# -------------------------------
P_positivo <- sum(conjunta)
# Se calcula:
# P(Positivo) = Σ P(estado) * P(Positivo | estado)
#
# Esto corresponde a la Ley de la Probabilidad Total
#
# Es la probabilidad de obtener un resultado positivo
# sin importar si el paciente tiene o no cáncer
cat("P(Positivo) =", round(P_positivo, 4), "\n")
## P(Positivo) = 0.103
# -------------------------------
# Paso 5: Probabilidades posteriores (Bayes)
# -------------------------------
posterior <- conjunta / P_positivo
# Aplicación del Teorema de Bayes:
#
# P(A | B) = P(A ∩ B) / P(B)
#
# Aquí se actualiza la probabilidad inicial (prior)
# usando la evidencia observada (test positivo)
# -------------------------------
# Construcción de tabla resumen
# -------------------------------
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
# La tabla resume todo el proceso bayesiano:
# - Prior: creencia inicial
# - Verosimilitud: información del test
# - Conjunta: combinación de ambas
# - Posterior: probabilidad actualizada
# -------------------------------
# Interpretación del resultado clave
# -------------------------------
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.
# Este resultado muestra un fenómeno importante:
# Incluso con una prueba relativamente buena,
# la probabilidad posterior puede ser baja si la prevalencia es baja.
#
# Esto se conoce como:
# "Falacia de la tasa base"
# (ignorar la probabilidad a priori en la interpretación)
# -------------------------------
# Visualización: análisis de sensibilidad
# -------------------------------
library(ggplot2)
prevalencias <- seq(0.001, 0.20, 0.001)
# Se evalúa cómo cambia P(Cáncer | Positivo)
# para diferentes valores de prevalencia
post_cancer <- sapply(prevalencias, function(p) {
# Recalculamos probabilidades conjuntas
conj <- c(sensibilidad * p, falso_pos * (1 - p))
# Aplicamos Bayes:
# P(Cáncer | Positivo) = conjunta[1] / suma total
conj[1] / sum(conj)
})
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) +
# Curva que muestra la relación entre prevalencia y probabilidad posterior
geom_point(data = data.frame(x = 1, y = posterior[1] * 100),
aes(x = x, y = y), color = "#b0305a", size = 4) +
# Punto específico del caso original (prevalencia = 1%)
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 del gráfico
# -------------------------------
# A mayor prevalencia:
# → Mayor probabilidad posterior de tener cáncer dado positivo
#
# A baja prevalencia:
# → Los falsos positivos dominan el resultado
#
# Implicación en toma de decisiones:
# La utilidad de una prueba depende fuertemente del contexto poblacional