Introducción
El teorema de Bayes permite actualizar probabilidades cuando se obtiene nueva información. En problemas de control de calidad, esta herramienta es útil para identificar qué proveedor tiene mayor probabilidad de enviar piezas defectuosas.
En este caso se analizan tres proveedores. A medida que se inspeccionan piezas defectuosas o conformes, se actualizan las probabilidades utilizando el teorema de Bayes de forma secuencial. La probabilidad posterior obtenida en cada inspección se convierte en la probabilidad previa de la siguiente.
Se crea una función que aplica el teorema de Bayes.
La función calcula:
Probabilidad conjunta Probabilidad marginal Probabilidad posterior Tabla de resultados
Aquí se calcula la probabilidad conjunta.
P(A y B) = P(A) × P(B|A) Se calcula la probabilidad total de la evidencia. Se calcula la probabilidad posterior usando Bayes.
Posterior = Conjunta / Evidencia
Se crea la tabla con los resultados.
Columna con los estados.
Probabilidades previas.
Verosimilitud.
Probabilidad conjunta.
Probabilidad de la evidencia.
Probabilidad posterior.
La función devuelve la tabla y la posterior.
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)
}
Datos iniciales Se definen los proveedores.
estados <- c("Proveedor A", "Proveedor B", "Proveedor C")
Se definen las probabilidades previas.
prior <- c(0.60, 0.30, 0.10)
Probabilidad de defecto dado el proveedor.
p_defecto <- c(0.01, 0.04, 0.12)
Probabilidad de pieza conforme.
p_conforme <- c(0.99, 0.96, 0.88)
Inspección 1: pieza DEFECTUOSA Se imprime el título de la inspección.
cat("=== INSPECCIÓN 1: DEFECTUOSA ===\n")
## === INSPECCIÓN 1: DEFECTUOSA ===
Se aplica el teorema de Bayes.
res1 <- bayes_tabla(prior, p_defecto, estados)
Se imprime la tabla.
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
Actualización Secuencial La posterior de hoy es el prior de mañana.
Inspección 2: segunda pieza DEFECTUOSA Se imprime el título.
cat("\n=== INSPECCIÓN 2: DEFECTUOSA (prior actualizado) ===\n")
##
## === INSPECCIÓN 2: DEFECTUOSA (prior actualizado) ===
Se aplica Bayes usando el prior actualizado.
res2 <- bayes_tabla(res1$posterior, p_defecto, estados)
Se imprime la tabla.
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
Inspección 3: pieza CONFORME
Se imprime el título.
cat("\n=== INSPECCIÓN 3: CONFORME ===\n")
##
## === INSPECCIÓN 3: CONFORME ===
Se aplica Bayes nuevamente.
res3 <- bayes_tabla(res2$posterior, p_conforme, estados)
Se imprime la tabla final.
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
Visualización de la evolución
Se cargan las librerías.
library(ggplot2); library(tidyr)
Se crea la evolución de probabilidades. Se definen las inspecciones. Probabilidad del proveedor A. Proveedor B. Proveedor C.
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])
)
Se transforma a formato largo.
df_long <- pivot_longer(evolución, -Inspección,
names_to = "Proveedor", values_to = "Probabilidad")
Se ordenan las inspecciones.
df_long$Inspección <- factor(df_long$Inspección,
levels = c("Prior","Tras Def1","Tras Def2","Tras Conf"))
Gráfica
Se construye el gráfico. Se dibujan las líneas. Se agregan puntos. Se agregan etiquetas. Se definen colores. Se formatea el eje Y. Se agregan títulos. Se aplica diseño limpio.
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()
Después de la primera inspección defectuosa, la probabilidad aumenta para el proveedor con mayor tasa de defectos. En la segunda inspección defectuosa, esta probabilidad vuelve a incrementarse, reforzando la evidencia acumulada. Cuando se observa una pieza conforme, las probabilidades se ajustan, pero el proveedor con mayor tasa de defectos sigue siendo el más probable.
Los resultados muestran que la actualización secuencial permite identificar qué proveedor tiene mayor probabilidad de generar fallas.
En base a estos resultados se recomienda:
El teorema de Bayes permite actualizar probabilidades a medida que se obtiene nueva información. La actualización secuencial muestra que la evidencia acumulada ayuda a identificar el proveedor con mayor probabilidad de defectos, permitiendo tomar decisiones bajo incertidumbre y reducir el riesgo en el control de calidad.