Introducción

En este taller se diseñan y comparan planes de muestreo de aceptación por variables y por atributos, utilizando los procedimientos y las tablas estudiados en Control de Calidad. En cada literal se presenta la pregunta del taller, el desarrollo en R y la respuesta interpretada, de modo que sea sencillo seguir la solución y sus resultados.

La decisión de aceptar o rechazar un lote se toma bajo riesgos establecidos para el productor (\(\alpha\)) y el consumidor (\(\beta\)). Un lote aceptado no significa que todas sus unidades sean conformes; significa que cumple la regla probabilística del plan seleccionado.

Herramientas: funciones de R base (qnorm, pnorm, qt, pt, pbinom, pbeta), gráficos básicos y knitr::kable para las tablas. No es necesario instalar los paquetes especializados para ejecutar este documento. Las reglas siguen los ejercicios y el material de clase proporcionados.

Ejercicio 1. Plan de muestreo por variables: método k

Planteamiento y datos

Se requiere que la densidad de las piezas de plástico utilizadas en teléfonos celulares sea de al menos 0,70 g/cm³. Las piezas se reciben en lotes grandes. Se necesita un plan que acepte con probabilidad del 90 % los lotes con 2 % de unidades no conformes y con probabilidad de apenas 6 % los lotes con 10 % de unidades no conformes.

Esto corresponde a un límite inferior de especificación (LIE) y a los dos puntos de riesgo de la curva característica de operación (OC):

\[ P_a(p_1=0.02)\geq 0.90,\qquad P_a(p_2=0.10)\leq 0.06. \]

#======================================================#
# EJERCICIO 1 - DATOS
#======================================================#
LIE_1   <- 0.70     # g/cm3
AQL_1   <- 0.02     # Calidad aceptable
alpha_1 <- 0.10     # Riesgo del productor
LTPD_1  <- 0.10     # Calidad rechazable
beta_1  <- 0.06     # Riesgo del consumidor

Pa_AQL_1  <- 1 - alpha_1
Pa_LTPD_1 <- beta_1

knitr::kable(
  data.frame(
    Parametro = c("LIE", "AQL", "Riesgo del productor (alfa)",
                  "LTPD", "Riesgo del consumidor (beta)"),
    Valor = c("0.70 g/cm3", "2%", "10%", "10%", "6%")
  ),
  caption = "Condiciones de diseño del plan por variables"
)
Condiciones de diseño del plan por variables
Parametro Valor
LIE 0.70 g/cm3
AQL 2%
Riesgo del productor (alfa) 10%
LTPD 10%
Riesgo del consumidor (beta) 6%

a. Método k con desviación estándar conocida

Pregunta

Encuentre el plan de muestreo \((n,k)\) por el método k, suponiendo que la desviación estándar del proceso es conocida.

Desarrollo

Cuando la desviación estándar poblacional (\(\sigma\)) es conocida, el criterio de aceptación para una especificación inferior es:

\[ Z_{LIE}=\frac{\bar{x}-LIE}{\sigma}\geq k. \]

Para una característica normalmente distribuida, la probabilidad de aceptar un lote con proporción de no conformes \(p\) se expresa como:

\[ P_a(p)=\Phi\left[\sqrt n\left(z_{1-p}-k\right)\right]. \]

El tamaño teórico de muestra se obtiene mediante los dos puntos OC:

\[ n=\left(\frac{z_{1-\alpha}-z_{\beta}}{z_{1-p_1}-z_{1-p_2}}\right)^2. \]

Luego se redondea hacia arriba y se calcula la constante de aceptación a partir del punto del productor:

\[ k=z_{1-p_1}-\frac{z_{1-\alpha}}{\sqrt n}. \]

#------------------------------------------------------#
# A. DESVIACION ESTANDAR CONOCIDA
#------------------------------------------------------#
z_AQL  <- qnorm(1 - AQL_1)
z_LTPD <- qnorm(1 - LTPD_1)

