1 Introducción

En el control de calidad por aceptación, un plan de muestreo simple consiste en tomar una muestra de tamaño \(n\) de un lote de tamaño \(N\), y aceptar el lote si el número de defectuosos encontrados es menor o igual al número de aceptación \(c\).

La Curva Característica de Operación (CO) describe la probabilidad de aceptar un lote en función de la proporción real de defectuosos \(p\), y permite visualizar los dos riesgos asociados al plan:

  • Riesgo del Productor (\(\alpha\)): Probabilidad de rechazar un lote bueno (con proporción de defectuosos = AQL).
  • Riesgo del Consumidor (\(\beta\)): Probabilidad de aceptar un lote malo (con proporción de defectuosos = LTPD).

La distribución de probabilidad utilizada se selecciona según la razón \(r = n/N\):

Condición Distribución
\(r > 0.1\) Hipergeométrica
\(r \leq 0.1\) y \(n \cdot r > 1\) Poisson
\(r \leq 0.1\) Binomial

2 Punto 1 – Evaluación de riesgos en tres planes de muestreo

2.1 Contexto

Se reciben lotes de N = 150 unidades. Se define:

  • AQL = 5%: proporción de defectuosos que define un lote bueno.
  • LTPD = 10%: proporción de defectuosos que define un lote inaceptable.

Se evalúan tres planes con criterio de proporcionalidad en \(c/n \approx AQL\):

Plan n c
1 100 5
2 80 4
3 40 2

2.2 Función de selección de distribución

seleccionar_distribucion <- function(n, N) {
  r <- n / N
  if (r > 0.1) return("Hipergeométrica")
  if (r <= 0.1 && n * r > 1) return("Poisson")
  return("Binomial")
}

2.3 Plan 1: n = 100, c = 5

N <- 150; n <- 100; c <- 5; AQL <- 0.05; LTPD <- 0.10

cat("Distribución seleccionada:", seleccionar_distribucion(n, N), "\n")
## Distribución seleccionada: Hipergeométrica
# Defectuosos y no defectuosos en lote bueno (AQL)
D_AQL  <- round(AQL * N)
ND_AQL <- N - D_AQL

# Defectuosos y no defectuosos en lote malo (LTPD)
D_LTPD  <- round(LTPD * N)
ND_LTPD <- N - D_LTPD

# Riesgo del productor: α = P(d > c | lote bueno)
alpha <- phyper(c, D_AQL, ND_AQL, n, lower.tail=F, log.p=F)

# Riesgo del consumidor: β = P(d ≤ c | lote malo)
beta <- phyper(c, D_LTPD, ND_LTPD, n, lower.tail=T, log.p=F)

cat("D_AQL =", D_AQL, "| ND_AQL =", ND_AQL, "\n")
## D_AQL = 8 | ND_AQL = 142
cat("D_LTPD =", D_LTPD, "| ND_LTPD =", ND_LTPD, "\n")
## D_LTPD = 15 | ND_LTPD = 135
cat("Alpha (riesgo productor) =", round(alpha, 4), "\n")
## Alpha (riesgo productor) = 0.4654
cat("Beta  (riesgo consumidor) =", round(beta, 4), "\n")
## Beta  (riesgo consumidor) = 0.0058

2.4 Plan 2: n = 80, c = 4

N2 <- 150; n2 <- 80; c2 <- 4; AQL2 <- 0.05; LTPD2 <- 0.10

cat("Distribución seleccionada:", seleccionar_distribucion(n2, N2), "\n")
## Distribución seleccionada: Hipergeométrica
D_AQL2  <- round(AQL2 * N2)
ND_AQL2 <- N2 - D_AQL2

D_LTPD2  <- round(LTPD2 * N2)
ND_LTPD2 <- N2 - D_LTPD2

alpha2 <- phyper(c2, D_AQL2, ND_AQL2, n2, lower.tail=F, log.p=F)
beta2  <- phyper(c2, D_LTPD2, ND_LTPD2, n2, lower.tail=T, log.p=F)

