Introducción

En el control de calidad industrial, es fundamental identificar el origen de defectos en productos. El Teorema de Bayes permite actualizar probabilidades de manera secuencial a medida que se obtiene nueva evidencia.

En este caso, se analiza un sistema de proveedores donde, a partir de inspecciones sucesivas, se ajusta la probabilidad de que cada proveedor sea responsable de defectos.

Objetivo

Aplicar el Teorema de Bayes de forma secuencial para:

Desarrollo

Función Bayesiana

# ====================================================
# BAYES — Caso 2: Control de Calidad + Actualización
# Secuencial (múltiples inspecciones)
# ====================================================

# Función que construye la tabla bayesiana
bayes_tabla <- function(prior, likel, estados) {
  conjunta  <- prior * likel          # Probabilidad conjunta
  P_E       <- sum(conjunta)          # Probabilidad de la evidencia
  posterior <- conjunta / P_E         # Probabilidad posterior
  
  # Construcción de tabla resumen
  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)
  )
  
  # Retorna tabla y valores
  list(tabla = df, posterior = posterior, P_E = P_E)
}

Interpretación

Esta función automatiza el cálculo del Teorema de Bayes, permitiendo actualizar probabilidades en cada etapa.

Datos iniciales

# Estados posibles (proveedores)
estados  <- c("Proveedor A", "Proveedor B", "Proveedor C")

# Probabilidades iniciales
prior    <- c(0.60, 0.30, 0.10)

# Probabilidad de defecto según proveedor
p_defecto <- c(0.01, 0.04, 0.12)

# Probabilidad de conformidad
p_conforme <- c(0.99, 0.96, 0.88)

Interpretación

Se modela un sistema donde cada proveedor tiene distinta probabilidad de generar defectos.

Inspección 1: Defectuosa

# Inspección 1: pieza DEFECTUOSA
cat("=== INSPECCIÓN 1: DEFECTUOSA ===\n")
## === INSPECCIÓN 1: DEFECTUOSA ===
# Aplicación de Bayes
res1 <- bayes_tabla(prior, p_defecto, estados)

# Mostrar 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

Interpretación

Después de detectar un defecto:

  • Aumenta la probabilidad de proveedores con mayor tasa de fallos.
  • Disminuye la probabilidad de proveedores confiables.

Inspección 2: Defectuosa

# 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) ===
# Nueva actualización
res2 <- bayes_tabla(res1$posterior, p_defecto, estados)

# Mostrar 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

Interpretación

La evidencia acumulada refuerza la probabilidad de proveedores defectuosos.

Inspección 3: Conforme

# Inspección 3: pieza CONFORME
cat("\n=== INSPECCIÓN 3: CONFORME ===\n")
## 
## === INSPECCIÓN 3: CONFORME ===
# Actualización con evidencia positiva
res3 <- bayes_tabla(res2$posterior, p_conforme, estados)

# Mostrar tabla
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

Un resultado conforme reduce la probabilidad de proveedores altamente defectuosos.

Visualización

# Visualización de la evolución de posteriors
library(ggplot2); library(tidyr)

# Construcción de datos
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])
)

# Convertir formato
df_long <- pivot_longer(evolución, -Inspección,
                         names_to = "Proveedor", values_to = "Probabilidad")

# Orden de factores
df_long$Inspección <- factor(df_long$Inspección,
                               levels = c("Prior","Tras Def1","Tras Def2","Tras Conf"))

# Gráfico
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()

Interpretación

El gráfico muestra cómo cambian las probabilidades a medida que se acumula evidencia.

Decisión Final

Conclusión

El análisis demuestra que la actualización secuencial de Bayes es una herramienta poderosa en control de calidad. Permite incorporar evidencia progresiva y mejorar la identificación del origen de defectos.

Bibliografía