n_teorico_conocida <- ((qnorm(Pa_AQL_1) - qnorm(Pa_LTPD_1)) /
                       (z_AQL - z_LTPD))^2
n_conocida <- ceiling(n_teorico_conocida)

k_conocida <- z_AQL - qnorm(Pa_AQL_1)/sqrt(n_conocida)

# Probabilidad de aceptacion de un plan k con sigma conocida
Pa_k_conocida <- function(p, n, k) {
  pnorm(sqrt(n) * (qnorm(1 - p) - k))
}

Pa_conocida_AQL  <- Pa_k_conocida(AQL_1, n_conocida, k_conocida)
Pa_conocida_LTPD <- Pa_k_conocida(LTPD_1, n_conocida, k_conocida)

cat("Tamaño teórico de muestra:", round(n_teorico_conocida, 4), "\n")
## Tamaño teórico de muestra: 13.4914
cat("Tamaño entero (n):", n_conocida, "\n")
## Tamaño entero (n): 14
cat("Constante de aceptación (k):", round(k_conocida, 6), "\n")
## Constante de aceptación (k): 1.71124
knitr::kable(
  data.frame(
    Punto = c("AQL = 2%", "LTPD = 10%"),
    Pa_obtenida = sprintf("%.4f%%", 100*c(Pa_conocida_AQL, Pa_conocida_LTPD)),
    Exigencia = c("Al menos 90%", "Como máximo 6%"),
    Cumple = c(Pa_conocida_AQL >= Pa_AQL_1,
               Pa_conocida_LTPD <= Pa_LTPD_1)
  ),
  caption = "Verificación de los dos puntos OC (sigma conocida)"
)
Verificación de los dos puntos OC (sigma conocida)
Punto Pa_obtenida Exigencia Cumple
AQL = 2% 90.0000% Al menos 90% TRUE
LTPD = 10% 5.3945% Como máximo 6% TRUE

Respuesta

El plan por variables con desviación conocida es \(n =\) 14 y \(k =\) 1.7112. Se seleccionan 14 piezas y se acepta el lote cuando \(\left(\bar{x}-0.70\right)/\sigma\geq\) 1.7112. El plan cumple los dos riesgos requeridos: \(P_a(2\%) =\) 90 % y \(P_a(10\%) =\) 5.395 %.

b. Método k con desviación estándar desconocida

Pregunta

Encuentre el plan suponiendo ahora que la desviación estándar es desconocida y debe estimarse con la muestra. Compare los tamaños de muestra de ambos planes y explique a qué se debe la diferencia.

Desarrollo

Cuando \(\sigma\) no se conoce, debe estimarse mediante la desviación estándar muestral (\(S\)). El estadístico de decisión sigue siendo \(Z_{LIE}=(\bar{x}-LIE)/S\), pero su distribución muestral ya no es normal estándar: se utiliza una distribución t no central.

\[ T=\sqrt{n}\,\frac{\bar{x}-LIE}{S},\qquad T\sim t_{n-1}\left(\delta=\sqrt{n}\,z_{1-p}\right). \]

La probabilidad de aceptación se obtiene como \(P(T\geq k\sqrt{n})\). Para buscar el tamaño mínimo se recorren tamaños enteros \(n\) y se determina si existe un valor \(k\) que satisfaga simultáneamente ambos puntos de riesgo.

#------------------------------------------------------#
# B. DESVIACION ESTANDAR DESCONOCIDA
#------------------------------------------------------#
# La t no central permite evaluar los riesgos al estimar sigma con S.

n_desconocida <- NA_integer_
k_desconocida <- NA_real_

for (n_candidato in 2:500) {
  gl <- n_candidato - 1

  # El riesgo del productor exige k <= k_maximo.
  k_maximo <- qt(alpha_1, df = gl,
                 ncp = sqrt(n_candidato)*z_AQL) / sqrt(n_candidato)

  # El riesgo del consumidor exige k >= k_minimo.
  k_minimo <- qt(1 - beta_1, df = gl,
                 ncp = sqrt(n_candidato)*z_LTPD) / sqrt(n_candidato)

  if (k_minimo <= k_maximo) {
    n_desconocida <- n_candidato
    k_desconocida <- k_maximo
    break
  }
}
if (is.na(n_desconocida)) stop("No se encontró un plan viable.")

