EJERCICIO 1

📌 Introducción

El Teorema de Bayes también se aplica en el control de calidad industrial, permitiendo identificar la probabilidad de que un producto provenga de cierto proveedor en función de inspecciones realizadas.

En este caso, se utiliza actualización secuencial, donde cada nueva evidencia modifica las probabilidades previas.

🎯 Objetivo

  • Aplicar Bayes en control de calidad.
  • Entender la actualización secuencial.
  • Analizar cómo cambia la probabilidad con múltiples inspecciones.

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?

🧩 1. Función Bayesiana

# ====================================================
# 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)
}

Esta función:

Calcula probabilidades conjuntas Calcula la probabilidad total de la evidencia Aplica el Teorema de Bayes Devuelve una tabla con resultados 📊 Interpretación

Automatiza el proceso bayesiano para poder aplicarlo varias veces (actualización secuencial).

🧩 2. Datos iniciales

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

Prior: probabilidad inicial de cada proveedor p_defecto: probabilidad de defecto según proveedor p_conforme: probabilidad de producto bueno 📊 Interpretación

El proveedor A tiene mayor participación, pero el proveedor C tiene mayor tasa de defectos.

🧩 3. Inspección 1: pieza defectuosa

Después de dos defectos:

Se refuerza la sospecha sobre el proveedor con más fallas. La evidencia acumulada cambia significativamente las probabilidades.

# 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
# 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
# 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
# Visualización de la evolución de posteriors
library(ggplot2); library(tidyr)
## Warning: package 'tidyr' was built under R version 4.3.3
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()

Interpretación

El gráfico mostró una actualización bayesiana secuencial para evaluar la probabilidad de tres proveedores (A, B y C) en un proceso de control de calidad. Inicialmente, el proveedor A tenía la mayor probabilidad (60%), pero tras la aparición de defectos su probabilidad disminuyó considerablemente. A medida que se acumuló evidencia, la probabilidad del proveedor C aumentó de forma significativa hasta convertirse en el más probable responsable, mientras que A quedó prácticamente descartado y B mantuvo una probabilidad intermedia. En conclusión, la evidencia acumulada cambió la decisión inicial y permitió identificar al proveedor C como el principal responsable.