Control estadístico de procesos
Gráficos de control
Jordi Cuadros, Lucinio González
Setiembre de 2018

Introducción a los gráficos de control

Variabilidad y control estadístico

  • Todo proceso tiene una variabilidad natural inherente al mismo.
  • Un proceso que solo presenta variabilidad natural se dice que está bajo control estadístico.
  • Si existen causas especiales de variabilidad, se deben eliminar una a una, de forma que al final solo quede la variabilidad natural del proceso y el proceso esté bajo control estadístico.
  • Si se han eliminado los errores sistemáticos (que derivan de causas especiales), la media de un conjunto de medidas repetidas (muestra) es la mejor estimación que se puede realizar del verdadero valor de la medida (valor real).

Gráficos de control

Un gráfico de control es una representación gráfica (gráfico de secuencia) de un característica (cuantitativa -variable- o cualitativa -atributo-) de un proceso en función de un índice de secuencia (tiempo).

Fueron propuestos por Shewhart en 1924.

 

Shewhart, W. A. (1924). Some applications of statistical methods to the analysis of physical and engineering data. Bell System Technical Journal, 3(1), 43-87

Funciones de los gráficos de control

  • Ayudan a mejorar la productividad (menos no conformes)
  • Ayudan a prevenir defectos
  • Evitan ajustes innecesarios del proceso (es capaz de distinguir entre variabilidad natural y variabilidad por causas especiales)
  • Facilitan información para la detección de causas especiales (formas no aleatorias características)
  • Permiten la evaluación de la capacidad del proceso

Tipos de gráficos de control

  • Para variables (numéricas)

    Tendencia central Dispersión
    Gráfico Xbarra Gráfico s
    Gráfico I Gráfico R (MR)
  • Para atributos

    Unidades defectuosas Defectos
    Gráfico np Gráfico c
    Gráfico p Gráfico u

Criterios de selección

https://www.isixsigma.com/tools-templates/control-charts/a-guide-to-control-charts/

Subgrupos racionales

Casi todos los gráficos de Shewhart se basan en subgrupos (subgrupos racionales o muestras)

El tamaño de los subgrupos debe ser tal que si hay causas asignables no se manifiesten dentro de los subgrupos y su efecto sea máximo entre grupos.

Habitualmente se trabaja con muestras de tamaño entre 2 y 10 (siendo 4 o 5, los tamaños de muestra más habituales).

https://www.isixsigma.com/tools-templates/control-charts/a-guide-to-control-charts/

https://www.isixsigma.com/tools-templates/control-charts/a-guide-to-control-charts/

Uso e interpretación de un gráfico de control

Control estadístico

Si el proceso está bajo control estadístico en su gráfico de control se puede observar que:

  • Los valores individuales no son constantes, pero se distribuyen al azar (distribución normal)
  • Se mantienen constantes a largo plazo la media (nivel) y la desviación estándar (variabilidad)

No se observan:

  • valores atípicos,
  • cambios en el nivel,
  • cambios en la variabilidad
  • tendencias, movimientos periódicos, autocorrelación…

Límites de control

https://www.isixsigma.com/tools-templates/control-charts/using-control-charts-or-pre-control-charts/

Reglas de Western Electric

Western Electric Company. (1956). Statistical quality control handbook. Western Electric Company.

Reglas de Nelson

Nelson, L. S. (1984). The Shewhart control chart—tests for special causes. Journal of quality technology, 16(4), 237-239.

Más reglas (o menos)

https://www.qimacros.com/control-chart/western-electric-rules/

¿Qué reglas usar?

  • Las reglas (1 y 2 de Nelson) suelen usarse siempre tanto para nivel como para variabilidad.
  • Las reglas basadas en zonas no suelen aplicarse a los gráficos de variabilidad.
  • Añadir más reglas o disminuir el nivel de alerta, incrementa el riesgo de error de tipo I y disminuye el riesgo de error de tipo II.

¿Cuándo actuar?

Western Electric Company. (1956). Statistical quality control handbook. Western Electric Company.

Construcción de gráficos de control

Estructura del apartado

  • Gráficos de control para variables
    • Gráfico Xbarra-R
      • Con líneas de control preestablecidas
      • Cálculo de las líneas de control
    • Gráfico I-MR
  • Gráficos de control para atributos
    • Gráfico p

Gráfico de control para variables

Se usan para aquellas variables que se determinan cuantitativamente.

