UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
FACULTAD DE CONTADURÍA Y ADMINISTRACIÓN
UNIDAD DE POSGRADO
ALUMNO: Joel Donaciano Martínez Maldonado
PROYECTO FINAL - Paquete estadístico QCC (Quality Control Charts)
ASIGNATURA: Métodos Cuantitativos
###…
OBJETIVO DEL SCRIPT:
install.packages(“qcc”)
Al ejecutar dicho comando, la consola nos mostrará la siguiente confirmación de la correcta instalación del paquete:
Content type ‘application/x-gzip’ length 3554781 bytes (3.4 MB)
==================================================
downloaded 3.4 MB
la cual podemos corroborar en la pestaña “Packages“ de la ventana auxiliar de navegación. ###… ### 2. “Introducción“ ### El paquete qcc para el entorno estadístico R permite: ### • Trazar gráficos de control de calidad de Shewhart para datos continuos, de atributos y de conteo; ### • Trazar gráficos de Cusum y EWMA para datos continuos; ### • Dibujar curvas características de operación; ### • Realizar análisis de capacidad de proceso; ### • Dibujar diagramas de Pareto y diagramas de causa y efecto.
###…
3. “Creando un objeto qcc“ ### Un objeto qcc es el bloque de construcción básico para comenzar. Esto se puede crear simplemente invocando la función ### qcc, que en su forma más simple requiere dos argumentos: un marco de datos, una matriz o un vector que contiene los ### datos observados, y un valor de cadena que especifica el gráfico de control que debe calcularse. Las cartas de control ### estándar de Shewhart están disponibles. Estos a menudo se clasifican de acuerdo con el tipo de característica de calidad ### que se supone que deben monitorear (ver Tabla 1). ### Tabla 1: Cuadros de control disponibles en el paquete qcc. #——————————————————————————————————————— ### Tipo Cuadros de control para variables
#——————————————————————————————————————— ###”xbar" Gráfico X Las medias de muestra se trazan para controlar el nivel medio de una variable de proceso
continuo.
“xbar.one” Gráfico X Los valores de muestra de un proceso de datos de uno en uno para controlar el nivel medio de
una variable de proceso continuo.
“R” Gráfico R Los rangos de muestra se trazan para controlar la variabilidad de una variable de proceso
continuo.
“S” Gráfico S Las desviaciones estándar de la muestra se trazan para controlar la variabilidad de una
variable de proceso continuo.
———————————————————————————————————————
Tipo Cuadros de control para atributos
———————————————————————————————————————
“p” Gráfico p Se grafica la proporción de unidades no conformes. Los límites de control se basan en la
distribución binomial.
“np” Gráfico np Se traza el número de unidades no conformes. Los límites de control se basan en la
distribución binomial.
“c” Gráfico c Se grafica el número de defectos por unidad. Este cuadro asume que los defectos del
atributo de calidad son raros, y los límites de control se calculan en función de la
distribución de Poisson.
“u” Gráfico u Se grafica el número promedio de defectos por unidad. La distribución de Poisson se usa
para calcular los límites de control, pero, a diferencia del gráfico c, este gráfico no
requiere un número constante de unidades.
———————————————————————————————————————
Los gráficos de control para las variables continuas se basan generalmente en varias muestras con observaciones
recopiladas en diferentes puntos de tiempo. Cada muestra o “grupo racional” debe proporcionarse como una fila de un
marco de datos o una matriz. La función qcc.groups se puede usar para agrupar fácilmente un vector de valores de datos
basados en un indicador de muestra. Se permiten tamaños de muestra desiguales.
###…
3.1 Ejemplo de uso de modelado de datos para proceso de producción:
library(qcc)
data(pistonrings)
attach(pistonrings)
dim(pistonrings)
Dando el siguiente resultado en consola:
> library(qcc)
__ _ ___ ___
/ _ |/ / | Quality Control Charts and
| (| | (| (__ Statistical Process Control
__ |__|
|_| version 2.7
Type ‘citation(“qcc”)’ for citing this R package in publications.
> data(pistonrings)
> attach(pistonrings)
> dim(pistonrings)
[1] 200 3
Posteriormente ejecutamos en el compilador o consola la siguiente instrucción:
pistonrings
Y se nos mostrará una lista con la siguiente muestra:
diameter sample trial
1 74.030 1 TRUE
2 74.002 1 TRUE
3 74.019 1 TRUE
4 73.992 1 TRUE
5 74.008 1 TRUE
6 73.995 2 TRUE
7 73.992 2 TRUE
8 74.001 2 TRUE
9 74.011 2 TRUE
10 74.004 2 TRUE
11 73.988 3 TRUE
12 74.024 3 TRUE
13 74.021 3 TRUE
14 74.005 3 TRUE
15 74.002 3 TRUE
16 74.002 4 TRUE
17 73.996 4 TRUE
18 73.993 4 TRUE
19 74.015 4 TRUE
20 74.009 4 TRUE
21 73.992 5 TRUE
22 74.007 5 TRUE
23 74.015 5 TRUE
24 73.989 5 TRUE
25 74.014 5 TRUE
26 74.009 6 TRUE
27 73.994 6 TRUE
28 73.997 6 TRUE
29 73.985 6 TRUE
30 73.993 6 TRUE
31 73.995 7 TRUE
32 74.006 7 TRUE
33 73.994 7 TRUE
34 74.000 7 TRUE
35 74.005 7 TRUE
36 73.985 8 TRUE
37 74.003 8 TRUE
38 73.993 8 TRUE
39 74.015 8 TRUE
40 73.988 8 TRUE
41 74.008 9 TRUE
42 73.995 9 TRUE
43 74.009 9 TRUE
44 74.005 9 TRUE
45 74.004 9 TRUE
46 73.998 10 TRUE
47 74.000 10 TRUE
48 73.990 10 TRUE
49 74.007 10 TRUE
50 73.995 10 TRUE
51 73.994 11 TRUE
52 73.998 11 TRUE
53 73.994 11 TRUE
54 73.995 11 TRUE
55 73.990 11 TRUE
56 74.004 12 TRUE
57 74.000 12 TRUE
58 74.007 12 TRUE
59 74.000 12 TRUE
60 73.996 12 TRUE
61 73.983 13 TRUE
62 74.002 13 TRUE
63 73.998 13 TRUE
64 73.997 13 TRUE
65 74.012 13 TRUE
66 74.006 14 TRUE
67 73.967 14 TRUE
68 73.994 14 TRUE
69 74.000 14 TRUE
70 73.984 14 TRUE
71 74.012 15 TRUE
72 74.014 15 TRUE
73 73.998 15 TRUE
74 73.999 15 TRUE
75 74.007 15 TRUE
76 74.000 16 TRUE
77 73.984 16 TRUE
78 74.005 16 TRUE
79 73.998 16 TRUE
80 73.996 16 TRUE
81 73.994 17 TRUE
82 74.012 17 TRUE
83 73.986 17 TRUE
84 74.005 17 TRUE
85 74.007 17 TRUE
86 74.006 18 TRUE
87 74.010 18 TRUE
88 74.018 18 TRUE
89 74.003 18 TRUE
90 74.000 18 TRUE
91 73.984 19 TRUE
92 74.002 19 TRUE
93 74.003 19 TRUE
94 74.005 19 TRUE
95 73.997 19 TRUE
96 74.000 20 TRUE
97 74.010 20 TRUE
98 74.013 20 TRUE
99 74.020 20 TRUE
100 74.003 20 TRUE
101 73.988 21 TRUE
102 74.001 21 TRUE
103 74.009 21 TRUE
104 74.005 21 TRUE
105 73.996 21 TRUE
106 74.004 22 TRUE
107 73.999 22 TRUE
108 73.990 22 TRUE
109 74.006 22 TRUE
110 74.009 22 TRUE
111 74.010 23 TRUE
112 73.989 23 TRUE
113 73.990 23 TRUE
114 74.009 23 TRUE
115 74.014 23 TRUE
116 74.015 24 TRUE
117 74.008 24 TRUE
118 73.993 24 TRUE
119 74.000 24 TRUE
120 74.010 24 TRUE
121 73.982 25 TRUE
122 73.984 25 TRUE
123 73.995 25 TRUE
124 74.017 25 TRUE
125 74.013 25 TRUE
126 74.012 26 FALSE
127 74.015 26 FALSE
128 74.030 26 FALSE
129 73.986 26 FALSE
130 74.000 26 FALSE
131 73.995 27 FALSE
132 74.010 27 FALSE
133 73.990 27 FALSE
134 74.015 27 FALSE
135 74.001 27 FALSE
136 73.987 28 FALSE
137 73.999 28 FALSE
138 73.985 28 FALSE
139 74.000 28 FALSE
140 73.990 28 FALSE
141 74.008 29 FALSE
142 74.010 29 FALSE
143 74.003 29 FALSE
144 73.991 29 FALSE
145 74.006 29 FALSE
146 74.003 30 FALSE
147 74.000 30 FALSE
148 74.001 30 FALSE
149 73.986 30 FALSE
150 73.997 30 FALSE
151 73.994 31 FALSE
152 74.003 31 FALSE
153 74.015 31 FALSE
154 74.020 31 FALSE
155 74.004 31 FALSE
156 74.008 32 FALSE
157 74.002 32 FALSE
158 74.018 32 FALSE
159 73.995 32 FALSE
160 74.005 32 FALSE
161 74.001 33 FALSE
162 74.004 33 FALSE
163 73.990 33 FALSE
164 73.996 33 FALSE
165 73.998 33 FALSE
166 74.015 34 FALSE
167 74.000 34 FALSE
168 74.016 34 FALSE
169 74.025 34 FALSE
170 74.000 34 FALSE
171 74.030 35 FALSE
172 74.005 35 FALSE
173 74.000 35 FALSE
174 74.016 35 FALSE
175 74.012 35 FALSE
176 74.001 36 FALSE
177 73.990 36 FALSE
178 73.995 36 FALSE
179 74.010 36 FALSE
180 74.024 36 FALSE
181 74.015 37 FALSE
182 74.020 37 FALSE
183 74.024 37 FALSE
184 74.005 37 FALSE
185 74.019 37 FALSE
186 74.035 38 FALSE
187 74.010 38 FALSE
188 74.012 38 FALSE
189 74.015 38 FALSE
190 74.026 38 FALSE
191 74.017 39 FALSE
192 74.013 39 FALSE
193 74.036 39 FALSE
194 74.025 39 FALSE
195 74.026 39 FALSE
196 74.010 40 FALSE
197 74.005 40 FALSE
198 74.029 40 FALSE
199 74.000 40 FALSE
200 74.020 40 FALSE
Posteriormente ingresamos las siguientes instrucciones para obtener en la sección de “Global environment“
los datos y los valores de dichos objetos:
diameter <- qcc.groups(diameter, sample)
dim(diameter)
EL resultado en consola será el siguiente:
[1] 40 5
A continuación hacemos referencia a los datos de la variable diameter, escribiendo en el compilador la
siguiente instrucción:
diameter
Obtendremos como resultado el set de los 40 valores para las 5 muestras como se muestra a continuación:
[,1] [,2] [,3] [,4] [,5]
1 74.030 73.995 73.988 74.002 73.992
2 74.009 73.995 73.985 74.008 73.998
3 73.994 74.004 73.983 74.006 74.012
4 74.000 73.994 74.006 73.984 74.000
5 73.988 74.004 74.010 74.015 73.982
6 74.012 73.995 73.987 74.008 74.003
7 73.994 74.008 74.001 74.015 74.030
8 74.001 74.015 74.035 74.017 74.010
9 74.002 73.992 74.024 73.996 74.007
10 73.994 74.006 74.003 73.995 74.000
11 73.998 74.000 74.002 73.967 74.014
12 73.984 74.012 74.010 74.002 74.010
13 74.001 73.999 73.989 74.008 73.984
14 74.015 74.010 73.999 74.010 74.000
15 74.003 74.002 74.004 74.000 74.005
16 73.990 74.020 74.010 74.013 74.005
17 74.019 74.001 74.021 73.993 74.015
18 73.997 73.994 73.993 74.009 73.990
19 73.994 74.007 73.998 73.994 73.998
20 74.005 73.986 74.018 74.003 74.013
21 74.009 73.990 73.990 73.993 73.995
22 74.030 73.990 73.985 74.003 74.001
23 74.015 74.018 73.990 74.016 74.000
24 73.995 74.024 74.012 74.036 74.029
25 73.992 74.011 74.005 74.015 73.989
26 73.985 74.000 74.015 74.005 74.007
27 73.995 74.000 73.997 74.000 73.999
28 73.998 74.005 74.003 74.005 74.020
29 74.005 74.006 74.009 74.000 74.017
30 73.986 74.015 74.000 73.991 73.986
31 74.020 73.995 73.996 74.025 74.016
32 74.010 74.005 74.015 74.025 74.000
33 74.008 74.004 74.002 74.009 74.014
34 73.993 74.005 73.988 74.004 73.995
35 73.990 73.996 74.012 73.984 74.007
36 73.996 74.007 74.000 73.997 74.003
37 73.996 74.009 74.014 74.010 74.013
38 74.000 74.001 73.990 74.006 73.997
39 74.004 74.005 73.998 74.000 74.012
40 74.024 74.019 74.026 74.026 74.020
###…
3.2 Creación de un Gráfico del tipo X.
Usando las primeras 25 muestras como datos, se puede obtener una tabla X de la siguiente manera:
obj <- qcc(diameter[1:25,], type=“xbar”)
Figura 1
De forma predeterminada, se dibuja un gráfico de Shewhart (ver la Figura 1)
y se devuelve un objeto de la clase ‘qcc’. Las estadísticas de resumen se pueden recuperar utilizando el método de
resumen (o simplemente imprimiendo el objeto):
summary(obj)
Call:
qcc(data = diameter[1:25, ], type = “xbar”)
xbar chart for diameter[1:25, ]
Summary of group statistics:
Min. 1st Qu. Median Mean 3rd Qu. Max.
73.99020 73.99820 74.00080 74.00118 74.00420 74.01020
Group sample size: 5
Number of groups: 25
Center of group statistics: 74.00118
Standard deviation: 0.009785039
Control limits:
LCL UCL
73.98805 74.0143
La cantidad de grupos y sus tamaños se informan en este caso, mientras que se proporciona una tabla en el caso
de tamaños de muestra desiguales. Además, se devuelven el centro de las estadísticas del grupo (la media general
para un gráfico X) y la desviación estándar dentro del grupo del proceso.
El objetivo principal de un gráfico de control es supervisar un proceso. Si existen causas especiales de
variación, se dice que el proceso está “fuera de control” y se deben tomar medidas para encontrar, y posiblemente
eliminar, dichas causas. Se declara que un proceso está “en control” si todos los puntos representados se
encuentran al azar dentro de los límites de control. Estos se suelen calcular a ± 3σs desde el centro. Este
valor predeterminado se puede cambiar utilizando el argumento nsigmas (llamada “práctica americana”) o
especificando el nivel de confianza (llamada “práctica inglesa”) a través del argumento trust.level.
Suponiendo que una distribución gaussiana sea apropiada para el estadístico graficado, las dos prácticas son
equivalentes, ya que los límites en ± 3σs corresponden a una probabilidad de dos colas de 0.0027 bajo una curva
normal estándar.
En lugar de utilizar cálculos estándar para calcular las estadísticas de grupo y los límites de control
correspondientes, el centro, la desviación estándar dentro del grupo y los límites de control pueden ser
especificados directamente por El usuario a través del centro de argumentos, std.dev y límites, respectivamente.
###…
4. Gráficos de control Shewhart
Un gráfico Shewhart se traza automáticamente cuando se crea un objeto de la clase ‘qcc’, a menos que se llame a la
función qcc con el argumento plot = FALSE. Sin embargo, el método responsable de trazar un gráfico de control
puede invocarse directamente de la siguiente manera:
plot(obj)
Al ejecutar la instrucción previa, se mostrará en la sección Global Environment el objeto obj
(Ver la Figura 1). Este gráfico de control tiene la línea central (línea
continua horizontal), los límites de control superior e inferior (líneas discontinuas), y las estadísticas del grupo
de muestra se dibujan como puntos conectados con líneas. A menos que proporcionemos el argumento add.stats = FALSE,
en la parte inferior de la gráfica se muestran algunas estadísticas de resumen, junto con el número de puntos más
allá de los límites de control y el número de ejecuciones infractoras (una ejecución tiene una longitud de 5 por
defecto).
Una vez que se considera que un proceso está “en control”, podemos usar los límites calculados para monitorear los
nuevos datos muestreados del mismo proceso continuo. Por ejemplo:
obj <- qcc(diameter[1:25,], type=“xbar”, newdata=diameter[26:40,])
Figura 2
Trace el gráfico X tanto para los datos de calibración como para los nuevos (Ver la figura 2), pero todas las estadísticas y los límites de control se basan únicamente en las primeras 25 muestras.
Si solo es necesario trazar los nuevos datos, podemos proporcionar el argumento chart.all = FALSE en la llamada a
la función qcc, o mediante el método de trazado:
plot(obj, chart.all=FALSE)
Se pueden proporcionar muchos otros argumentos en la llamada a la función qcc y al método de trazado correspondiente,
y remitimos al lector a la documentación en línea para obtener detalles (help (qcc)).
Como se informa en la Tabla 1, se puede obtener un gráfico X para datos uno a tiempo especificando type = “xbar.one”.
En este caso, los datos representados son simplemente los valores de muestra, y la desviación estándar dentro del
grupo se estima moviendo rangos de k (por defecto 2) puntos.
Los gráficos de control para atributos difieren principalmente de los ejemplos anteriores en que necesitamos
proporcionar tamaños de muestra a través del argumento de tamaño (excepto el gráfico c). Por ejemplo, un gráfico p
se puede obtener de la siguiente manera:
data(orangejuice)
attach(orangejuice)
orangejuice
Dando como resultado en consola, la siguiente muestra:
sample D size trial
1 1 12 50 TRUE
2 2 15 50 TRUE
3 3 8 50 TRUE
4 4 10 50 TRUE
5 5 4 50 TRUE
6 6 7 50 TRUE
7 7 16 50 TRUE
8 8 9 50 TRUE
9 9 14 50 TRUE
10 10 10 50 TRUE
11 11 5 50 TRUE
12 12 6 50 TRUE
13 13 17 50 TRUE
14 14 12 50 TRUE
15 15 22 50 TRUE
16 16 8 50 TRUE
17 17 10 50 TRUE
18 18 5 50 TRUE
19 19 13 50 TRUE
20 20 11 50 TRUE
21 21 20 50 TRUE
22 22 18 50 TRUE
23 23 24 50 TRUE
24 24 15 50 TRUE
25 25 9 50 TRUE
26 26 12 50 TRUE
27 27 7 50 TRUE
28 28 13 50 TRUE
29 29 9 50 TRUE
30 30 6 50 TRUE
31 31 9 50 FALSE
32 32 6 50 FALSE
33 33 12 50 FALSE
34 34 5 50 FALSE
35 35 6 50 FALSE
36 36 4 50 FALSE
37 37 6 50 FALSE
38 38 3 50 FALSE
39 39 7 50 FALSE
40 40 6 50 FALSE
41 41 2 50 FALSE
42 42 4 50 FALSE
43 43 3 50 FALSE
44 44 6 50 FALSE
45 45 5 50 FALSE
46 46 4 50 FALSE
47 47 8 50 FALSE
48 48 5 50 FALSE
49 49 6 50 FALSE
50 50 7 50 FALSE
51 51 5 50 FALSE
52 52 6 50 FALSE
53 53 3 50 FALSE
54 54 5 50 FALSE
obj2 <- qcc(D[trial], sizes=size[trial], type=“p”)
donde usamos la prueba de variable de indicador lógico para seleccionar las primeras 30 muestras como datos de
5. Función de la curva característica operativa
Una curva de característica operativa (OC) proporciona información sobre la probabilidad de no detectar un cambio
en el proceso. Esto generalmente se conoce como error de tipo II, es decir, la probabilidad de aceptar erróneamente
un proceso como “en control”.
Las curvas OC se pueden obtener fácilmente de un objeto de la clase ‘qcc’:
par(mfrow=c(1,2))
oc.curves(obj)
La función oc.curves devuelve invisiblemente una matriz o un vector de valores de probabilidad para el error de tipo
II. Hay más argumentos disponibles (consulte la ayuda (oc.curves)), en particular identifique = VERDADERO permite
identificar de forma interactiva los valores en la gráfica.