Ejercicio 2.
# ====================================================
# BAYES — Caso 2: Control de Calidad + Actualización
# Secuencial (múltiples inspecciones)
# ====================================================
# ----------------------------------------------------
# Función bayesiana general
# ----------------------------------------------------
bayes_tabla <- function(prior, likel, estados) {
# Probabilidad conjunta:
# P(Estado ∩ Evidencia) = P(Estado) * P(Evidencia | Estado)
conjunta <- prior * likel
# Probabilidad marginal de la evidencia:
# P(E) = Σ P(Estado) * P(E | Estado)
# (Ley de la probabilidad total)
P_E <- sum(conjunta)
# Probabilidad posterior:
# P(Estado | E) = P(Estado ∩ E) / P(E)
# (Teorema de Bayes)
posterior <- conjunta / P_E
# Construcción de tabla resumen
df <- data.frame(
Estado = estados,
Prior = round(prior, 4), # Creencia inicial
Likel = round(likel, 4), # Verosimilitud
Conjunta = round(conjunta, 4), # Probabilidad conjunta
P_E = round(P_E, 4), # Evidencia total
Posterior = round(posterior, 4) # Creencia actualizada
)
# Retorna resultados clave para uso posterior
list(tabla = df, posterior = posterior, P_E = P_E)
}
# ----------------------------------------------------
# Definición del problema
# ----------------------------------------------------
estados <- c("Proveedor A", "Proveedor B", "Proveedor C")
# Probabilidades a priori:
# Representan la creencia inicial sobre qué proveedor es más probable
prior <- c(0.60, 0.30, 0.10)
# Probabilidades condicionales (modelo de calidad):
# P(Defecto | Proveedor)
p_defecto <- c(0.01, 0.04, 0.12)
# P(Conforme | Proveedor) = 1 - P(Defecto | Proveedor)
p_conforme <- c(0.99, 0.96, 0.88)
# ----------------------------------------------------
# INSPECCIÓN 1: Se observa una pieza defectuosa
# ----------------------------------------------------
cat("=== INSPECCIÓN 1: DEFECTUOSA ===\n")
## === INSPECCIÓN 1: DEFECTUOSA ===
res1 <- bayes_tabla(prior, p_defecto, estados)
print(res1$tabla[, c("Estado","Prior","Likel","Conjunta","Posterior")])
## Estado Prior Likel Conjunta Posterior
## 1 Proveedor A 0.6 0.01 0.006 0.2
## 2 Proveedor B 0.3 0.04 0.012 0.4
## 3 Proveedor C 0.1 0.12 0.012 0.4
# Interpretación:
# Se actualizan las probabilidades de cada proveedor dado que
# se observó un defecto.
#
# Proveedores con mayor tasa de defectos tendrán mayor probabilidad posterior.
# ----------------------------------------------------
# ACTUALIZACIÓN SECUENCIAL (Aprendizaje Bayesiano)
# ----------------------------------------------------
# PRINCIPIO CLAVE:
# La posterior obtenida se convierte en el nuevo prior.
#
# Esto permite incorporar evidencia de manera acumulativa,
# típico en procesos industriales y control de calidad.
# ----------------------------------------------------
# INSPECCIÓN 2: Segunda pieza defectuosa
# ----------------------------------------------------
cat("\n=== INSPECCIÓN 2: DEFECTUOSA (prior actualizado) ===\n")
##
## === INSPECCIÓN 2: DEFECTUOSA (prior actualizado) ===
res2 <- bayes_tabla(res1$posterior, p_defecto, estados)
print(res2$tabla[, c("Estado","Prior","Likel","Posterior")])
## Estado Prior Likel Posterior
## 1 Proveedor A 0.2 0.01 0.0303
## 2 Proveedor B 0.4 0.04 0.2424
## 3 Proveedor C 0.4 0.12 0.7273
# Interpretación:
# Se refuerza la evidencia contra proveedores con mayor tasa de defectos.
# El modelo "aprende" de la información acumulada.
# ----------------------------------------------------
# INSPECCIÓN 3: Pieza conforme (no defectuosa)
# ----------------------------------------------------
cat("\n=== INSPECCIÓN 3: CONFORME ===\n")
##
## === INSPECCIÓN 3: CONFORME ===
res3 <- bayes_tabla(res2$posterior, p_conforme, estados)
print(res3$tabla[, c("Estado","Prior","Likel","Posterior")])
## Estado Prior Likel Posterior
## 1 Proveedor A 0.0303 0.99 0.0332
## 2 Proveedor B 0.2424 0.96 0.2578
## 3 Proveedor C 0.7273 0.88 0.7090
# Interpretación:
# La evidencia favorable (pieza conforme) ajusta nuevamente las probabilidades.
# Esto puede "compensar" parcialmente la evidencia negativa previa.
# ----------------------------------------------------
# Visualización de la evolución de probabilidades
# ----------------------------------------------------
library(ggplot2); library(tidyr)
## Warning: package 'tidyr' was built under R version 4.3.3
# Se construye una matriz de evolución temporal
evolución <- data.frame(
Inspección = c("Prior", "Tras Def1", "Tras Def2", "Tras Conf"),
# Probabilidades de cada proveedor en cada etapa
A = c(prior[1], res1$posterior[1], res2$posterior[1], res3$posterior[1]),
B = c(prior[2], res1$posterior[2], res2$posterior[2], res3$posterior[2]),
C = c(prior[3], res1$posterior[3], res2$posterior[3], res3$posterior[3])
)
# Transformación a formato largo (tidy data)
df_long <- pivot_longer(evolución, -Inspección,
names_to = "Proveedor", values_to = "Probabilidad")
# Orden lógico de las etapas
df_long$Inspección <- factor(df_long$Inspección,
levels = c("Prior","Tras Def1","Tras Def2","Tras Conf"))
# ----------------------------------------------------
# Gráfico de evolución bayesiana
# ----------------------------------------------------
ggplot(df_long, aes(x = Inspección, y = Probabilidad,
color = Proveedor, group = Proveedor)) +
geom_line(linewidth = 1.2) +
# Muestra la trayectoria de cada proveedor
geom_point(size = 3.5) +
# Puntos en cada etapa
geom_label(aes(label = paste0(round(Probabilidad * 100, 1), "%")),
size = 3, show.legend = FALSE) +
# Etiquetas con porcentajes
scale_color_manual(values = c(A="#3a7fbd", B="#d97706", C="#b0305a")) +
scale_y_continuous(labels = function(x) paste0(round(x*100,0),"%"), limits=c(0,1)) +
labs(title = "Actualización Secuencial Bayesiana — Control de Calidad",
subtitle = "La posterior de cada inspección es el prior de la siguiente",
y = "P(Proveedor | Evidencia acumulada)") +
theme_minimal()

# ----------------------------------------------------
# CONCLUSIÓN (Toma de decisiones)
# ----------------------------------------------------
# Este modelo permite:
#
# 1. Identificar el proveedor más probable dado el historial de inspecciones
# 2. Actualizar decisiones en tiempo real (aprendizaje dinámico)
# 3. Minimizar riesgo en selección de proveedores
#
# En términos de decisión:
# → Se elegiría el proveedor con mayor probabilidad posterior
# → O se podría incorporar una función de pérdida (teoría de decisión)