Pa_k_desconocida <- function(p, n, k) {
  pt(k*sqrt(n), df = n-1, ncp = sqrt(n)*qnorm(1-p),
     lower.tail = FALSE)
}

Pa_desconocida_AQL  <- Pa_k_desconocida(AQL_1, n_desconocida, k_desconocida)
Pa_desconocida_LTPD <- Pa_k_desconocida(LTPD_1, n_desconocida, k_desconocida)

diferencia_n <- n_desconocida - n_conocida

cat("Plan con sigma desconocida: n =", n_desconocida,
    "; k =", round(k_desconocida, 6), "\n")
## Plan con sigma desconocida: n = 34 ; k = 1.716952
cat("Pa(2%):", round(100*Pa_desconocida_AQL, 4), "%\n")
## Pa(2%): 90 %
cat("Pa(10%):", round(100*Pa_desconocida_LTPD, 4), "%\n")
## Pa(10%): 5.82 %
knitr::kable(
  data.frame(
    Condicion = c("Sigma conocida", "Sigma desconocida"),
    n = c(n_conocida, n_desconocida),
    k = round(c(k_conocida, k_desconocida), 4),
    Pa_AQL = sprintf("%.3f%%",100*c(Pa_conocida_AQL,Pa_desconocida_AQL)),
    Pa_LTPD = sprintf("%.3f%%",100*c(Pa_conocida_LTPD,Pa_desconocida_LTPD))
  ),
  caption = "Comparación de planes por variables"
)
Comparación de planes por variables
Condicion n k Pa_AQL Pa_LTPD
Sigma conocida 14 1.7112 90.000% 5.395%
Sigma desconocida 34 1.7170 90.000% 5.820%

Respuesta

Con desviación desconocida se obtiene el plan \(n =\) 34 y \(k =\) 1.717. Se inspeccionan 20 unidades adicionales con respecto al caso de \(\sigma\) conocida. Esto sucede porque calcular \(S\) introduce incertidumbre adicional; la muestra debe ser más grande para mantener la protección exigida al productor y al consumidor.

c. Decisión con la muestra obtenida

Pregunta

Con el plan del literal b, se tomó una muestra del tamaño indicado y se obtuvo un promedio de \(0,73\;\mathrm{g/cm^3}\) y una desviación estándar \(S=0,018\;\mathrm{g/cm^3}\). ¿Cuál es la decisión a tomar? Exprese también el criterio de aceptación en términos de \(\bar{x}\), de forma que pueda aplicarlo directamente el inspector.

Desarrollo

Se dispone de una muestra de tamaño 34, con media \(\bar{x}=0.73\) g/cm³ y desviación estándar \(S=0.018\) g/cm³. El inspector debe comprobar:

\[ Z_{LIE}=\frac{\bar{x}-LIE}{S}\geq k. \]

Despejando la media, se obtiene una regla sencilla para aplicación directa:

\[ \boxed{\bar{x}\geq LIE+kS}. \]

#------------------------------------------------------#
# C. DECISION DEL LOTE
#------------------------------------------------------#
xbarra_1 <- 0.73
S_1      <- 0.018

Z_LIE_1 <- (xbarra_1 - LIE_1)/S_1
xbarra_minima_1 <- LIE_1 + k_desconocida*S_1

decision_1 <- if (Z_LIE_1 >= k_desconocida) "ACEPTAR" else "RECHAZAR"

cat("Estadístico Z_LIE:", round(Z_LIE_1, 6), "\n")
## Estadístico Z_LIE: 1.666667
cat("Constante k:", round(k_desconocida, 6), "\n")
## Constante k: 1.716952
cat("Media mínima para aceptar:", round(xbarra_minima_1, 6), "g/cm3\n")
## Media mínima para aceptar: 0.730905 g/cm3
cat("Media observada:", xbarra_1, "g/cm3\n")
## Media observada: 0.73 g/cm3
cat("DECISIÓN:", decision_1, "EL LOTE\n")
## DECISIÓN: RECHAZAR EL LOTE