cat("D_AQL2 =", D_AQL2, "| ND_AQL2 =", ND_AQL2, "\n")
## D_AQL2 = 8 | ND_AQL2 = 142
cat("D_LTPD2 =", D_LTPD2, "| ND_LTPD2 =", ND_LTPD2, "\n")
## D_LTPD2 = 15 | ND_LTPD2 = 135
cat("Alpha (riesgo productor) =", round(alpha2, 4), "\n")
## Alpha (riesgo productor) = 0.4362
cat("Beta  (riesgo consumidor) =", round(beta2, 4), "\n")
## Beta  (riesgo consumidor) = 0.0275

2.5 Plan 3: n = 40, c = 2

N3 <- 150; n3 <- 40; c3 <- 2; AQL3 <- 0.05; LTPD3 <- 0.10

cat("Distribución seleccionada:", seleccionar_distribucion(n3, N3), "\n")
## Distribución seleccionada: Hipergeométrica
D_AQL3  <- round(AQL3 * N3)
ND_AQL3 <- N3 - D_AQL3

D_LTPD3  <- round(LTPD3 * N3)
ND_LTPD3 <- N3 - D_LTPD3

alpha3 <- phyper(c3, D_AQL3, ND_AQL3, n3, lower.tail=F, log.p=F)
beta3  <- phyper(c3, D_LTPD3, ND_LTPD3, n3, lower.tail=T, log.p=F)

cat("D_AQL3 =", D_AQL3, "| ND_AQL3 =", ND_AQL3, "\n")
## D_AQL3 = 8 | ND_AQL3 = 142
cat("D_LTPD3 =", D_LTPD3, "| ND_LTPD3 =", ND_LTPD3, "\n")
## D_LTPD3 = 15 | ND_LTPD3 = 135
cat("Alpha (riesgo productor) =", round(alpha3, 4), "\n")
## Alpha (riesgo productor) = 0.3622
cat("Beta  (riesgo consumidor) =", round(beta3, 4), "\n")
## Beta  (riesgo consumidor) = 0.1798

2.6 Tabla resumen – Comparación de los tres planes

resumen <- data.frame(
  Plan  = c("Plan 1 (n=100, c=5)", "Plan 2 (n=80, c=4)", "Plan 3 (n=40, c=2)"),
  Dist  = c(seleccionar_distribucion(100,150),
            seleccionar_distribucion(80,150),
            seleccionar_distribucion(40,150)),
  Alpha = round(c(alpha, alpha2, alpha3), 4),
  Beta  = round(c(beta,  beta2,  beta3),  4)
)
knitr::kable(resumen, col.names = c("Plan", "Distribución", "α (Riesgo Productor)", "β (Riesgo Consumidor)"),
             caption = "Comparación de riesgos entre los tres planes de muestreo")
Comparación de riesgos entre los tres planes de muestreo
Plan Distribución α (Riesgo Productor) β (Riesgo Consumidor)
Plan 1 (n=100, c=5) Hipergeométrica 0.4654 0.0058
Plan 2 (n=80, c=4) Hipergeométrica 0.4362 0.0275
Plan 3 (n=40, c=2) Hipergeométrica 0.3622 0.1798

2.7 Curvas CO – Comparación de los tres planes

p_seq <- seq(0, 0.30, by = 0.001)

# Probabilidades de aceptación para cada plan (Hipergeométrica)
Pa1 <- sapply(p_seq, function(p) phyper(5, round(p*150), 150-round(p*150), 100, lower.tail=T, log.p=F))
Pa2 <- sapply(p_seq, function(p) phyper(4, round(p*150), 150-round(p*150), 80,  lower.tail=T, log.p=F))
Pa3 <- sapply(p_seq, function(p) phyper(2, round(p*150), 150-round(p*150), 40,  lower.tail=T, log.p=F))

df_co <- data.frame(p = p_seq, 
                    `Plan 1 (n=100, c=5)` = Pa1,
                    `Plan 2 (n=80, c=4)`  = Pa2,
                    `Plan 3 (n=40, c=2)`  = Pa3,
                    check.names = FALSE) %>%
  pivot_longer(-p, names_to = "Plan", values_to = "Pa")