La medida debe permitir la observación de la variabilidad. Si la medida tiene demasiada incertidumbre, estas técnicas no seran fiables.

Gráfico Xbarra-R

Es el tipo de gráfico de control más usado.

Normalmente, la práctica de los gráficos de control implica dos fases diferenciadas:

  • Fase I: Cálculo de las líneas de control
  • Fase II: Representación y uso del gráfico de control (análisis e interpretación)

Debe tenerse en cuenta el tamaño de muestra. En todos los casos, se asume que la determinación del subgrupo racional y el muestreo son adecuados y no producen sesgo.

Gráfico Xbarra-R – con líneas de control preestablecidas

Conocido el tamaño de muestra, se incluyen en el gráfico de control las últimas 15-50 muestras (nunca menos de 10).

  1. Para cada muestra, se determina el promedio y el recorrido.
  2. Se representan los recorridos en el gráfico R, mediante puntos unidos con segmentos rectos. En el gráfico se incluen las líneas de control (LC, LCI, LCS).
  3. Se representan los recorridos en el gráfico Xbarra, mediante puntos unidos con segmentos rectos. Se añaden al gráfico las líneas de control (LC, LCI, LCS).

En una planta de fabricación de neveras, se han establecido las siguientes líneas de control (gráficos Xbarra-R) para el control del grosor de la capa de pintura. Paa cada turno, se inspecciona una muestra de 5 neveras.

Xbarra R
LCS 2,960 1,63
LC 2,515 0,77
LCI 2,070 0,00

 

Adaptado de Wild, C. J., & Seber, G. A. F. (2000). Chance encounters. John Wiley & Sons

datos <- data.frame(shift=1:20,
      s1=c(2.7,2.6,2.3,2.8,2.6,
           2.2,2.2,2.8,2.4,2.6,
           3.1,2.4,2.1,2.2,2.4,
           3.1,2.9,1.9,2.3,1.8),
      s2=c(2.3,2.4,2.3,2.3,2.5,
           2.3,2.6,2.6,2.8,2.3,
           3.0,2.8,3.2,2.8,3.0,
           2.6,2.4,1.6,2.6,2.8),
      s3=c(2.6,2.6,2.4,2.4,2.6,
           2.7,2.4,2.6,2.4,2.0,
           3.5,2.2,2.5,2.1,2.5,
           2.6,2.9,2.6,2.7,2.3),
      s4=c(2.4,2.3,2.5,2.6,2.1,
           2.2,2.0,2.7,2.2,2.5,
           2.8,2.9,2.6,2.2,2.5,
           2.8,1.3,3.3,2.8,2.0),
      s5=c(2.7,2.8,2.4,2.7,2.8,
           2.6,2.3,2.5,2.3,2.4,
           3.0,2.5,2.8,2.4,2.0,
           2.1,1.8,3.3,3.2,2.9))
shift s1 s2 s3 s4 s5
1 2.7 2.3 2.6 2.4 2.7
2 2.6 2.4 2.6 2.3 2.8
3 2.3 2.3 2.4 2.5 2.4
4 2.8 2.3 2.4 2.6 2.7
5 2.6 2.5 2.6 2.1 2.8
6 2.2 2.3 2.7 2.2 2.6
7 2.2 2.6 2.4 2.0 2.3
8 2.8 2.6 2.6 2.7 2.5
9 2.4 2.8 2.4 2.2 2.3
10 2.6 2.3 2.0 2.5 2.4
11 3.1 3.0 3.5 2.8 3.0
12 2.4 2.8 2.2 2.9 2.5
13 2.1 3.2 2.5 2.6 2.8
14 2.2 2.8 2.1 2.2 2.4
15 2.4 3.0 2.5 2.5 2.0
16 3.1 2.6 2.6 2.8 2.1
17 2.9 2.4 2.9 1.3 1.8
18 1.9 1.6 2.6 3.3 3.3
19 2.3 2.6 2.7 2.8 3.2
20 1.8 2.8 2.3 2.0 2.9
promedio <- apply(datos[,2:6],1,mean)
rango <- apply(datos[,2:6],1,function (x) diff(range(x)))
promedio
##  [1] 2.54 2.54 2.38 2.56 2.52 2.40 2.30 2.64 2.42 2.36 3.08 2.56 2.64 2.34
## [15] 2.48 2.64 2.26 2.54 2.72 2.36
rango
##  [1] 0.4 0.5 0.2 0.5 0.7 0.5 0.6 0.3 0.6 0.6 0.7 0.7 1.1 0.7 1.0 1.0 1.6 1.7
## [19] 0.9 1.1
resumen <- data.frame(shift=datos$shift,promedio,rango)
str(resumen)
## 'data.frame':    20 obs. of  3 variables:
##  $ shift   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ promedio: num  2.54 2.54 2.38 2.56 2.52 2.4 2.3 2.64 2.42 2.36 ...
##  $ rango   : num  0.4 0.5 0.2 0.5 0.7 0.5 0.6 0.3 0.6 0.6 ...
if(!require("tidyverse")) {
  install.packages("tidyverse", repos="https://cloud.r-project.org/",
                   quiet=TRUE, type="binary")
  library("tidyverse")
}
ggplot(resumen,aes(x=shift,y=rango))+
  geom_point(size=3,shape=21)+geom_line()+
  geom_hline(yintercept = 1.63,color="red")+
  geom_hline(yintercept = 0,color="red")+
  geom_hline(yintercept = 0.77)+
  theme_classic()

