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