Respuesta

Se obtiene \(Z_{LIE}=\) 1.6667, menor que el valor crítico \(k=\) 1.717. La media debe ser, como mínimo, 0.730905 g/cm³, pero se encontró 0,730 g/cm³. Por lo tanto, corresponde RECHAZAR el lote.

Para futuras muestras con tamaño 34, el inspector puede usar directamente la regla \(\bar{x}\geq 0.70+\) 1.717 \(\times S\). No basta con que la media supere 0,70: también se debe tener en cuenta la variabilidad.

Ejercicio 2. Ingenio azucarero: MIL-STD-414, método M

Planteamiento y datos

Un ingenio recibe lotes de 2.500 sacos de azúcar. Los sacos de 49,8 kg o menos se consideran de bajo peso. Se requiere diseñar un plan según MIL-STD-414, con nivel general de inspección IV, AQL de 0,15 %, inspección normal y desviación estándar desconocida. Posteriormente se evaluará la misma muestra bajo inspección severa.

En este caso solo existe un límite inferior de especificación. El método M compara el porcentaje de no conformes estimado (\(P_i\)) con el valor máximo admisible (\(M\)) de la tabla.

#======================================================#
# EJERCICIO 2 - DATOS
#======================================================#
N_2     <- 2500
LIE_2   <- 49.8
AQL_2   <- 0.0015      # 0.15% como proporción
nivel_2 <- "IV"
xbarra_2 <- 50.05
S_2     <- 0.1

cat("Tamaño del lote:", N_2, "sacos\n")
## Tamaño del lote: 2500 sacos
cat("LIE:", LIE_2, "kg\n")
## LIE: 49.8 kg
cat("Nivel de inspección:", nivel_2, "\n")
## Nivel de inspección: IV
cat("AQL:", 100*AQL_2, "%\n")
## AQL: 0.15 %

a. Letra código, tamaño de muestra y valor M

Pregunta

Enuncie el plan de muestreo correspondiente: letra código, tamaño de muestra \(n\) y máximo porcentaje admisible \(M\).

Desarrollo

Se utilizan las tablas MIL-STD-414 presentadas en las diapositivas 17 y 18 de 6. Planes de muestreo por Variables:

  1. En Tabla 1, para el intervalo de 1.301 a 3.200 unidades y el nivel IV, se encuentra la letra código L.
  2. En Tabla 2, la letra L corresponde a un tamaño muestral de 40 unidades.
  3. Para AQL = 0,15 %, la columna de inspección normal establece \(M=0,566\%\). En la fila de inspección severa de esa misma tabla se obtiene \(M=0,401\%\).

Estos valores proceden de las tablas del curso; se escriben como parámetros, no se calculan con una distribución de probabilidad.

#------------------------------------------------------#
# A. CONSULTA DE LAS TABLAS MIL-STD-414
#------------------------------------------------------#
letra_codigo_2 <- "L"
n_2           <- 40
M_normal_pct_2 <- 0.566
M_severa_pct_2 <- 0.401

# Convertimos los porcentajes a proporciones para comparar con Pi.
M_normal_2 <- M_normal_pct_2/100
M_severa_2 <- M_severa_pct_2/100

knitr::kable(
  data.frame(
    Inspeccion = c("Normal", "Severa"),
    Letra = c(letra_codigo_2, letra_codigo_2),
    n = c(n_2, n_2),
    M_porcentaje = sprintf("%.3f%%", c(M_normal_pct_2, M_severa_pct_2))
  ),
  caption = "Plan seleccionado con las tablas MIL-STD-414"
)
Plan seleccionado con las tablas MIL-STD-414
Inspeccion Letra n M_porcentaje
Normal L 40 0.566%
Severa L 40 0.401%

