En el control de calidad es común trabajar con información incompleta. Muchas veces se reciben piezas de distintos proveedores y, a partir de inspecciones sucesivas, se intenta identificar cuál de ellos presenta mayores problemas. En este tipo de situaciones no basta con observar un solo resultado, sino que es necesario actualizar nuestras conclusiones conforme aparece nueva evidencia. El Teorema de Bayes permite realizar este proceso de manera ordenada. A partir de una creencia inicial, el modelo ajusta las probabilidades cada vez que se observa un nuevo resultado. En este ejemplo se muestra cómo aplicar Bayes de forma secuencial para evaluar la confiabilidad de tres proveedores a partir de varias inspecciones de calidad.
El código define una función que aplica el Teorema de Bayes de manera estructurada. Esta función:
Combina la información previa con la evidencia observada, multiplicando las probabilidades iniciales por la probabilidad de observar el resultado de la inspección.
Calcula la probabilidad total del evento observado , sumando las probabilidades conjuntas.
Obtiene las probabilidades posteriores , que indican qué tan probable es que cada proveedor sea el origen de la pieza inspeccionada, dado el resultado observado.
Organiza la información en una tabla , lo que permite visualizar claramente cada paso del cálculo.
Este procedimiento hace transparente el razonamiento detrás de cada actualización y evita interpretaciones subjetivas.
# ====================================================
# BAYES — Caso 2: Control de Calidad + Actualización
# Secuencial (múltiples inspecciones)
# ====================================================
bayes_tabla <- function(prior, likel, estados) {
conjunta <- prior * likel
P_E <- sum(conjunta)
posterior <- conjunta / P_E
df <- data.frame(
Estado = estados,
Prior = round(prior, 4),
Likel = round(likel, 4),
Conjunta = round(conjunta, 4),
P_E = round(P_E, 4),
Posterior = round(posterior, 4)
)
list(tabla = df, posterior = posterior, P_E = P_E)
}
Se analizan tres posibles proveedores:
Antes de realizar cualquier inspección, se asignan probabilidades
iniciales que representan el grado de confianza en cada proveedor. Estas
probabilidades indican que el Proveedor A es el más confiable, seguido
del Proveedor B, mientras que el Proveedor C tiene la menor
participación.
Además, se conoce la probabilidad de que cada proveedor entregue una
pieza defectuosa o conforme. Estas tasas reflejan la calidad histórica
de su producción y sirven como base para evaluar los resultados de las
inspecciones.
# Datos iniciales
estados <- c("Proveedor A", "Proveedor B", "Proveedor C")
prior <- c(0.60, 0.30, 0.10)
p_defecto <- c(0.01, 0.04, 0.12) # P(Defecto | Proveedor)
p_conforme <- c(0.99, 0.96, 0.88) # P(Conforme | Proveedor)
En la primera inspección se observa una pieza defectuosa. El modelo actualiza las probabilidades iniciales y muestra que la responsabilidad se desplaza hacia los proveedores con mayor tasa de defectos. Como resultado, disminuye la probabilidad del proveedor más confiable y aumentan las de aquellos con menor calidad.
# Inspección 1: 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
La segunda inspección vuelve a mostrar un defecto. En este punto, el análisis utiliza las probabilidades obtenidas en la inspección anterior como punto de partida. Esta actualización secuencial refuerza la evidencia acumulada y acentúa el cambio en la confianza hacia los proveedores con mayor propensión a fallos. El proceso ilustra cómo Bayes no evalúa cada inspección de forma aislada, sino como parte de un conjunto coherente de información.
# ACTUALIZACIÓN SECUENCIAL:
# La posterior de hoy es el prior de mañana.
# 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
En la tercera inspección, la pieza resulta conforme. Este nuevo dato introduce un cambio importante en el análisis, ya que favorece a los proveedores con mayor probabilidad de producir piezas sin defectos. El modelo ajusta nuevamente las probabilidades, equilibrando la información negativa previa con esta evidencia positiva.
# Inspección 3: pieza CONFORME
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
El gráfico final muestra de manera clara cómo evolucionan las
probabilidades asociadas a cada proveedor a lo largo del proceso. Cada
línea representa a un proveedor y permite observar cómo la confianza
inicial se modifica tras cada inspección.
Esta visualización facilita la interpretación del análisis y muestra de
forma intuitiva que las decisiones se vuelven más sólidas cuando se
acumula información.
# Visualización de la evolución de posteriors
library(ggplot2); library(tidyr)
evolución <- data.frame(
Inspección = c("Prior", "Tras Def1", "Tras Def2", "Tras Conf"),
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])
)
df_long <- pivot_longer(evolución, -Inspección,
names_to = "Proveedor", values_to = "Probabilidad")
df_long$Inspección <- factor(df_long$Inspección,
levels = c("Prior","Tras Def1","Tras Def2","Tras Conf"))
ggplot(df_long, aes(x = Inspección, y = Probabilidad,
color = Proveedor, group = Proveedor)) +
geom_line(linewidth = 1.2) +
geom_point(size = 3.5) +
geom_label(aes(label = paste0(round(Probabilidad * 100, 1), "%")),
size = 3, show.legend = FALSE) +
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()
Este ejemplo demuestra cómo el Teorema de Bayes puede aplicarse de
manera práctica en el control de calidad. A través de inspecciones
sucesivas, es posible actualizar de forma sistemática la confianza en
cada proveedor, sin depender de suposiciones fijas o evaluaciones
subjetivas.
La actualización secuencial permite que cada nuevo dato influya en la
decisión final, manteniendo siempre consistencia con la información
previa. De esta forma, Bayes se convierte en una herramienta poderosa
para apoyar decisiones basadas en evidencia, especialmente en contextos
donde la incertidumbre es inevitable y la información se obtiene de
manera gradual.