Control de Calidad Estadístico

Jonathan Martez

2024-12-02

Encabezado del problema

Una empresa fabrica rodamiento para automóviles sobre cuyo diámetro se especifica un valor de 20 ± 4 mm. Una muestra de 29 rodamientos tomados en intervalos de 15 minutos proporcionó los siguientes diámetros en milímetros:

Descripción de la imagen

Se pide:

a) Construir el gráfico de control del diámetro de los rodamientos.

import matplotlib.pyplot as plt

# Datos de ejemplo
datos = [20, 19, 18, 19, 20,
               20, 23, 22, 24, 21,
               21, 22, 22, 20, 19,
               18, 17, 18, 16, 20,
               17, 19, 20, 18, 21,
               22, 20, 21, 23]

# Gráfico de racha
plt.plot(datos, marker='o', linestyle='-', color='#66CDAA')
plt.title("Gráfico de Racha de Control de Calidad")
plt.xlabel("Número de la Muestra")
plt.ylabel("Rodamiento para automóviles")
plt.axhline(y=sum(datos)/len(datos), linestyle='--', label="Promedio", color='#EE1289')
plt.legend()
plt.show()

Realizando las consideraciones principal para identificar si un gráfico de racha está fuera de control, tenemos que aunque en un inicio del gráfico la varianza tiene una mayor variación, esta se mantiene, aunque con una pequeña disminución. entre la observación 15 y 20 se dió el bajo más alto, pero ya para el resto del gráfico se observa que esta sigue en crecimiento. No hay un patrón ciclico como tal, realmente el proceso se mantiene con variación sin patrón. Todas estas consideraciones nos llevan a concluir que estamos frente a un proceso fuera de control.

b) Calcular el índice de capacidad del proceso de producción de los rodamientos.

# Diámetros proporcionados
diametros <- c(20, 19, 18, 19, 20,
               20, 23, 22, 24, 21,
               21, 22, 22, 20, 19,
               18, 17, 18, 16, 20,
               17, 19, 20, 18, 21,
               22, 20, 21, 23)

# Especificaciones iniciales
LSL <- 20 - 4  # Límite inferior
USL <- 20 + 4  # Límite superior

# Estadísticas básicas
mean_diam <- mean(diametros)        # Media del proceso
sd_diam <- sd(diametros)            # Desviación estándar
target <- 20                        # Valor objetivo
center <- (USL + LSL) / 2           # Centro de los límites

# Cálculos
Cp <- (USL - LSL) / (6 * sd_diam)
Cpk <- min((USL - mean_diam) / (3 * sd_diam), (mean_diam - LSL) / (3 * sd_diam))
Cr <- 1 / Cp
Cpm <- (USL - LSL) / (6 * sqrt(sd_diam^2 + (mean_diam - target)^2))
K <- abs(mean_diam - center) / (USL - LSL)

# Crear un dataframe con los datos
data <- data.frame(diametros)

library(ggplot2)

# Crear el histograma con métricas
ggplot(data, aes(x = diametros)) +
  geom_histogram(binwidth = 1, fill = "#66CDAA", color = "black") +
  geom_vline(xintercept = LSL, color = "deeppink", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = USL, color = "deeppink", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = mean_diam, color = "#00FFFF", linewidth = 1) +
  labs(title = "Histograma de capacidad del proceso",
       x = "Diámetros (mm)",
       y = "Frecuencia") +
  annotate("text", x = 25, y = 5, label = paste("Cp =", round(Cp, 2)), color = "black") +
  annotate("text", x = 25, y = 4.5, label = paste("Cpk =", round(Cpk, 2)), color = "black") +
  annotate("text", x = 25, y = 4, label = paste("Cr =", round(Cr, 2)), color = "black") +
  annotate("text", x = 25, y = 3.5, label = paste("Cpm =", round(Cpm, 2)), color = "black") +
  annotate("text", x = 25, y = 3, label = paste("K =", round(K, 2)), color = "black") +
  theme_minimal()

