library(tidyverse)
library(qcc)
library(SixSigma)
library(openxlsx) # para leer archivos en Excel
library(nortest) # pruebas de normalidadAnálisis de capacidad en R para datos normales
Introducción
Al finalizar la Fase I, cuando los gráficos de control hayan demostrado que el proceso se encuentra bajo control y en un nivel aceptable, se pueden calcular los PCR para documentar el estado del proceso.
Librerías
Análisis de capacidad de proceso - Variables
Empecemos por cargar los datos.
datos <- openxlsx::read.xlsx("datos/Datos para Capacidad en R.xlsx")Usando qcc
Luego, se verifica que que el proceso se encuentre bajo control estadístico, para ello vamos a comenzar con un gráfico \(\bar{x}-R\).
X_R <- qcc::qcc(datos, type = "xbar")
plot(X_R)El segundo requisito, es que los datos sigan la distribución normal. Por ejemplo, con un \(\alpha=0.001\).
as.matrix(datos) %>%
shapiro.test()
Shapiro-Wilk normality test
data: .
W = 0.95336, p-value = 0.00139
Una vez resuelto esto, se puede evaluar la capacidad del proceso.
qcc::process.capability(X_R, spec.limits = c(7.115, 7.135), target = 7.125)
Process Capability Analysis
Call:
qcc::process.capability(object = X_R, spec.limits = c(7.115, 7.135), target = 7.125)
Number of obs = 100 Target = 7.125
Center = 7.125 LSL = 7.115
StdDev = 0.002098 USL = 7.135
Capability indices:
Value 2.5% 97.5%
Cp 1.589 1.368 1.809
Cp_l 1.573 1.381 1.765
Cp_u 1.605 1.409 1.800
Cp_k 1.573 1.344 1.801
Cpm 1.587 1.367 1.807
Exp<LSL 0% Obs<LSL 0%
Exp>USL 0% Obs>USL 0%
Usando SixSigma
Este paquete puede ser un poco más sencillo de usar. Pero necesita los datos en una sola columna.
datos_una_col <- datos %>%
tidyr::pivot_longer(everything())SixSigma::ss.study.ca(xST = datos_una_col$value, # corto plazo
xLT = datos_una_col$value, # largo plazo
Target = 7.115, LSL=7.135,USL=7.125)
Análisis de capacidad de proceso - Atributos
El análisis de capacidad por atributos se aplica cuando la variable de interés no se mide de forma continua, sino que se clasifica en categorías discretas (por ejemplo, unidades defectuosas o número de defectos). A diferencia de los índices \(C_p\) y \(C_{pk}\), que asumen normalidad y datos continuos, en este caso se evalúa el porcentaje de no conformidades (p) o el número promedio de defectos por unidad (c, u). La comparación se realiza frente a un valor máximo permitido, definido por especificaciones o normas del cliente.
# Datos de ejemplo
no_conformes <- c(3, 2, 1, 4, 2, 3, 0, 5, 2, 3, 1, 4, 2,
3, 2, 1, 4, 2, 3, 3, 2, 4, 1, 3, 2)
tamano_muestra <- rep(100, length(no_conformes))
# Gráfico p (proporción de no conformes)
grafico_p <- qcc::qcc(no_conformes, sizes = tamano_muestra, type = "p")
plot(grafico_p)# Evaluación de capacidad para atributos
p_promedio <- grafico_p$center
p_max <- 0.03
cpk <- (p_max - p_promedio)/(3*sqrt(p_promedio *
(1 - p_promedio)/mean(tamano_muestra)))
cpk[1] 0.1114575
¿Cómo modificar valores?
Si se desea establecer otros límites de control, el centro o nominal del proceso, u otros detalles, puede consultar la documentación de la función con help(process.capability)
Bibliografía
- Lawson, J. (2021). An Introduction to acceptance sampling and SPC with R. CRC Press.