ggplot(df_co, aes(x = p, y = Pa, color = Plan)) +
  geom_line(linewidth = 1) +
  geom_vline(xintercept = 0.05, linetype = "dashed", color = "steelblue", alpha = 0.7) +
  geom_vline(xintercept = 0.10, linetype = "dashed", color = "tomato",    alpha = 0.7) +
  annotate("text", x = 0.05, y = 0.05, label = "AQL = 5%",  hjust = -0.1, color = "steelblue", size = 3.5) +
  annotate("text", x = 0.10, y = 0.05, label = "LTPD = 10%", hjust = -0.1, color = "tomato",   size = 3.5) +
  scale_y_continuous(labels = scales::percent_format(), limits = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  labs(title    = "Curvas CO – Comparación de los tres planes de muestreo",
       subtitle = "Distribución Hipergeométrica | N = 150",
       x = "Proporción de defectuosos (p)",
       y = "Probabilidad de aceptación P(a)",
       color = "Plan") +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

2.8 a. Riesgos del productor y consumidor por plan

Los resultados muestran que, aunque los tres planes mantienen la misma proporción \(c/n = 0.05\) (condición de proporcionalidad con el AQL), los riesgos no son equivalentes:

  • El Plan 1 (n=100) tiene el menor riesgo del consumidor y mayor riesgo del productor , ya que al tomar una muestra más grande se tiene mayor poder discriminatorio por parte del consumidor.
  • El Plan 3 (n=40) presenta menor riesgo del productor.

2.9 b. ¿Son equivalentes los planes con proporcionalidad en AQL?

No. Aunque los tres cumplen \(c/n = AQL\), tener la misma proporción no hace que los planes sean iguales. El tamaño de muestra sí importa:entre más grande sea \(n\), la curva CO es más empinada y los riesgos del consumidor bajan. Los tres planes se comportan diferente, como se evidencia en la gráfica y en la tabla de riesgos.


3 Punto 2 – Curva CO con las tres distribuciones

3.1 Contexto

Se construye una Curva CO para un plan de muestreo simple con:

  • N = 100, n = 50, c = 2

Se utilizan las tres distribuciones: Hipergeométrica, Binomial y Poisson.

3.2 Selección de distribución

N_p2 <- 100; n_p2 <- 50; c_p2 <- 2
r_p2 <- n_p2 / N_p2
cat("r = n/N =", r_p2, "\n")
## r = n/N = 0.5
cat("Distribución sugerida:", seleccionar_distribucion(n_p2, N_p2), "\n")
## Distribución sugerida: Hipergeométrica

Como \(r = 0.5 > 0.1\), la distribución Hipergeométrica es la más adecuada. Sin embargo, se calcularán las tres para comparar.

3.3 Curvas CO con las tres distribuciones (N = 100)

p_seq2 <- seq(0, 0.50, by = 0.005)
N2a <- 100; n2a <- 50; c2a <- 2

# Hipergeométrica
Pa_hyper <- sapply(p_seq2, function(p) {
  D  <- round(p * N2a)
  ND <- N2a - D
  phyper(c2a, D, ND, n2a, lower.tail=T, log.p=F)
})

# Binomial
Pa_binom <- sapply(p_seq2, function(p) pbinom(c2a, n2a, p, lower.tail=T, log.p=F))

# Poisson
Pa_pois <- sapply(p_seq2, function(p) ppois(c2a, lambda = n2a * p, lower.tail=T, log.p=F))

df_p2a <- data.frame(
  p              = p_seq2,
  Hipergeométrica = Pa_hyper,
  Binomial        = Pa_binom,
  Poisson         = Pa_pois
) %>% pivot_longer(-p, names_to = "Distribución", values_to = "Pa")

ggplot(df_p2a, aes(x = p, y = Pa, color = Distribución, linetype = Distribución)) +
  geom_line(linewidth = 1) +
  scale_y_continuous(labels = scales::percent_format(), limits = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  labs(title    = "Curvas CO – Tres distribuciones (N = 100, n = 50, c = 2)",
       x = "Proporción de defectuosos (p)",
       y = "Probabilidad de aceptación P(a)",
       color    = "Distribución",
       linetype = "Distribución") +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

3.4 a. ¿Se presentan discrepancias entre las curvas?

Sí. Cuando \(N = 100\) y \(n = 50\), la razón \(r = 0.5 > 0.1\), lo que indica que la fracción de muestreo es grande. En este caso:

  • La Hipergeométrica es la distribución exacta y la más precisa.
  • La Binomial sobreestima ligeramente la probabilidad de aceptación, ya que asume muestreo con reemplazo.
  • La Poisson presenta las mayores discrepancias, especialmente para valores altos de \(p\), ya que su supuesto de \(n/N \leq 0.1\) no se cumple aquí.

Las curvas no coinciden porque las condiciones para usar las aproximaciones (Binomial y Poisson) no se satisfacen con este lote pequeño.

3.5 Curvas CO con las tres distribuciones (N = 2000)

N2b <- 2000; n2b <- 50; c2b <- 2
r2b <- n2b / N2b
cat("r = n/N =", r2b, "→", seleccionar_distribucion(n2b, N2b), "\n")
## r = n/N = 0.025 → Poisson
Pa_hyper2 <- sapply(p_seq2, function(p) {
  D  <- round(p * N2b)
  ND <- N2b - D
  phyper(c2b, D, ND, n2b, lower.tail=T, log.p=F)
})

Pa_binom2 <- sapply(p_seq2, function(p) pbinom(c2b, n2b, p, lower.tail=T, log.p=F))
Pa_pois2  <- sapply(p_seq2, function(p) ppois(c2b, lambda = n2b * p, lower.tail=T, log.p=F))

df_p2b <- data.frame(
  p               = p_seq2,
  Hipergeométrica = Pa_hyper2,
  Binomial        = Pa_binom2,
  Poisson         = Pa_pois2
) %>% pivot_longer(-p, names_to = "Distribución", values_to = "Pa")

ggplot(df_p2b, aes(x = p, y = Pa, color = Distribución, linetype = Distribución)) +
  geom_line(linewidth = 1) +
  scale_y_continuous(labels = scales::percent_format(), limits = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  labs(title    = "Curvas CO – Tres distribuciones (N = 2000, n = 50, c = 2)",
       x = "Proporción de defectuosos (p)",
       y = "Probabilidad de aceptación P(a)",
       color    = "Distribución",
       linetype = "Distribución") +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

3.6 b. ¿Qué sucede si el tamaño del lote es de 2000 unidades?

Cuando \(N = 2000\), la razón \(r = 50/2000 = 0.025 \leq 0.1\), por lo que las condiciones de aproximación sí se cumplen. En este caso:

  • Las tres curvas convergen y se superponen casi completamente.
  • La Binomial y la Poisson son buenas aproximaciones de la Hipergeométrica cuando el lote es grande relativo al tamaño de muestra.
  • Esto confirma que, a mayor tamaño de lote (menor fracción de muestreo), las tres distribuciones son prácticamente intercambiables.

Es decir, \(n \cdot r = 50 \times 0.025 = 1.25 > 1\), así que la distribución sugerida es Poisson (Curva CO tipo B). En este caso las tres curvas quedan casi encima una de la otra, lo que muestra que cuando el lote es grande respecto a la muestra, las tres distribuciones dan resultados muy similares y es válido usar cualquiera de las aproximaciones.


4 Conclusiones

  1. Punto 1: Los tres planes con proporcionalidad \(c/n = AQL\) no son equivalentes. A mayor \(n\), menor riesgo del consumidor y mayor riesgo del productor. El tamaño de muestra determina el poder discriminatorio del plan.

  2. Punto 2 (N=100): Con fracción de muestreo alta (\(r = 0.5\)), las tres distribuciones producen curvas CO diferentes. La Hipergeométrica es la única correcta en este escenario.

  3. Punto 2 (N=2000): Con fracción de muestreo baja (\(r = 0.025\)), las tres distribuciones convergen, validando el uso de Binomial o Poisson como aproximaciones cuando el lote es suficientemente grande.