ggplot(resumen,aes(x=shift,y=promedio))+
  geom_point(size=3,shape=21)+geom_line()+
  geom_hline(yintercept = 2.96,color="red")+
  geom_hline(yintercept = 2.07,color="red")+
  geom_hline(yintercept = 2.515 + (2.96-2.515)/3,color="green")+
  geom_hline(yintercept = 2.515 - (2.515-2.07)/3,color="green")+
  geom_hline(yintercept = 2.515 + (2.96-2.515)/3 * 2,color="orange")+
  geom_hline(yintercept = 2.515 - (2.515-2.07)/3 * 2,color="orange")+
  geom_hline(yintercept = 2.515)+
  theme_classic()

Gráfico Xbarra-R – cálculo de las líneas de control

Las líneas de control deben calcularse exclusivamente con datos que correspondan al proceso bajo control en las mismas condiciones de producción.

Para conseguir estos datos se siguen una de las dos aproximaciones siguientes:

  • Buscar una ventana de datos donde el proceso esté bajo control,
  • Iterar excluyendo aquellos datos que estan fuera de control 1. Tomar los últimos datos disponibles 2. Realizar el gráfico de control de recorridos 3. Excluir las muestras que estan fuera de control 4. Recalcular el gráfico de recorridos y hacer el gráfico de promedios 5. Excluir las muestras que estan fuera de control 6. Recalcular los gráficos de control hasta que no haya muestras fuera de control 7. Tomar como referencia estas líneas de control

Cálculo de las líneas de control

Para construir los gráficos se usan fórmulas y constantes preestablecidas

Se pueden encontrar en la bibliografía

2017080116220211ControlChartConstantsandFormulae.pdf

Cálculo de las líneas de control en un gráfico R

Cálculo de las líneas de control en un gráfico Xbarra (a partir de R)

Constantes para el gráfico Xbarra-R

Ejemplo

En el proceso de fabricación de un producto en polvo se determina su humedad tomando cinco muestras de cada lote producido.

¿Cómo podemos determinar si el proceso está funcionando según lo previsto?

Los datos se encuentran en el archivo humedad.txt.

datos <- read.table("humedad.txt",header=TRUE,sep="\t",
                    dec=",",quote="")

resumen <- datos %>% group_by(Muestra) %>%
  summarise(promedio=mean(X),rango=diff(range(X)))

# Lineas de control
# ... para recorridos
R_LC <- mean(resumen$rango)
R_LCS <- 2.114 * R_LC
R_LCI <- 0

# ... para Xbarra
X_LC <- mean(resumen$promedio)
X_LCS <- X_LC + .577 * R_LC
X_LCI <- X_LC - .577 * R_LC

La muestra 6 indica que el proceso fuera de control.

Se excluye para el cálculo de los límites de control. Recalculando sin este punto…

R_LC <- mean(resumen$rango[-6])
R_LCS <- 2.114 * R_LC
R_LCI <- 0

X_LC <- mean(resumen$promedio[-6])
X_LCS <- X_LC + .577 * R_LC
X_LCI <- X_LC - .577 * R_LC

Iterando se logra una secuencia de datos en los que no se muestran indicios de estar fuera de control excluyendo los datos 6 y los que estan entre 10 y 20 (extremos incluidos)

Líneas de control para el gráfico R

##       LC      LCI      LCS 
## 0.529000 0.000000 1.118306

Líneas de control para el gráfico Xbarra

