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:

Explicación del paquete QCC del lenguaje de programación R, mediante RSTudio.

Tomado de la Guía Oficial: “qcc: An R package for quality control charting and statistical process control by Lucca ### Scrucca, Vol. 4, June 2004“

###…

ESTRUCTURA DEL SCRIPT:

1. Instalación del paquete qcc

2. Introducción

3. Creando un objeto qcc

3.1 Ejemplo de uso de modelado de datos para proceso de producción:

3.2 Creación de Gráfico del tipo X

4. Gráficos de control Shewhart

5. Función de la curva característica operativa

###…

1. Instalación del paquete qcc

Mediante la línea de comandos de la consola o compliador, debemos ingresar la siguiente instrucción:

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:

Supongamos que hemos extraído muestras de una característica de interés de un proceso de producción en curso:

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”)

Figura1

Figura1

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,])

Figura2 Gráfico xbar

Figura2 Gráfico xbar

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”)

p Gráfico p

p Gráfico p

donde usamos la prueba de variable de indicador lógico para seleccionar las primeras 30 muestras como datos de

calibración.

###…

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)

p Gráfico OC

p Gráfico OC

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.