Respuesta

Bajo inspección normal, se emplea la letra código L, una muestra de 40 sacos y un máximo admisible \(M=\) 0.566 %. Se aceptará el lote si el porcentaje estimado de sacos bajos de peso no supera dicho máximo.

b. Decisión del lote bajo inspección normal

Pregunta

Si se realiza el muestreo de las \(n\) unidades indicadas por el plan y se encuentra una media muestral de 50,05 kg y una desviación estándar de 0,1 kg, ¿se acepta o no dicho lote?

Desarrollo

De la muestra se obtiene \(\bar{x}=50.05\) kg y \(S=0.1\) kg. Se calcula:

\[ Z_{LIE}=\frac{\bar{x}-LIE}{S}. \]

Dado que \(\sigma\) es desconocida, el procedimiento M estima \(P_i\) mediante las tablas de conversión correspondientes. Para obtener el mismo resultado en R base se utiliza la función beta incompleta, equivalente al estimador de la tabla para \(S\) desconocida:

\[ P_i=F_{\mathrm{Beta}(n/2-1,\ n/2-1)}\left(\frac12-\frac{Z_{LIE}\sqrt n}{2(n-1)}\right), \]

limitando el argumento de la función beta al intervalo \([0,1]\). Esta expresión reproduce los valores de la tabla utilizada en clase. Regla de decisión: aceptar si \(P_i\leq M\); rechazar si \(P_i>M\).

#------------------------------------------------------#
# B. PORCENTAJE ESTIMADO DE NO CONFORMES
#------------------------------------------------------#
# Implementación sin paquetes extra del método M, sigma desconocida.
EPn_inferior_desconocida <- function(LSL, xbar, s, n) {
  if (n <= 2 || s <= 0) stop("Se requiere n > 2 y s > 0")
  z <- (xbar - LSL)/s
  x_beta <- 0.5 - 0.5*z*sqrt(n)/(n-1)
  x_beta <- max(0, min(1, x_beta))
  pbeta(x_beta, shape1 = n/2-1, shape2 = n/2-1)
}

Z_LIE_2 <- (xbarra_2 - LIE_2)/S_2
Pi_2 <- EPn_inferior_desconocida(LIE_2, xbarra_2, S_2, n_2)

decision_normal_2 <- if (Pi_2 <= M_normal_2) "ACEPTAR" else "RECHAZAR"

cat("Z_LIE =", round(Z_LIE_2, 4), "\n")
## Z_LIE = 2.5
cat("Porcentaje estimado Pi =", round(Pi_2*100, 6), "%\n")
## Porcentaje estimado Pi = 0.472539 %
cat("Máximo M (normal) =", M_normal_pct_2, "%\n")
## Máximo M (normal) = 0.566 %
cat("DECISIÓN:", decision_normal_2, "EL LOTE\n")
## DECISIÓN: ACEPTAR EL LOTE

Respuesta

El estadístico es \(Z_{LIE}=\) 2.5 y se estima \(P_i=\) 0.4725 % de sacos bajo el límite. Como 0.4725 % es menor que \(M=\) 0.566 %, la decisión bajo inspección normal es ACEPTAR el lote.

c. Decisión bajo inspección severa

Pregunta

Suponga que, por el historial reciente de calidad, el lote debe evaluarse bajo inspección severa. ¿Cambia la decisión? ¿Qué implica esto para el ingenio?

Desarrollo

La norma mantiene la letra código y el tamaño de muestra, pero reduce el porcentaje máximo admitido. El mismo \(P_i\) debe compararse ahora con \(M=0,401\%\).

#------------------------------------------------------#
# C. INSPECCION SEVERA
#------------------------------------------------------#
decision_severa_2 <- if (Pi_2 <= M_severa_2) "ACEPTAR" else "RECHAZAR"