##       LC      LCI      LCS 
## 2.454900 2.149667 2.760133

Los gráficos de control finales, con los límites bien calculados, se muestran a continuación.

Gráfico I-MR (X-MR)

Cuando no existe un subgrupo racional, una alternativa habitual es el gráfico de individuos y recorridos móviles (I-MR).

En este caso, el gráfico de nivel muestra los valores individuales y el gráfico de recorridos se calcula tomando como recorrido la diferencia al valor anterior. El tamaño de muestra se asume igual a 2.

Ejemplo

Los datos adjuntos corresponden a medidas de la resistividad de 25 placas de silicona fabricadas de forma consecutivas (resistividad.txt).

216 210 175 360 173
290 139 447 226 224
236 310 307 253 195
228 240 242 380 199
244 211 168 131 226

Construye un gráfico I-MR y analiza si el proceso está bajo control estadístico de acuerdo con las reglas de la Western Electric.

El proceso está fuera de control.

Para un cálculo adecuado de las líneas de control, deberán excluirse las muestra 12 y 19. La muestra 19 se determina como indicadora de que el proceso está fuera de control al repetir el cálculo excluyendo la muestra 12.

Líneas de control para el gráfico mR

##        LC       LCI       LCS 
##  66.45455   0.00000 217.10700

Líneas de control para el gráfico I

##       LC      LCI      LCS 
## 226.2174  49.4483 402.9865

El proceso está fuera de control y debe evaluarse qué ha pasado en el entorno de las muestras 12 y 19.

Gráficos de control para atributos

Defecto

  • una característica (cualitativa o cuantitativa) que no cumple con las especificaciones (valor o intervalo de valores) establecidas

Unidad defectuosa

  • unidad que tiene uno o varios defectos

https://www.isixsigma.com/tools-templates/control-charts/a-guide-to-control-charts/

Gráfico p

  • Se representa la proporción de unidades defectuosas.

  • Se asume que

    • Π, la proporción de unidades defectuosas reales del proceso, se mantiene constante
    • las unidades se producen de manera independiente

El gráfico de control se hace con las proporciones muestrales de unidades de defectuosas.

Ejemplo

En un determinado proceso de fabricación de un complemento alimenticio en forma de grageas, estas se inspeccionan de acuerdo con un muestreo aleatorio para verificar que el recubrimiento es estéticamente aceptable.

Tenéis establecido que una partida de producción es un lote nuevo cuando cambia cualquier aspecto significativo de la misma, y ello da lugar a lotes de tamaños de producción muy variables.

Los datos figuran en el archivo grageas.xlsx

ggplot(datos,aes(x=i,y=p))+
  geom_point(size=3,shape=21)+geom_line()+
  geom_hline(yintercept = P_LC)+
  geom_line(aes(y = lcs),color="red")+
  geom_line(aes(y = lci),color="red")+
  geom_line(aes(y = P_LC - (P_LC - lci)/3),color="green")+
  geom_line(aes(y = P_LC + (lcs - P_LC)/3),color="green")+
  geom_line(aes(y = P_LC - (P_LC - lci) * 2 / 3),color="orange")+
  geom_line(aes(y = P_LC + (lcs - P_LC) * 2 / 3),color="orange")+
  theme_classic()

El proceso parece bajo control estadístico de acuerdo con las reglas de Nelson o de Western Electric.

 

 

 

Representado con límites horizontales, se tiene…

limites <- data.frame(i=c((1:50)-0.4999,(1:50)+0.4999),
                      lcs=c(datos$lcs,datos$lcs),
                      lci=c(datos$lci,datos$lci))
limites <- limites[order(limites$i),]

ggplot(datos,aes(x=i,y=p))+
  geom_point(size=3,shape=21)+geom_line()+
  geom_hline(yintercept = P_LC)+
  geom_line(aes(y = lcs),data=limites,color="red")+
  geom_line(aes(y = lci),data=limites,color="red")+
  geom_line(aes(y = P_LC - (P_LC - lci)/3),data=limites,color="green",linetype="dashed")+
  geom_line(aes(y = P_LC + (lcs - P_LC)/3),data=limites,color="green",linetype="dashed")+
  geom_line(aes(y = P_LC - (P_LC - lci) * 2 / 3),data=limites,color="orange",linetype="dashed")+
  geom_line(aes(y = P_LC + (lcs - P_LC) * 2 / 3),data=limites,color="orange",linetype="dashed")+
  theme_classic()