En este caso haremos un análisis por cada índices de capacidad:

  • Cp: Para este caso tenemos Cp < 1 lo que significa que la variabilidad del proceso es mayor al rango permitido por las especificaciones. Este proceso no tiene suficiente capacidad potencial para cumplir con los requisitos.

  • Cpk: Como Cpk = Cp, el proceso no está centrado en el rango de especificación y la variabilidad sigue siendo muy alta. Tanto el límite inferior como el superior están en riesgo de no cumplirse.

  • Cr: Cr = 1.47. Esto indica que el proceso utiliza el 147 % del rango de especificación, lo cual es excesivo y poco eficiente. Un Cr > 1 confirma que el proceso tiene mucha variación y necesita ajustes.

  • Cpm: Como Cpm = Cp, esto refleja que el proceso está centrado en el objetivo, pero con demasiada variación.

  • K: Un K = 0 indica que el proceso está perfectamente centrado en el rango de especificación. Esto significa que el problema no es el desplazamiento de la media, sino la variabilidad excesiva del proceso.

El principal problema en este caso es la alta variabilidad del proceso (σ), que hace que muchas piezas estén fuera de especificación, aunque el proceso esté centrado.

Calcular el índice de capacidad si las especificaciones hubieran sido 20 ± 8 mm.

# Especificaciones iniciales
LSL <- 20 - 8  # Límite inferior
USL <- 20 + 8  # Límite superior

# Estadísticas básicas
center <- (USL + LSL) / 2           # Centro de los límites

# Cálculos
Cp <- (USL - LSL) / (6 * sd_diam)
Cpk <- min((USL - mean_diam) / (3 * sd_diam), (mean_diam - LSL) / (3 * sd_diam))
Cr <- 1 / Cp
Cpm <- (USL - LSL) / (6 * sqrt(sd_diam^2 + (mean_diam - target)^2))
K <- abs(mean_diam - center) / (USL - LSL)

# Crear un dataframe con los datos
data <- data.frame(diametros)

# Crear el histograma con métricas
ggplot(data, aes(x = diametros)) +
  geom_histogram(binwidth = 1, fill = "#66CDAA", color = "black") +
  geom_vline(xintercept = LSL, color = "deeppink", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = USL, color = "deeppink", linetype = "dashed", linewidth = 1) +
  geom_vline(xintercept = mean_diam, color = "#00FFFF", linewidth = 1) +
  labs(title = "Histograma de capacidad del proceso",
       x = "Diámetros (mm)",
       y = "Frecuencia") +
  annotate("text", x = 25, y = 5, label = paste("Cp =", round(Cp, 2)), color = "black") +
  annotate("text", x = 25, y = 4.5, label = paste("Cpk =", round(Cpk, 2)), color = "black") +
  annotate("text", x = 25, y = 4, label = paste("Cr =", round(Cr, 2)), color = "black") +
  annotate("text", x = 25, y = 3.5, label = paste("Cpm =", round(Cpm, 2)), color = "black") +
  annotate("text", x = 25, y = 3, label = paste("K =", round(K, 2)), color = "black") +
  theme_minimal()

En este caso haremos un análisis por cada índices de capacidad:

  • Cp: Un Cp > 1 indica que, en teoría, el proceso tiene suficiente capacidad para cumplir con las especificaciones si estuviera perfectamente centrado. Sin embargo, este valor no considera el desplazamiento real del proceso hacia los límites.

  • Cpk: Un Cpk de 1.36 indica que el proceso está bien centrado dentro de las especificaciones y es capaz de producir productos dentro del rango de especificaciones sin problemas. No hay un sesgo significativo del proceso.

  • Cr: El índice Cr compara el rendimiento del proceso con el límite de especificación más cercano. Un Cr de 0.74 es inferior a 1, lo que indica que el proceso no está utilizando completamente la capacidad de las especificaciones.

  • Cpm: Un valor de Cpm de 1.36 es idéntico al de Cp y Cpk, lo que significa que no hay un desplazamiento significativo y el proceso está muy bien centrado.

  • K: Un K = 0 Un valor de K de 0 significa que la media del proceso está exactamente en el centro de las especificaciones, sin sesgo.