knitr::kable(
  data.frame(
    Inspeccion = c("Normal", "Severa"),
    n = c(n_2, n_2),
    Pi_estimado = sprintf("%.4f%%", 100*Pi_2),
    M_admisible = sprintf("%.3f%%", c(M_normal_pct_2, M_severa_pct_2)),
    Decision = c(decision_normal_2, decision_severa_2)
  ),
  caption = "Comparación de decisiones en inspección normal y severa"
)
Comparación de decisiones en inspección normal y severa
Inspeccion n Pi_estimado M_admisible Decision
Normal 40 0.4725% 0.566% ACEPTAR
Severa 40 0.4725% 0.401% RECHAZAR

Respuesta

Sí cambia la decisión. Como el porcentaje estimado es 0.4725 %, que supera el máximo 0.401 %, el lote se debe RECHAZAR bajo inspección severa. Para el ingenio esto implica un control más estricto, gestionar el lote no aceptado conforme al procedimiento interno y revisar las causas de los problemas de peso.

Ejercicio 3. Plan simple por atributos y comparación

Planteamiento y datos

Se toman nuevamente las condiciones del ejercicio 1: \(p_1=2\%\), \(\alpha=10\%\), \(p_2=10\%\) y \(\beta=6\%\). Debe diseñarse un plan simple por atributos y compararse con los planes por variables.

Como el enunciado indica que se reciben grandes lotes, se usa el modelo binomial para contar piezas no conformes. Para este plan, \(n\) es la muestra y \(c\) es la cantidad máxima de no conformes que permite aceptar el lote:

\[ P_a(p)=P(D\leq c)=\sum_{d=0}^{c}{n\choose d}p^d(1-p)^{n-d}. \]

a. Diseño del plan por atributos

Pregunta

Diseñe un plan de muestreo simple por atributos \((n,c)\) que cumpla con ambos puntos de la curva OC.

Desarrollo

Se buscan valores enteros de \(n\) y \(c\) que cumplan las dos condiciones:

\[ P_a(0.02)\geq 0.90,\qquad P_a(0.10)\leq 0.06. \]

Se examinan tamaños muestrales crecientes hasta obtener el primer plan que satisface simultáneamente ambos riesgos.

#======================================================#
# EJERCICIO 3 - PLAN SIMPLE POR ATRIBUTOS
#======================================================#
plan_atributos <- NULL

for (n_candidato in 1:500) {
  for (c_candidato in 0:n_candidato) {
    Pa_bueno <- pbinom(c_candidato, size = n_candidato, prob = AQL_1)
    Pa_malo  <- pbinom(c_candidato, size = n_candidato, prob = LTPD_1)

    if (Pa_bueno >= Pa_AQL_1 && Pa_malo <= Pa_LTPD_1) {
      plan_atributos <- list(
        n = n_candidato, c = c_candidato,
        Pa_AQL = Pa_bueno, Pa_LTPD = Pa_malo
      )
      break
    }
  }
  if (!is.null(plan_atributos)) break
}
if (is.null(plan_atributos)) stop("No se encontró plan en el rango evaluado.")

n_atributos <- plan_atributos$n
c_atributos <- plan_atributos$c

cat("Plan obtenido: n =", n_atributos, "; c =", c_atributos, "\n")
## Plan obtenido: n = 73 ; c = 3
cat("Pa(AQL) =", round(100*plan_atributos$Pa_AQL, 4), "%\n")
## Pa(AQL) = 94.1157 %
cat("Pa(LTPD) =", round(100*plan_atributos$Pa_LTPD, 4), "%\n")
## Pa(LTPD) = 5.7952 %
knitr::kable(
  data.frame(
    Punto = c("AQL = 2%", "LTPD = 10%"),
    Pa = sprintf("%.4f%%", 100*c(plan_atributos$Pa_AQL,
                                 plan_atributos$Pa_LTPD)),
    Condicion = c("Al menos 90%", "Como máximo 6%"),
    Cumple = c(plan_atributos$Pa_AQL >= Pa_AQL_1,
               plan_atributos$Pa_LTPD <= Pa_LTPD_1)
  ),
  caption = "Verificación de riesgos del plan simple por atributos"
)
Verificación de riesgos del plan simple por atributos
Punto Pa Condicion Cumple
AQL = 2% 94.1157% Al menos 90% TRUE
LTPD = 10% 5.7952% Como máximo 6% TRUE

