Inspección de Lotes — Empresa Farmacéutica

Una farmacéutica recibe lotes de materia prima de tres proveedores. Históricamente, el 60% vienen del proveedor A (99% de piezas conformes), 30% del proveedor B (96% conformes) y 10% del proveedor C (88% conformes). Se inspecciona una pieza al azar y resulta defectuosa. ¿De qué proveedor proviene probablemente el lote?

Teorema de BAYES -Caso 2: Control de Calidad + Actualización Secuencial (múltiples inspecciones)

Definición de una función que construye la tabla bayesiana

bayes_tabla <- function(prior, likel, estados) {
  
  conjunta  <- prior * likel     # Calcula P(Estado ∩ Evidencia) = prior * verosimilitud
  
  P_E       <- sum(conjunta)     # Probabilidad total de la evidencia P(E), sumando todas las conjuntas
  
  posterior <- conjunta / P_E    # Calcula P(Estado | Evidencia) usando el Teorema de Bayes
  
  # Construcción de una tabla resumen con redondeo
  df <- data.frame(
    Estado    = estados,                 # Nombre de cada estado (proveedor)
    Prior     = round(prior,      4),    # Probabilidades previas
    Likel     = round(likel,      4),    # Verosimilitudes P(E|Estado)
    Conjunta  = round(conjunta,   4),    # Probabilidades conjuntas
    P_E       = round(P_E,        4),    # Probabilidad marginal (misma para todos)
    Posterior = round(posterior,  4)     # Probabilidades posteriores
  )
  
  # Retorna una lista con tabla, posterior y evidencia
  list(tabla = df, posterior = posterior, P_E = P_E)
}

Datos iniciales del problema

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

prior    <- c(0.60, 0.30, 0.10)  # Probabilidad inicial de cada proveedor

p_defecto <- c(0.01, 0.04, 0.12)   # P(Defecto | Proveedor): tasa de defectos por proveedor

p_conforme <- c(0.99, 0.96, 0.88) # P(Conforme | Proveedor): complemento (1 - defecto)

Tabla (columnas seleccionadas) INSPECCION 1

cat("=== INSPECCION 1: DEFECTUOSA ===\n")
## === INSPECCION 1: DEFECTUOSA ===
 # Mensaje en consola
# Aplicar Bayes con evidencia: pieza defectuosa
res1 <- bayes_tabla(prior, p_defecto, estados)

# Mostrar tabla (columnas seleccionadas)
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 INSPECCIÓN 2

# La lógica bayesiana secuencial:
# posterior actual → se convierte en prior para la siguiente observación

cat("\n=== INSPECCION 2: DEFECTUOSA (prior actualizado) ===\n")
## 
## === INSPECCION 2: DEFECTUOSA (prior actualizado) ===
# Se usa la posterior de la inspección 1 como nuevo prior
res2 <- bayes_tabla(res1$posterior, p_defecto, estados)

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

cat("\n=== INSPECCION 3: CONFORME ===\n")
## 
## === INSPECCION 3: CONFORME ===
# Nueva actualización usando evidencia favorable (pieza conforme)
res3 <- bayes_tabla(res2$posterior, p_conforme, estados)

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

El análisis bayesiano muestra de forma clara cómo la evidencia observada modifica sustancialmente nuestras creencias iniciales sobre el origen de un lote. Partiendo de una distribución previa donde el proveedor A domina (60%), seguido por B (30%) y C (10%), la observación de una pieza defectuosa introduce un cambio relevante: los proveedores con mayores tasas de defecto ganan peso en la probabilidad posterior.

Tras la primera inspección defectuosa, la probabilidad de que el lote provenga del proveedor A cae drásticamente del 60% al 20%, mientras que B y C aumentan hasta 40% cada uno. Este resultado es coherente con sus tasas de defecto: el proveedor C, aunque inicialmente poco probable, tiene una probabilidad de defecto significativamente mayor (12%), lo que lo hace más consistente con la evidencia observada. Es importante destacar que en esta etapa B y C quedan equiparados, lo que refleja un balance entre mayor prevalencia (B) y mayor tasa de fallo (C).

La segunda inspección defectuosa refuerza de manera contundente esta tendencia. La probabilidad de que el lote provenga del proveedor C se eleva a aproximadamente 72.7%, mientras que B se reduce a 24.2% y A prácticamente se descarta (3%). Este comportamiento ilustra el poder de la actualización bayesiana secuencial: la acumulación de evidencia consistente (defectos) favorece de forma creciente al proveedor con peor desempeño en calidad. En términos probabilísticos, la evidencia repetida no solo ajusta, sino que concentra fuertemente la creencia en la hipótesis más compatible.

En la tercera inspecciónn, al observarse una pieza conforme, se produce un leve ajuste en las probabilidades, pero no suficiente para revertir la conclusión previa. El proveedor C sigue siendo el más probable (70.9%), seguido por B (25.8%) y A (3.3%). Esto evidencia una propiedad clave del enfoque bayesiano: una sola observación contraria tiene un impacto limitado cuando existe evidencia acumulada fuerte en sentido opuesto.

VISUALIZACIÓN DE LA EVOLUCIÓN DE LAS PROBABILIDADES

# Cargar librerías necesarias
library(ggplot2); library(tidyr)

# Construir data frame con la evolución de probabilidades
evolucion <- data.frame(
  Inspeccion = c("Prior", "Tras Def1", "Tras Def2", "Tras Conf"),  # Etapas del proceso
  
  # Probabilidad 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])
)

# Convertir de formato ancho a formato largo (necesario para ggplot)
df_long <- pivot_longer(evolucion, -Inspeccion,
                       names_to = "Proveedor", values_to = "Probabilidad")

# Definir el orden de las inspecciones (factor ordenado)
df_long$Inspeccion <- factor(df_long$Inspeccion,
                            levels = c("Prior","Tras Def1","Tras Def2","Tras Conf"))

# Construcción del gráfico
ggplot(df_long, aes(x = Inspeccion, y = Probabilidad, 
                    color = Proveedor, group = Proveedor)) +
  
  geom_line(linewidth = 1.2) +   # Líneas que muestran la evolución
  
  geom_point(size = 3.5) +       # Puntos en cada etapa
  
  # Etiquetas con porcentajes
  geom_label(aes(label = paste0(round(Probabilidad * 100, 1), "%")),
             size = 3, show.legend = FALSE) +
  
  # Colores personalizados por proveedor
  scale_color_manual(values = c(A="#3a7fbd", B="#d97706", C="#b0305a")) +
  
  # Formato del eje Y en porcentaje (0% a 100%)
  scale_y_continuous(labels = function(x) paste0(round(x*100,0),"%"), limits=c(0,1)) +
  
  # Títulos del gráfico
  labs(title = "ActualizaciOn Secuencial Bayesiana — Control de Calidad",
       subtitle = "La posterior de cada inspeccion es el prior de la siguiente",
       y = "P(Proveedor | Evidencia acumulada)") +
  
  # Tema visual limpio
  theme_minimal()

Interpretación:

El gráfico complementa el análisis al mostrar la dinámica de las probabilidades a lo largo de las inspecciones. Se observa una rápida caída de la credibilidad del proveedor A, una estabilidad relativa de B en niveles intermedios, y un incremento pronunciado de C tras evidencia adversa. Esta visualización refuerza la intuición de que el proceso bayesiano no es estático, sino adaptativo y acumulativo.

En conclusión, ante la observación inicial de una pieza defectuosa, los proveedores B y C emergen como los más probables (40% cada uno), superando claramente a A. Sin embargo, al considerar evidencia adicional, el proveedor C se convierte en el candidato predominante.