-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path13-spc.Rmd
3444 lines (2464 loc) · 113 KB
/
13-spc.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Control Estadístico de Procesos {#spc}
```{r, include=FALSE}
# knitr::opts_chunk$set(cache=FALSE)
library(SixSigma)
library(dplyr)
library(tidyr)
```
## Gráficos de control {#ch_spc}
### Introducción
```{block2, type='slide', echo=FALSE}
class: middle, center, toc
# Introducción
???
```
El objetivo de los gráficos de control es identificar cuándo el proceso está
fuera de control estadístico. A partir de ahí, los métodos de SPC nos permitirán mejorar el proceso,
por medio de la eliminación de las causas asignables de variación.
```{block, type='rmdquote'}
> Assignable causes of variation may be found and eliminated
>
> Walter A. Shewhart
```
```{block2, type='slide', echo=FALSE}
---
class: large
# Gráficos de control
.imgleft[![](../img/shewhart.png)]
> Assignable causes of variation may be found and eliminated
>
> Walter A. Shewhart
???
```
Recordemos de la introducción que los procesos se mueven de forma
natural dentro de unos límites de referencia. En los gráficos de
control, lo que haremos será tomar muestras de los procesos y medir
alguna característica (variable o atributo). Los valores de las muestras los resumiremos con algún estadístico, como la media
o la desviación típica. Esta medida resumen la representaremos
gráficamente junto con unos **límites de control**, que abarcan esa franja de
variación natural de esa medida resumen. Mientras los valores de la muestra estén dentro de los
límites de control, el proceso se puede considerar **bajo control estadístico**.
En los siguientes apartados describiremos con detalle aspectos generales
de los gráficos de control, así como gráficos de control específicos.
```{block2, type='slide', echo=FALSE}
---
class: large
# Generalidades
- Tomamos muestras del proceso
- Observamos una característica (variable o atributo)
- Resumimos los valores obtenidos
- Comparamos el estadístico con .red[sus] límtes de referencia (variación natural)
.centro[.imgwpeque2[![image](../img/idea.png)]]
Si el proceso está en control, probabilidad muy baja de falsa alarma
```
#### Elementos del gráfico de control
El gráfico de control es un gráfico en dos dimensiones, donde el eje vertical
representa una medida resumen de la característica media en las muestras obtenidas del proceso. Dicha
medida resumen se refiere a la medición de una característica de interés en los
elementos de cada muestra. Sobre ese eje, se representan
tres líneas: la línea central (LC, Línea central) y los límites de control superior (LCS)
e inferior (LCI)^[En algunas aplicaciones encontraremos los acronimos sin
traducir CL (Center Line), UCL (Upper Control Limit) y LCL (Lower
Control Limit) para la línea central y los límites de control superior e
inferior respectivamente.].
La **línea central** representa alguna medida de centralización de la medida
resumen que se está representado, por
ejemplo la media. Los **límites de control** superior e inferior representan los límites de
variación natural de dicha medida resumen, que generalmente se fijan en
tres desviaciones típicas^[Nótese que aquí nos estamos refiriendo a la
desviación típica de la _medida resumen_, no de la característica que
estamos midiendo.] a ambos lados del valor central. Estos límites
aseguran que, con el proceso bajo control, es muy improbable que un punto
se salga de los límites. Por tanto, tendremos mucha seguridad de que el
proceso ha dejado de estar bajo control estadśitico. Por ejemplo, para el gráfico
de la media, que sigue una distribución normal, la probabilidad de que la media de una
muestra se salga de los límites estando el proceso bajo control, es de 0.0027.
Es decir, solo el 0.27% de los puntos que se salgan serán una falsa alarma.
Una vez representados los límites, situamos los **puntos** según el valor de la
medida resumen de la muestra en el eje
vertical, y por orden secuencial según el eje horizontal. Finalmente se unen los
puntos con **líneas**. La figura \@ref(fig:cc4) muestra todos los elementos
del gráfico de control descritos.
```{block2, type='slide', echo=FALSE}
---
class: large
# Elementos del gráfico de control
- Gráfico en dos dimensiones
- Eje X identificador de muestra
- Eje Y medida resumen (o valor individual)
--
'```{r cc1, echo=FALSE, fig.width=6, fig.asp=0.6, fig.align='center', out.width="80%"}
set.seed(12345)
ccNormal <- data.frame(obs = 1:20, value = rnorm(20, 10, 1))
plot(ccNormal, type = "n", pch = 16,
axes = FALSE,
ylim = mean(ccNormal$value) + c(1, -1) * 4 * sd(ccNormal$value),
ylab = "Medida resumen",
xlab = "Muestra")
axis(1, at = 1:20, cex.axis = 0.7)
box()
box("outer")
grid()
'```
???
```
```{block2, type='slide', echo=FALSE}
---
class: large
# Elementos del gráfico de control
- **LC** Línea central
- **LCI** Límite de control inferior
- **LCS** Límite de control superior
--
'```{r cc2, echo=FALSE, fig.width=6, fig.asp=0.6, fig.align='center', out.width="80%"}
plot(ccNormal, type = "n", pch = 16,
axes = FALSE,
ylim = mean(ccNormal$value) + c(1, -1) * 4 * sd(ccNormal$value),
ylab = "Medida resumen",
xlab = "Muestra")
axis(1, at = 1:20, cex.axis = 0.7)
box()
box("outer")
grid()
abline(h = mean(ccNormal$value),
col = "steelBlue",
lwd = 2,
lty = 2
)
mtext("LC", 4, line =.1, las = 2, at = mean(ccNormal$value))
'```
???
```
```{block2, type='slide', echo=FALSE}
---
class: large
# Elementos del gráfico de control
- **LC** Línea central
- **LCI** Límite de control inferior
- **LCS** Límite de control superior
'```{r cc3, echo=FALSE, fig.width=6, fig.asp=0.6, fig.align='center', out.width="80%"}
plot(ccNormal, type = "n", pch = 16,
axes = FALSE,
ylim = mean(ccNormal$value) + c(1, -1) * 4 * sd(ccNormal$value),
ylab = "Medida resumen",
xlab = "Muestra")
axis(1, at = 1:20, cex.axis = 0.7)
box()
box("outer")
grid()
abline(h = mean(ccNormal$value),
col = "steelBlue",
lwd = 2,
lty = 2
)
mtext("LC", 4, line =.1, las = 2, at = mean(ccNormal$value))
abline(h = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value),
col = "darkred",
lwd = 2
)
mtext(c("LCI", "LCS"), 4,
line = .1,
las = 2,
at = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value))
'```
???
```
```{r cc4, echo=FALSE, fig.height=5, fig.align='center', out.width="70%", fig.cap="Elementos del gráfico de control"}
set.seed(12345)
ccNormal <- data.frame(obs = 1:20, value = rnorm(20, 10, 1))
plot(ccNormal, type = "b", pch = 16,
axes = FALSE,
ylim = mean(ccNormal$value) + c(1, -1) * 4 * sd(ccNormal$value),
ylab = "Medida resumen",
xlab = "Muestra")
axis(1, at = 1:20, cex.axis = 0.7)
box()
box("outer")
grid()
abline(h = mean(ccNormal$value),
col = "steelBlue",
lwd = 2,
lty = 2
)
mtext("LC", 4, line =.1, las = 2, at = mean(ccNormal$value))
abline(h = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value),
col = "darkred",
lwd = 2
)
mtext(c("LCI", "LCS"), 4,
line = .1,
las = 2,
at = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value))
```
```{block2, type='slide', echo=FALSE}
---
class: large
background-image: url(../_book/estadistica-aplicada_files/figure-html/cc4-1.png)
background-position: 50% 95%
background-size: 65%
# Elementos del gráfico de control
- Gráfico secuencial
- Puntos representando el dato
- Líneas para identificar tendencias
???
```
#### Diseño del gráfico de control {#subsec_diseniogc}
Una vez determinada la característica de interés, hay dos partes fundamentales del diseño
del gráfico de control: la determinación de los límites de control, y la
determinación de la estrategia de muestreo.
Básicamente, la implementación del gráfico de control
se realiza en dos fases:
1. **Fase I**. Se fijan unos límites de control con el proceso bajo control
estadístico.
2. **Fase II**. Una vez fijados los límites de control, los siguientes valores
que produzca el proceso se monitorizan con los límites fijados.
```{block2, type='slide', echo=FALSE}
---
class: large
# Fase I y Fase II
Variación _natural_ dentro de unos límites de referencia
--
1. Fase I: Con el proceso bajo control, fijar los límites de control
- Mediante valores pre-especificados
- Mediante las primeras muestras
--
2. Fase II: Con los límites fijos, se monitoriza el proceso
--
.centro[.imgwpeque2[![image](../img/warning.png)]]
No confundir control con especificación
.centro[.imgwpeque2[![image](../img/warning.png)]]
No recalcular límites cada vez
.centro[.imgwpeque2[![image](../img/idea.png)]]
Controlar primero variabilidad, después medias
???
```
La fase I es la más delicada, y hay varias formas de afrontarla.
La más sencilla, es partir de unos valores pre-especificados basados en la
media y la desviación típica del proceso. Cuando el proceso es estable, podemos
confirmar mediante contrastes de hipótesis que efectivamente esos valores
pre-especificados pueden ser los del proceso con una cierta _confianza_.
Cuando no podemos confiar en unos valores pre-especificados, entonces tenemos
que estimarlos, fijando así unos límites provisionales utilizando un conjunto de
datos preliminar. En general, entre 25 y 30 muestras con entorno a 5 unidadades
cada una suele ser suficiente para estimar los límites de control.
Si el proceso muestra control estadístico, podemos utilizar esos límites
como límites del proceso. Si el proceso no está bajo control estadístico, se eliminan las
causas especiales de variación^[Esta tarea depende de cada proceso y organización.
Si no se encuentra ningna causa que corregir, se pueden calcular los límites
de nuevo sin ese dato, hasta conseguir un proceso bajo control estadístico.]
y se vuelven a calcular los límites. Esta operación se repite hasta que el proceso
esté bajo control estadístico.
Otro aspecto importante de la Fase I es que se debe controlar primero la
variabilidad del proceso y, una vez esta variabilidad está bajo control estadístico,
comprobar que la media del proceso está también bajo control.
En la
Fase II se identifican las causas especiales de variación, que no solo vienen
dadas por puntos fuera de los límites, sino también por otros patrones
altamente improbables que indiquen que la variación no es debida solamente al azar.
Además, en la
Fase II se debe vigilar que los límites de control siguen siendo válidos
para nuestro proceso, y cuando el proceso cambie, los límites de control
se deben revisar y actualizar. De otro modo, el gráfico de control
perdería utilidad.
Un error muy común que hay que evitar, es fijar los límites de control
con cada nueva muestra de datos. Esto implica que si se producen cambios en el
proceso, podemos no detectarlos porque esos datos _malos_ están siendo
utilizados para calcular los límites del proceso supuestamente bajo control.
Es importante diferenciar entre **control del proceso** y
**especificación del proceso**. Es un error muy común no hacerlo, lo que
lleva a un uso inadecuado del control estadístico de procesos.
El proceso puede no estar controlado pero cumplir las especificaciones,
y viceversa. El control estadístico de procesos nos sirve para anticipar futuros
problemas que hagan al proceso dejar de cumplir las especificaciones, y poder
corregir los problemas antes de que lleguen al producto (y al cliente). Por
tanto los límites de control del proceso (fijados por la variación natural del
proceso) y los límites de especificación del proceso (fijados por el cliente, ya
sea interno o externo), no están relacionados entre sí, son cosas distintas cuya
comparación nos permitirá medir la capacidad del proceso, como veremos en el
capítulo \@ref(ch:capacidad).
En cuanto a la estrategia de muestreo, hay varios aspectos básicos que debemos tener
en cuenta. El primero, es que la muestra debe ser representativa de la producción.
Para ello, se deben realizar **muestreos aleatorios**. No siempre es posible hacer
un muestreo completamente aleatorio, por sorteo, pero sí se deben evitar el tomar
muestras que no sean representativas (por ejemplo, tomar siempre las primeras o
las últimas del día porque es más cómodo). Por otro lado, se debe realizar
una adecuada estratificación. Es decir, debemos tomar las muestras
de grupos homogéneos, y no mezclar muestras de partes del proceso diferentes
(por ejemplo diferentes máquinas, diferentes turnos, etc.).
Por último, hay tres decisiones importantes: cuántas muestras analizar cada
vez, de qué tamaño, y cada cuánto tiempo.
Ya hemos dicho que para la determinación de los límites de control se
deben utilizar entre 25 y 30 muestras. En general, este es un número adecuado de muestras para
representar en cualquier gráfico de control para una fácil lectura
e interpretación. No obstante, se puede examinar el gráfico de control con cada
nueva observación, junto, por ejemplo, con las 24 anteriores. Las decisiones sobre el tamaño y la
frecuencia de la muestra suelen estar muy relacionadas. Para los gráficos que
vamos a estudiar en este capítulo, muestras de entre 4 y 8 unidades suelen dar un
buen resultado. La frecuencia dependerá de cuánto tiempo estamos dispuestos a esperar
hasta detectar un cambio en el proceso. En el apartado \@ref(sec:gcv) se proporcionan
algunas herramientas para determinar el tamaño de la muestra y el error cometido para
el gráfico de control de la media, que se puede utilizar para el diseño de un plan de control.
```{block2, type='slide', echo=FALSE}
---
class: large
# Recogida de datos: grupos racionales
- Muestras aleatorias (representativas)
- Bien estratificadas (no mezclar)
- Entre 25 y 30 grupos para estimar límites (si no hay valores preespecificados fiables)
- Tamaño subgrupos: con 5 ya hay bastante precisión
- Frecuencia: depende de ARL
```
#### Funcionamiento del gráfico de control
Lo que estamos haciendo al controlar los procesos mediante gráficos de control
es realmente un contraste continuado de hipótesis para comprobar si el proceso
está bajo control. El proceso está bajo control si la variación que se observa
no se puede achacar más que al azar. El contraste se aplica a muestras recogidas
periódicamente. Si la hipótesis es cierta, la media y la desviación típica de la
muestra estarán dentro de sus límites naturales, asumiendo por defecto que estos
límites son entre tres desviaciones por encima y por debajo de la media ($\theta_0
\pm 3\sigma$)^[$\theta_0$ representa el valor central del gráfico, que
puede ser la media, el rango medio, la desviación típica media, etc.].
Además de los puntos fuera de los límites, hay otras
situaciones altamente improbables que también indican que el proceso no está bajo control.
Así, los pasos a seguir son los siguientes.
1. Fijar límites con el proceso bajo control
2. Obtener muestras homogéneas (grupos racionales)
3. Calcular medias y desviaciones típicas (o rangos)
4. Representar datos
5. Identificar las situaciones fuera de control
6. Eliminar las causas de variación asignables
```{block2, type='slide', echo=FALSE}
---
class: large
# Funcionamiento del gráfico de control
1. Fijar límites con el proceso bajo control
2. Obtener muestras homogéneas (grupos racionales)
3. Calcular medias y desviaciones típicas (o rangos)
4. Representar datos
5. Identificar las situaciones fuera de control
6. Eliminar las causas de variación asignables
???
```
Una vez tenemos un adecuado plan de control, debemos fijar los límites del
proceso bajo control. A partir de aquí, obtener los gráficos de control con la
regularidad establecida en el plan. El plan debe incluir una revisión
periódica de los límites de control, y ajustarlos cuando nuestro proceso cambie
(en media o en variabilidad). El objetivo de los gráficos de control es detectar
causas especiales de variación, y eliminar estas causas. El método descansa en
la base de que cualquiera de las situaciones en las que el proceso se clasifica
como fuera de control, es tan improbable que suceda, que no podemos aceptar que
se deba exclusivamente al azar, es decir, a la variación natural del proceso
(causas naturales), y por tanto debe haber otros motivos (causas especiales) que
debemos identificar. Por ejemplo, un punto fuera de los límites sólo se
producirá de forma natural 27 veces de cada 10.000.
En relación a los efectos producidos por un proceso fuera de control, hay que
tener en cuenta que pueden ser diversos. El más intuitivo es que puede provocar
una disminución en la capacidad del proceso y por tanto aumentar la proporción
de no conformidades a largo plazo. En otros casos puede suceder lo contrario,
que se produzca una mejora en el proceso. Si esta mejora no es apreciada por
el cliente podemos estar incurriendo en un sobrecoste. Si la mejora es
apreciada por el cliente, es una oportunidad para hacer sostenible en el
tiempo esa mejora. Por ejemplo, en un proceso donde se mejora la resistencia de
un material en un día determinado, si la causa asignable es que se ha añadido
más cantidad de la necesaria de un componente determinado, la situación
fuera de control supuso un sobrecoste. Si la causa asignable fue un cambio en el
procedimiento, se puede implementar el cambio para mejorar el proceso de forma
sostenible.
```{block, type='TODO', echo=FALSE}
**meter las reglas** exactas de la ISO, y si las de la western son distintas,
etc, ver el anexo.
```
Las siguientes señales nos pueden estar indicando que el proceso deja de estar
bajo control. Básicamente, el hecho de que alguno de los siguientes hechos
suceda es altamente improbable, por lo que muy posiblemente no se deba al azar,
sino a alguna causa especial:
- Puntos fuera de los límites
- Siete puntos seguidos al mismo lado de la línea
- Seis puntos seguidos creciendo o decreciendo
- Catorce puntos seguidos alternando arriba y abajo
- Cualquier otro patrón inusual
```{block2, type='slide', echo=FALSE}
---
class: large
# Leer el gráfico de control
- Puntos fuera de los límites
- Siete puntos seguidos al mismo lado de la línea
- Seis puntos seguidos creciendo o decreciendo
- Catorce puntos seguidos alternando arriba y abajo
- Cualquier otro patrón inusual
???
```
Además de estos patrones, se puede mirar dentro de los límites para anticipar
posibles problemas. Definimos tres zonas y miramos qué pasa en ellas:
1. Zona C: entre la línea central y una desviación típica
2. Zona B: Entre una y dos desviaciones típicas desde la línea central
3. Zona A: Entre dos y tres desviaciones típicas de la línea central
```{r cc5, echo=FALSE, fig.width=6, fig.asp=0.6, fig.align='center', out.width="70%", fig.cap="Zonas del gráfico de control"}
library(scales)
# ---- cc4
plot(ccNormal, type = "b", pch = 16,
axes = FALSE,
ylim = mean(ccNormal$value) + c(1, -1) * 4 * sd(ccNormal$value),
ylab = "Medida resumen",
xlab = "Muestra")
axis(1, at = 1:20, cex.axis = 0.7)
box()
box("outer")
grid()
abline(h = mean(ccNormal$value),
col = "steelBlue",
lwd = 2,
lty = 2
)
mtext("LC", 4, line =.1, las = 2, at = mean(ccNormal$value))
abline(h = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value),
col = "darkred",
lwd = 2
)
mtext(c("LCI", "LCS"), 4,
line = .1,
las = 2,
at = mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value))
#----
abline(h = mean(ccNormal$value) + c(1, -1) * 1 * sd(ccNormal$value),
col = "darkolivegreen3",
lwd = 1
)
abline(h = mean(ccNormal$value) + c(1, -1) * 2 * sd(ccNormal$value),
col = "darkgoldenrod",
lwd = 1
)
s1 <- mean(ccNormal$value) + c(1, -1) * 1 * sd(ccNormal$value)
polygon(c(0,0,21,21),
c(s1, rev(s1)),
col = alpha("darkolivegreen3", 0.5))
text(1, s1[2], "C", pos = 3)
s2 <- mean(ccNormal$value) + c(1, -1) * 2 * sd(ccNormal$value)
polygon(c(0,0,21,21),
c(s2[1], s1[1], s1[1], s2[1]),
col = alpha("darkgoldenrod", 0.5))
polygon(c(0,0,21,21),
c(s2[2], s1[2], s1[2], s2[2]),
col = alpha("darkgoldenrod", 0.5))
text(c(1, 1), s2, "B", pos = c(1, 3))
s3 <- mean(ccNormal$value) + c(1, -1) * 3 * sd(ccNormal$value)
polygon(c(0,0,21,21),
c(s3[1], s2[1], s2[1], s3[1]),
col = alpha("darkred", 0.5))
polygon(c(0,0,21,21),
c(s3[2], s2[2], s2[2], s3[2]),
col = alpha("darkred", 0.5))
text(c(1, 1), s3, "A", pos = c(1, 3))
```
```{block2, type='slide', echo=FALSE}
---
class: large
background-image: url(../_book/estadistica-aplicada_files/figure-html/cc5-1.png)
background-position: 50% 95%
background-size: 65%
# Zonas del gráfico de control
1. Zona C: entre la línea central y una desviación típica
2. Zona B: Entre una y dos desviaciones típicas desde la línea central
3. Zona A: Entre dos y tres desviaciones típicas de la línea central
???
```
```{block2, type='slide', echo=FALSE}
---
class: large
background-image: url(../_book/estadistica-aplicada_files/figure-html/cc5-1.png)
background-position: 50% 95%
background-size: 70%
# Leer las zonas
- Dos de tres puntos seguidos en la zona A o más allá
- Cuatro de cinco puntos seguidos en la zona B o más allá
- Quince puntos seguidos en la zona C
???
```
Las situaciones que, por ser altamente improbables, se deberían
investigar en busca de causas asignables, son las siguientes:
- Dos de tres puntos seguidos en la zona A o más allá
- Cuatro de cinco puntos seguidos en la zona B o más allá
- Quince puntos seguidos en la zona C
El tercer caso es una **oportunidad** de mejora, ya que se ha conseguido
reducir la variabilidad del proceso.
```{block2, type='slide', echo=FALSE}
---
class: large
# Zonas del gráfico de control
El tercer caso es una **oportunidad** de mejora, ya que se ha conseguido
reducir la variabilidad del proceso.
--
.centro[.imgwpeque2[![image](../img/idea.png)]]
Cuidado: también puede ser que se haya hecho incurrido en un sobrecoste
???
```
```{block2, type='slide', echo=FALSE}
---
class: middle, center, toc
# Gráficos de control por variables
???
```
### Gráficos de control por variables {#sec:gcv}
Cuando la característica que estamos midiendo es una variable numérica continua,
utilizamos gráficos de control por variables. En el control por variables,
debemos controlar tanto los valores centrales de la variable como su
variabilidad, por lo que los gráficos de control se utilizan habitualmente en
parejas: un gráfico para los valores medios (o los valores individuales si no
tenemos grupos) y otro para la variabilidad.
Para el cálculo de los límites, debemos tener en cuenta que, si no disponemos
de valores preespecificados fiables de la media y la desviación típica, debemos
_estimarlos_ a partir de muestras del proceso (subgrupos de tamaño $n$).
No entraremos
en este libro en los detalles teóricos de esta estimación, simplemente destacar que
algunos gráficos de Shewhart utilizan la distribución de los
rangos de muestras normales.
A partir de esta distribución, se determinan unas constantes que dependen solo
del tamaño de los grupos $n$. El cálculo de los límites se realiza entonces
mediante fórmulas en las que aparecen estas constantes.
Tanto la tabla como las fórmulas se encuentran en el apéndice \@ref(ap:tablas), y
se pueden utilizar para construir los gráficos de control con Excel. No obstante,
el software estadístico realiza estos cálculos automáticamente.
Como se vio en el apartado \@ref(subsec:diseniogc), para calcular los límites
de control en Fase I podemos partir de valores pre-especificados de la media y la desviación
típica, o bien estimar estos parámetros. En este punto es importante señalar
que, si bien la media muestral $\overline{x}$ es un buen estimador de la
media poblacional $\mu$, la desviación típica muestral $s$ no es el mejor
estimador de la desviación típica poblacional $\sigma$.
En su lugar, se utilizan los siguientes estimadores de la desviación típica:
$$\hat{\sigma}=\frac{s}{c_4};\qquad \hat{\sigma}=\frac{R}{d_2},$$
donde $c_4$ y $d_2$ son constantes que solo dependen del tamaño de
la muestra $n$ y $R$ es el rango de la muestra. Las constantes
están tabuladas y se pueden utilizar para realizar gráficos "a mano" o
con Excel, aunque es muy costoso (el software estadístico lo hace
automáticamente).
```{block2, type='slide', echo=FALSE}
---
class: large
# Estimación de $\sigma$ para gráficos de control
$$\hat{\sigma}=\frac{s}{c_4};\qquad \hat{\sigma}=\frac{R}{d_2}$$
--
$$\hat{\mu}=\overline{x}$$
--
.centro[.imgwpeque2[![image](../img/idea.png)]]
Tablas y fórmulas para calcular límites _a mano_ (o en Excel)
[Apéndice](http://emilio.lcano.com/b/epac/_book/ap-tablas.html#constantes-de-shewhart)
???
```
```{block2, type='rmdpractica'}
**R**
Para obtener gráficos de control con R utilizaremos básicamente el paquete
`qcc`, y su función del mismo nombre. Esta función requiere siempre
el tipo de gráfico a representar (uno de xbar, R, S, xbar.one, p, np, c, u,
g) y los datos del proceso (de forma distinta según el tipo de gráfico).
Las fases I y II se manejan pasando conjuntos de datos distintos (uno se usa
para el cálculo
de los límites, el otro no), o bien introduciendo los valores preespecificados
de los parámetros.
Existen
más opciones disponibles, consulta la documentación del paquete. También se
pueden añadir elementos y anotaciones al gráfico en la forma estándar.
Podemos guardar el resultado de la función `qcc` en un objeto de R. Por
defecto, al guardar este objeto se muestra el gráfico en el dispositivo gráfico
activo, esto se puede desactivar con el argumento `plot`. Este objeto lo podemos
usar después para acceder a los datos del gráfico, generar el gráfico con la
función plot, u obtener un resumen con la función summary. Si no se asigna la
expresión a ningún objeto, se muestra en la salida de texto un resumen del
objeto que se hubiera creado.
```
```{block2, type='rmdpractica'}
**Excel**
Realizar gráficos de control con Excel o cualquier otra hoja de cálculo
es como hacerlo a mano. Debemos calcular los límites con las fórmulas
en alguna celda, y después representarlos como una serie constante en
un gráfico de dispersión. Los datos de cada subgrupo se pueden disponer por
filas para calcular las medidas resumen en la siguiente columna a la última,
y representar estas series como puntos y líneas en el gráfico de dispersión.
```
```{block2, type='rmdpractica'}
**Minitab**
En Minitab, los gráficos de control se encuentran en el menú Estadísticas/Herramientas
de calidad. Están organizados por variables y atributos, aunque los cuadros
de diálogo son muy similares. Podemos introducir los valores preespecificados
de los parámetros en fase II.
```
#### Gráficos de la media y el rango
La pareja más _famosa_ de gráficos de control son los de la media y el
rango.
Para realizar este tipo de gráficos debemos disponer de **subgrupos racionales**,
idealmente del mismo tamaño. Para cada subgrupo se calculan la media y el rango,
que serán los puntos a representar en ambos gráficos.
El motivo de usar el rango como medida de la variabilidad cuando trabajamos con
muestras pequeñas es que el rango es una medida más estable y fácil de calcular.
Sin embargo, pierde efectividad a medida que aumenta el tamaño de muestra,
siendo desaconsejable su uso para tamaños de muestra mayores de 10.
En el **gráfico de la media**, los puntos representan la media de cada subgrupo.
Para fijar los límites, debemos considerar la distribución de probabilidad de
dichas medias. Se cumple que las medias de muestras de tamaño $n$ que provienen
de una población cuya distribución es normal con media $\mu$ y desviación típica
$\sigma$, siguen una distribución también normal con la misma media y desviación
típica $\frac{\sigma}{\sqrt{n}}$.
En el caso de que dispongamos de valores preestablecidos de la media y la
desviación típica del proceso, $\mu_0$ y $\sigma_0$ respectivamente, las líneas
del gráfico serán las siguientes:
\begin{align}
LC &=& \mu_0,\\
LCI &=& \mu_0 - 3\frac{\sigma_0}{\sqrt{n}},\\
LCS &=& \mu_0 + 3\frac{\sigma_0}{\sqrt{n}}.
(\#eq:gcmcvp)
\end{align}
En estas fórmulas podemos observar dos hechos importantes:
1. Si tenemos subgrupos de distintos tamaños, los límites de control no serán constantes, sino escalonados.
2. Se pueden simplificar los cálculos haciendo $A = 3/\sqrt{n}$, siendo $A$ una constante
que solo depende del tamaño de subgrupo $n$ y que se encuentra tabulada. Así, los límites
de control quedarían: $\mu_0 \pm A \sigma_0$.
Otro aspecto importante del gráfico de la media es que, aunque la distribución
original de la variable no sea normal, el diseño del gráfico sigue siendo válido
ya que las medias de cualquier distribución de probabilidad _tienden_ a una distribución
normal a medida que aumenta el tamaño de la muestra. Para distribuciones muy asimétricas,
puede ser recomendable aumentar el tamaño de los subgrupos.
```{block2, type='slide', echo=FALSE}
---
class: large
# Gráficos de la media y el rango
1. Tomar subgrupos
2. Calcular medias y rangos
3. Calcular límites
- Valores pre-especificados $\mu_0$ y $\sigma_0$
- Valores estimados
--
- Fase I: 25-30 muestras; eliminar causas asignables; Estimar $\sigma$ y $\mu$
- Fase II: fijar $\mu_0$ y $\sigma_0$ con el proceso anterior bajo control
--
.centro[.imgwpeque2[![image](../img/idea.png)]]
Controlar primero variación, luego media
???
```
Si no tenemos unos valores pre-especificados de la media y la desviación típica,
debemos estimarlos para calcular los límites. La media total la estimamos con
la media de las medias de todos los subgrupos, $\overline{\overline{X}}$, que será
la línea central.
Para estimar la desviación típica, y por tanto los límites de control, utilizamos
el estimador que utiliza los rangos:
$$\frac{\overline{R}}{d_2 \sqrt{n}},$$
donde $\overline{R}=\frac{\sum\limits_{i=1}^n R_i}{n}$ es el rango medio
de todas las muestras. Por tanto la línea central y los límites de control del gráfico de la media son los siguientes^[De nuevo, existe una fórmula abreviada.]:
\begin{align}
LC &= \overline{\overline{X}},\\
LCI &= \overline{\overline{X}} - \overline{R} \times \frac{3}{d_2 \sqrt{n}} = \overline{\overline{X}} - A_2 \overline{R},\\
LCS &= \overline{\overline{X}} + \overline{R} \times \frac{3}{d_2 \sqrt{n}} = \overline{\overline{X}} + A_2 \overline{R}.\\
(\#eq:gcmsvp)
\end{align}
```{block2, type='slide', echo=FALSE}
---
class: large
# Gráfico de la media
Valores **pre-especificados**: $LC = \mu_0$
$$LCI = \mu_0 - 3\frac{\sigma_0}{\sqrt{n}} = \mu_0 - A \sigma_0$$
$$LCS = \mu_0 + 3\frac{\sigma_0}{\sqrt{n}} = \mu_0 + A \sigma_0$$
Valores **estimados**: $LC = \overline{\overline{X}},$
$$LCI = \overline{\overline{X}} - \overline{R} \times \frac{3}{d_2 \sqrt{n}} = \overline{\overline{X}} - A_2 \overline{R},$$
$$LCS = \overline{\overline{X}} + \overline{R} \times \frac{3}{d_2 \sqrt{n}} = \overline{\overline{X}} + A_2 \overline{R}.$$
???
```
```{block2, type='rmdejemplo'}
Una fábrica produce placas metálicas cuyo espesor (_thickness_) es una característica crítica para
la calidad. La fabricación se realiza en dos turnos cada día, y se toman seis muestras en cada turno.
La tabla \@ref(tab:thickness) muestra los 84 datos correspondientes a las muestras de una semana completa.
```
```{r thickness, echo=FALSE}
library(SixSigma)
ss.data.thickness2 |>
select(-flaws, - ushift) |>
mutate(muestra = paste0("p", rep(1:6, times = 14))) |>
spread(key = muestra, value = thickness) |>
knitr::kable(caption = "Datos del espesor de placas metálicas")
```
```{block2, type='rmdpractica'}
**R**
Los datos se encuentran en el conjunto de datos `ss.data.thickness2` del paquete
`SixSigma`. A continuación se muestra el código que produce el gráfico de control
de la figura \@ref(fig:gcm).
Se utiliza el paquete `qcc`. La función `qccGroups`
organiza los datos en una matriz donde cada fila tiene los datos de un subgrupo.
Esta función requiere dos argumentos: el vector de datos (data) y el vector que contiene
el identificador del subgrupo (sample), en este caso las columnas `thickness` y `ushift`
del conjunto de datos `ss.data.thickness2`.
La función `qcc` crea el gráfico propiamente dicho. El gráfico más sencillo
solo requiere la matriz de datos, y el tipo de gráfico. Se calculan así los
límites con los datos de los 14 subgrupos (fase I sin valores preespecificados).
Vemos que hay un punto fuera de los límites, aunque por poco. Habría que
investigar y eliminar la causa asignable (o dejarlo, que es lo que hacemos aquí,
porque no se encuentra una razón objetiva para eliminar el subgrupo).
Consulta la ayuda de las funciones correspondientes
en RStudio para ver más opciones.
**IMPORTANTE**: En este material se utiliza la versión 3.0 del paquete `qcc`, que
es posible no esté en CRAN en el momento de usar este material. Si es así, se puede
instalar desde GitHub usando el paquete `remotes` de la siguiente forma:
` remotes::install_github("luca-scr/qcc")`
```
```{r gcm, fig.width=6, fig.asp=0.6, fig.align='center', fig.cap="Gráfico de control de la media para el ejemplo del grosor de las placas metálicas", out.width="70%", message=FALSE, warning=FALSE}
library(qcc, quietly = TRUE)
samples.thick <- qccGroups(
data = ss.data.thickness2,
x = thickness,
sample = ushift)
gd_media <- qcc(data = samples.thick,
type = "xbar")
plot(gd_media)
```
```{block2, type='rmdpractica'}
**Excel**
Para hacer el gráfico en Excel, debemos disponer los datos
como en la tabla \@ref(tab:thickness). Después, calcular las
medias y rangos para cada subgrupo, la media global y el rango
medio. A continuación crear series constantes para los límites de control y la línea
central usando las fórmulas \@ref(eq:gcmsvp). Finalmente,
representar gráficamente las cuatro series (líneas y datos) en un gráfico
de dispersión, dando el formato adecuado a cada serie. Como se puede ver,
mucho más laborioso. En el siguiente enlace se puede descargar un archivo
Excel con este proceso realizado:
http://emilio.lcano.com/b/epac/datos/ejemplos_espesor2.xlsx
```
```{block2, type='rmdpractica'}
**Minitab**
Vamos al menú "Estadísticas > Gráficas de control > Gráficas de variables para subgrupos > Xbarra". Debemos tener antes los datos en la hoja de trabajo,
que se pueden importar desde Excel entre otros formatos. Indicar las columnas que tienen los datos, o el tamaño de los subgrupos, o la
columna identifidadora (los datos pueden estar dispuestos apilados o extendidos).