Respuesta

El plan mínimo encontrado es \(n=\) 73, \(c=\) 3. Se inspeccionan 73 piezas y se acepta el lote si se encuentran 3 o menos unidades no conformes. Si aparecen más de 3, se rechaza. Sus probabilidades de aceptación en los dos puntos son 94.116 % y 5.795 %, por lo que satisface las condiciones establecidas.

b. Comparación del tamaño de muestra

Pregunta

Compare el tamaño de muestra de este plan con los de los planes por variables obtenidos en el punto 1. ¿Cuál requiere menos unidades inspeccionadas?

Desarrollo

#------------------------------------------------------#
# B. TABLA COMPARATIVA DE LOS TRES PLANES
#------------------------------------------------------#
tabla_comparacion <- data.frame(
  Plan = c("Variables, sigma conocida",
           "Variables, sigma desconocida",
           "Atributos, plan simple"),
  Muestra_n = c(n_conocida, n_desconocida, n_atributos),
  Regla = c(sprintf("k = %.4f", k_conocida),
            sprintf("k = %.4f", k_desconocida),
            sprintf("c = %d", c_atributos))
)

knitr::kable(tabla_comparacion,
             caption = "Comparación de tamaños muestrales")
Comparación de tamaños muestrales
Plan Muestra_n Regla
Variables, sigma conocida 14 k = 1.7112
Variables, sigma desconocida 34 k = 1.7170
Atributos, plan simple 73 c = 3
cat("Atributos vs. variables con sigma desconocida:",
    n_atributos-n_desconocida, "unidades adicionales\n")
## Atributos vs. variables con sigma desconocida: 39 unidades adicionales
cat("Atributos vs. variables con sigma conocida:",
    n_atributos-n_conocida, "unidades adicionales\n")
## Atributos vs. variables con sigma conocida: 59 unidades adicionales

Respuesta

El plan que requiere menos unidades inspeccionadas es el de variables con desviación conocida, con 14 piezas. El plan por variables con desviación desconocida requiere 34, mientras que el plan por atributos necesita 73. Por tanto, los planes por variables son más eficientes en cantidad de inspecciones, aunque esto no asegura que sean los más económicos.

c. Recomendación considerando costo y destrucción de piezas

Pregunta

Si medir la densidad exige un ensayo de laboratorio costoso y destructivo, mientras que clasificar una pieza como conforme o no conforme es rápido y económico, ¿qué plan recomendaría? ¿Qué otros factores tendría en cuenta?

Desarrollo

Si medir densidad exige una prueba de laboratorio costosa y destructiva, pero la clasificación por atributos es rápida y barata, el número de muestras por sí solo no basta para escoger el método.

Definamos los costos variables por unidad examinada:

\[ C_{\mathrm{atributos}}=n_a\,C_a,\qquad C_{\mathrm{variables}}=n_v\,C_v. \]

Para el caso en que \(\sigma\) es desconocida, el punto en que ambos costos variables se igualan es:

\[ \frac{C_v}{C_a}=\frac{n_a}{n_v}. \]

#------------------------------------------------------#
# C. UMBRAL DE COSTO PARA COMPARAR LOS PLANES
#------------------------------------------------------#
umbral_costos_desconocida <- n_atributos / n_desconocida
umbral_costos_conocida <- n_atributos / n_conocida

cat("Si sigma es desconocida, el ensayo por variables debe costar\n")
## Si sigma es desconocida, el ensayo por variables debe costar
cat("menos de", round(umbral_costos_desconocida, 3),
    "veces el costo unitario de clasificar\n")
## menos de 2.147 veces el costo unitario de clasificar
cat("para tener menor costo variable que el plan por atributos.\n")
## para tener menor costo variable que el plan por atributos.
cat("Si sigma es conocida, ese cociente es",
    round(umbral_costos_conocida, 3), "\n")
## Si sigma es conocida, ese cociente es 5.214

Respuesta

Se recomendaría el plan por atributos, siempre que clasificar cada pieza como conforme o no conforme sea realmente un procedimiento confiable, rápido y no destructivo. Aunque exige revisar más unidades, podría evitar numerosos ensayos de laboratorio y reducir el costo total.

Con \(\sigma\) desconocida, si un ensayo por variables cuesta más de 2.147 veces lo que cuesta clasificar una pieza, el plan por atributos tendrá menor costo variable de inspección (sin incluir costos fijos).

Para decidir definitivamente también se tendrían en cuenta el costo de los equipos, el tiempo de ensayo, el valor de las piezas destruidas, la exactitud de las clasificaciones, la capacidad del laboratorio, la confiabilidad de las mediciones y las consecuencias de aceptar lotes de mala calidad. Importante: si clasificar una pieza requiere realizar el mismo ensayo destructivo de densidad, esa ventaja económica del plan por atributos ya no estaría garantizada.

Curvas características de operación (OC) de los tres planes

Estas curvas permiten comparar cómo cambia la probabilidad de aceptar un lote a medida que aumenta la proporción de unidades no conformes. Los puntos de riesgo establecidos se muestran en el gráfico.

#------------------------------------------------------#
# GRAFICA DE LAS TRES CURVAS OC
#------------------------------------------------------#
P <- seq(0.001, 0.14, by = 0.001)

Pa_atributos <- pbinom(c_atributos, n_atributos, P)
Pa_variables_conocida <- Pa_k_conocida(P, n_conocida, k_conocida)
Pa_variables_desconocida <- sapply(
  P, Pa_k_desconocida,
  n = n_desconocida, k = k_desconocida
)

plot(P, Pa_atributos,
     type = "l", lwd = 2, col = "#175CD3",
     xlab = "Proporción de unidades no conformes (p)",
     ylab = "Probabilidad de aceptación (Pa)",
     main = "Curvas OC de los tres planes",
     xlim = c(0, 0.14), ylim = c(0, 1))
lines(P, Pa_variables_conocida,
      col = "#64748B", lwd = 2, lty = 2)
lines(P, Pa_variables_desconocida,
      col = "#123B73", lwd = 2, lty = 3)
abline(v = c(AQL_1, LTPD_1), col = "gray50", lty = 3)
points(c(AQL_1, LTPD_1), c(Pa_AQL_1, Pa_LTPD_1),
       pch = 19, col = "black")
grid()
legend("topright", bty = "n", cex = 0.72,
       legend = c(sprintf("Atributos (n=%d, c=%d)", n_atributos, c_atributos),
                  sprintf("Variables, sigma conocida (n=%d)", n_conocida),
                  sprintf("Variables, sigma desconocida (n=%d)", n_desconocida),
                  "Puntos de diseño (AQL y LTPD)"),
       col = c("#175CD3", "#64748B", "#123B73", "black"),
       lty = c(1, 2, 3, NA), pch = c(NA, NA, NA, 19),
       lwd = c(2, 2, 2, NA))
Comparación de curvas OC para los planes por variables y atributos

Comparación de curvas OC para los planes por variables y atributos

Referencias

  • Bermúdez Vera, I. M. (2026). Muestreo por variables [Presentación de clase]. Universidad del Valle, Control de Calidad.

  • Burr, I. (1976). Statistical quality control methods.

  • Duncan, A. J. (1989). Control de calidad y estadística industrial (5.ª ed.). Alfa Omega.

  • Gutiérrez Pulido, H. (2009). Control de calidad y Seis Sigma (2.ª ed.). McGraw-Hill.

  • Montgomery, D. C. (2004). Control estadístico de la calidad (3.ª ed.). Limusa Wiley.

  • Vargas, J. A. (2006). Control estadístico de calidad (1.ª ed.). Universidad Nacional.