Sei sulla pagina 1di 41

Controllo statistico dei processi Casi di studio risolti con GNU R

Paolo Bosetti Dipartimento di Ingegneria Meccanica e Strutturale Universit` a di Trento corso di Gestione dellInnovazione e dei Progetti, A.A. 2005/06 Novembre 2005

ii

Paolo Bosetti - Universit` a di Trento

Indice
1 Statistica Inferenziale 1.1 Note iniziali . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Test inferenziali su due trattamenti . . . . . . . . . . . . . . 1.2.1 Inferenza sulle medie, varianza nota . . . . . . . . . 1.2.2 t-Test a un campione, a varianza ignota, a un lato . 1.2.3 t-Test a un campione, a varianza ignota, a un lato . 1.2.4 t-Test a due campioni, a varianza ignota, a due lati . 1.2.5 t-Test accoppiato, varianza ignota, a due lati . . . . 1.2.6 t-Test accoppiato, a varianza ignota, a due lati . . . 1.2.7 F-test . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Test inferenziali su pi` u di due trattamenti . . . . . . . . . . 1.3.1 Note iniziali . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Esercizio . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Esercizio . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.4 Contrasti . . . . . . . . . . . . . . . . . . . . . . . . 1.3.5 Esercizio . . . . . . . . . . . . . . . . . . . . . . . . . 2 Quality Control Charts Statistica di Controllo di Processo 2.1 Note iniziali . . . . . . . . . . . . . . 2.2 Carte di controllo per dati attribuiti 2.2.1 Carte p . . . . . . . . . . . . 2.2.2 Carte np . . . . . . . . . . . 2.2.3 Carte c . . . . . . . . . . . . 2.2.4 Carte u . . . . . . . . . . . . 2.3 Carte di controllo per dati variabili . 2.3.1 Carte x R . . . . . . . . . . 1 1 2 2 3 4 5 6 8 8 9 9 9 12 14 17

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

23 23 23 23 27 28 29 31 31

iii

INDICE

iv

Paolo Bosetti - Universit` a di Trento

Introduzione
Questa breve memoria contiene una traccia degli esercizi di statistica proposti agli studenti del corso di Gestione dellInnovazione e dei Progetti. A Il documento ` e stato composto in L TEX 2 con il supporto della libreria R Sweave[1], che A consente di mescolare liberamente codice R nel documento L TEX.

INDICE

vi

Paolo Bosetti - Universit` a di Trento

Capitolo 1

Statistica Inferenziale
1.1 Note iniziali

In questo capitolo vengono risolti mediante il pacchetto GNU R alcuni esercizi di statistica inferenziale su due trattamenti e su pi` u trattamenti (ANOVA). Una dettagliata esposizione delle basi teoriche pu` o essere reperita sui testi di Montgomery e di Ross ([3, 4]). Per la soluzione degli esercizi saranno impiegate le funzioni di distribuzione di R. Le funzioni necessarie hanno nomi cos` costruiti: [d|p|q|r][norm|t|chisq|f](arg1,...,argn) dove le prime lettere indicano la funzione e sono seguiti dal nome della distribuzione (rispettivamente: normale, t di Student, chi quadro, F di Snedecor). Le funzioni d riportano la densit` a di probabilit` a, le p riportano la distribuzione cumulativa, le q riportano i quantili, e le r generano n valori opportunamente distribuiti. Si noti che le funzioni di tipo p e q possono riferirsi alla probabilit` a cumulativa inferiore o superiore, specicando rispettivamente lower.tail=T o lower.tail=F. Ad esempio: pt(t0,n,lower.tail=F) restituisce la probabilit` a di riscontrare, in una variabile casuale distribuita come tn , un valore superiore a t0. Le funzioni q, inne, sono le inverse delle funzioni p (vedi Figura 1.1). > split.screen(c(2, 2)) [1] 1 2 3 4 > > > > > > + > > + screen(1) curve(pt(x, 10), xlim = c(-5, 5), xlab = "t", main = "Lower tail") screen(2) curve(qt(x, 10), xlim = c(0, 1), xlab = "p", main = "Lower tail") screen(3) curve(pt(x, 10, lower.tail = F), xlim = c(-5, 5), xlab = "t", main = "Upper tail") screen(4) curve(qt(x, 10, lower.tail = F), xlim = c(0, 1), xlab = "p", main = "Upper tail")

CAPITOLO 1. STATISTICA INFERENZIALE

Lower tail
0.8 2

Lower tail

pt(x, 10)

qt(x, 10) 4 0 t 2 4

0.4

0.0

2 0.0

0.4 p

0.8

Upper tail
pt(x, 10, lower.tail = F) qt(x, 10, lower.tail = F) 0.8 2

Upper tail

0.4

0.0

0 t

2 0.0

0.4 p

0.8

Figura 1.1: Curve di distribuzione e di probabilit` a

1.2
1.2.1

Test inferenziali su due trattamenti


Inferenza sulle medie, varianza nota

Si suppone che la viscosit` a di un detergente liquido sia pari a 800 centistoke a 25C. le misure eettuate su un campione casuale di 16 elementi rilevano un viscosit` a media pari a 812 centistokes. Supponendo che la varianza della popolazione sia pari a 25 centistoke, 1. stabilire le ipotesi da vericare 2. Vericare le ipotesi con = 0.05 3. Ricavare il valore di probabilit` a associato al test 4. calcolare i limiti dellintervallo di probabilit` a al 95% Soluzione Le ipotesi di test sono: H0 : = 0 = 800 H1 : = 0 La variabile di test ` e: Z0 = y 0 812 800 = = 1.92 25/4 / n

Il valore critico della variabile di test risulta pari a: Z0.025 = 1.96 Di conseguenza, siccome risulta |Z0 | < Z0.025 , lipotesi nulla non pu` o essere rigettata. Il livello di probabilit` a associato allerrore di tipo I pu` o essere ottenuto dalla funzione di distribuzione integrale sulla coda superiore (upper tail ). Con R, si pu` o scrivere: 2 Paolo Bosetti - Universit` a di Trento

1.2. TEST INFERENZIALI SU DUE TRATTAMENTI

1.0

dnorm pnorm Z0.025

p 0.0 4 0.2 0.4

0.6

0.8

0 Z0

Figura 1.2: Distribuzione della statistica di test Z0 > pnorm(Z0, lower.tail = F) [1] 0.02742895 dove il valore p = 0.027429 comporta che la probabilit` a di commettere un errore di tipo II, ossia accettare lipotesi nulla H0 quando essa ` e falsa, vale 1 p = 0.972571 I limiti dellintervallo di condenza possono essere cos` calcolati: U = y + Z/2 / n = 824.25 L = y Z/2 / n = 799.75

1.2.2

t-Test a un campione, a varianza ignota, a un lato

Il tempo di vita di una bibita gassata imbottigliata ` e una variabile casuale con distribuzione normale. Un campione di 10 bottiglie scelte a caso viene utilizzato per dimostrare che la vita media ` e superiore a 120 giorni. I valori del tempo di vita del campione sono: > days [1] 108 124 124 106 115 138 163 159 134 139 Si assuma = 0.01. Soluzione Le ipotesi da vericare sono quelle relative ad un t-test ad un campione, a varianza ignota e nel caso di ipotesi alternativa ad un lato: H0 : = 0 = 120 H1 : > 0 3

CAPITOLO 1. STATISTICA INFERENZIALE Il valore della statistica di controllo ` e: t0 = 1.779758, mentre t0.01,9 = 2.821438, e il livello di probabilit` a` e p = 0.054409. Lipotesi nulla va quindi accettata, con il 1p = 94.56% di probabilit` a di commettere un errore di tipo II in caso contrario. In altre parole non c` e evidenza statistica che la vita media del prodotto superi i 120 giorni. I limiti dellintervallo di condenza risultano essere: U = y + t,n1 S/ n = 148.438 L = y t,n1 S/ n = 60.996 Ricorrendo alla funzione t.test di R: > t.test(days, mu = mu0, alternative = "g", conf.level = alpha) One Sample t-test data: days t = 1.7798, df = 9, p-value = 0.05441 alternative hypothesis: true mean is greater than 120 1 percent confidence interval: 148.4382 Inf sample estimates: mean of x 131

1.2.3

t-Test a un campione, a varianza ignota, a un lato

Sulla base di un campione di 16 tempi di riparazione per strumenti elettronici, si vuole stabilire se il tempo di riparazione medio ` e maggiore di 225 ore, con una probabilit` a di errore pari a 0.05. Il campione ` e il seguente (tempi in ore): > rt [1] 159 224 222 149 280 379 362 260 101 179 168 485 212 264 250 170 Soluzione Le ipotesi da vericare sono quelle relative ad un t-test ad un campione, a varianza ignota e nel caso di ipotesi alternativa ad un lato: H0 : = 0 = 225 H1 : > 0 Ricorrendo alla funzione t.test di R si ottiene: > t.test(rt, mu = mu0, alternative = "g", conf.level = alpha) One Sample t-test data: rt t = 0.6685, df = 15, p-value = 0.257 alternative hypothesis: true mean is greater than 225 5 percent confidence interval: 4 Paolo Bosetti - Universit` a di Trento

1.2. TEST INFERENZIALI SU DUE TRATTAMENTI 284.7679 Inf sample estimates: mean of x 241.5 Dal valore di probabilit` a 0.257 > 0.05 si deduce che lipotesi nulla H0 : = 0 non pu` o essere rigettata, e la probabilit` a di commettere un errore di tipo II ` e pari a 74.3% . Si noti inoltre che risulta t,n1 = qt(alpha,n-1,lower.tail=F) = 1.7531 > t0 = 0.6685 che conferma la mancanza di evidenza statistica per riutare lipotesi nulla. La relativamente ridotta probabilit` a di errori di tipo II, inne, ` e dovuta allelevata varianza del campione (S = 98.7259).

1.2.4

t-Test a due campioni, a varianza ignota, a due lati

Usando i dati, relativi alla resistenza a compressione di campioni di cemento preparati i due dierenti mortai, disponibili alllURL http://meccablog.ing.unitn.it/data/mortar.dat, vericare che i due campioni abbiano medie dierenti ( = 0.05). Soluzione Le ipotesi da vericare sono quelle relative ad un t-test ad due campioni, a varianza ignota e nel caso di ipotesi alternativa a due lati: H0 : 1 = 2 H1 : 1 = 2 In R, si caricano i dati mediante la funzione read.table direttamente dallURL specicata: > mortar <- read.table("http://meccablog.ing.unitn.it/data/mortar.dat", + header = T) > attach(mortar) > mortar Observation Mortar Strength 1 1 17.50 2 1 17.63 3 1 18.25 4 1 18.00 5 1 17.86 6 1 17.75 7 1 18.22 8 1 17.90 9 1 17.96 10 1 18.15 1 2 16.85 2 2 16.40 3 2 17.21 4 2 16.35 5

1 2 3 4 5 6 7 8 9 10 11 12 13 14

CAPITOLO 1. STATISTICA INFERENZIALE 15 16 17 18 19 20 5 6 7 8 9 10 2 2 2 2 2 2 16.52 17.04 16.96 17.15 16.59 16.57

Ricorrendo alla funzione t.test di R si ottiene: > test <- t.test(Strength ~ Mortar, var.equal = T, conf.level = alpha) > test Two Sample t-test data: Strength by Mortar t = 9.1094, df = 18, p-value = 3.678e-08 alternative hypothesis: true difference in means is not equal to 0 5 percent confidence interval: 1.149917 1.166083 sample estimates: mean in group 1 mean in group 2 17.922 16.764 Siccome p = 3.678e 08 < 0.05, se ne deduce che lipotesi nulla pu` o essere rigettata, con una probabilit` a di errore di tipo I pari a 3.678e 08. Il diagramma boxplot dei dati (Figura 1.3) conferma la conclusione.

Strength

16.5

17.0

17.5

18.0

1 Mortar

Figura 1.3: Box-plot per i dati mortar.dat

1.2.5

t-Test accoppiato, varianza ignota, a due lati

Si vuole vericare che la media delle misure di durezza eettuate con due dierenti indentatori sia uguale. A tale scopo sono eettuate 20 prove di durezza su 10 campioni dello stesso materiale, 6 Paolo Bosetti - Universit` a di Trento

1.2. TEST INFERENZIALI SU DUE TRATTAMENTI eettuando due indentazioni per campione con le due dierenti punte. I dati risultanti sono disponibili allURL: http://meccablog.ing.unitn.it/data/hardness.dat. Si consideri un limite di condenza = 0.05. Soluzione Le ipotesi da vericare sono quelle relative ad un t-test accoppiato, a varianza ignota e uguale e nel caso di ipotesi alternativa a due lati: H0 : d = 0 H1 : d = 0 Ricorrendo alla funzione t.test di R si ottiene: > t.test(Tip1, Tip2, var.equal = T, conf.level = alpha, paired = T) Paired t-test data: Tip1 and Tip2 t = -0.2641, df = 9, p-value = 0.7976 alternative hypothesis: true difference in means is not equal to 0 5 percent confidence interval: -0.12441052 -0.07558948 sample estimates: mean of the differences -0.1 Siccome p = 0.7976 > 0.05, se ne deduce che lipotesi nulla non pu` o essere rigettata, con una probabilit` a di errore di tipo II pari a 0.2024 in caso contrario. Il diagramma boxplot dei dati (Figura 1.4) conferma la conclusione.

Hardness

Indenter

Figura 1.4: Box-plot dei dati hardness.dat

CAPITOLO 1. STATISTICA INFERENZIALE

1.2.6

t-Test accoppiato, a varianza ignota, a due lati

Il diametro esterno di un cuscinetto a sfera viene misurato da 12 ispettori, ciascuno dei quali compie due misure con due calibri dierenti. I dati risultanti sono disponibili allURL:http: //meccablog.ing.unitn.it/data/bearing.dat. Valutare se esiste una eettiva dierenza sulle medie delle misure eettuate con i due calibri. Si consideri un limite di condenza = 0.05. Soluzione Le ipotesi da vericare sono quelle relative ad un t-test accoppiato nel caso di ipotesi alternativa a due lati: H0 : d = 0 H1 : d = 0 Ricorrendo alla funzione t.test di R si ottiene: > t.test(Caliper1, Caliper2, conf.level = alpha, paired = T) Paired t-test data: Caliper1 and Caliper2 t = 0.4318, df = 11, p-value = 0.6742 alternative hypothesis: true difference in means is not equal to 0 5 percent confidence interval: 0.0002128566 0.0002871434 sample estimates: mean of the differences 0.00025 Siccome p = 0.6742 > 0.05, se ne deduce che lipotesi nulla non pu` o essere rigettata, con una probabilit` a di errore di tipo II pari a 0.3258 in caso contrario. Il diagramma boxplot dei dati conferma la conclusione.

1.2.7

F-test

Uno strumento di misura utilizzato per il controllo di un processo industriale viene sostituito con un nuovo strumento dello stesso tipo. Il responsabile sospetta che il vecchio strumento abbia una varianza superiore a quello nuovo. Per vericare lipotesi preleva due campioni di n1 = 12 e 2 2 n2 = 10 osservazioni, caratterizzati da varianze S1 = 14.5 e S2 = 10.8. Soluzione Le ipotesi da vericare sono:
2 2 H0 : 1 = 2 2 2 H1 : 1 > 2

La statistica di test ` e: F0 =

2 14.5 S1 = = 1.34 2 S2 10.8

Utilizzando R, si calcola F,n1 1,n2 1 = F0.05,11,9 : 8 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU

Diameter

0.264

0.265

0.266

0.267

0.268

0.269

Caliper

Figura 1.5: Box-plot per i dati bearing.dat > qf(0.05, 11, 9, lower.tail = F) [1] 3.102485 Per tanto, siccome F0 = 1.34 < F0.05,11,9 = 3.10, lipotesi nulla non pu` o essere rigettata.

1.3
1.3.1

Test inferenziali su pi` u di due trattamenti


Note iniziali

R mette a disposizione due funzioni per eettuare lanalisi di varianza: aov() e anova(). La prima ` e pi` u adatta ad analisi di varianza di modelli ad eetti ssi, mentre la seconda funzione ` e pi` u essibile e consente di eettuare analisi pi` u complesse anche sui cosiddetti modelli lineari. Di fatto, le due sessioni alternative sono: summary(aov(y~x,data=df)) anova(lm(y~x,data=df)) la funzione aov(), come si vede, ha il vantaggio di non richiedere di costruire il modello lineare dei dati mediante lm(). Tuttavia, la funzione anova() restituisce un oggetto pi` u ricco di informazioni e pi` u utile per impieghi successivi. Le informazioni disponibili possono essere elencate mediante la funzione attributes().

1.3.2

Esercizio

Il tempo di coagulazione del sangue di 4 campioni di ratti alimentati con 4 dierenti diete (A,B,C e D) ` e riportato nella tabella disponibile allURL: http://meccablog.ing.unitn.it/ data/diet.dat. Si vuole vericare che la variazione della dieta alteri signicativamente il tempo di coagulazione. 9

CAPITOLO 1. STATISTICA INFERENZIALE Soluzione Le ipotesi che si intendono vericare possono essere espresse come: H0 : 1 = 2 = = 4 H1 : i = 0 per almento un i = 1 . . . 4 Si inizia importando i dati e denendo un modello lineare: > df <- read.table("http://meccablog.ing.unitn.it/data/diet.dat", + header = T) > attach(df) > df.lm <- lm(cTime ~ diet, d = df) ` opportuno vericare la normalit` E a dei residui (Figura 1.6). I residui possono essere ritenuti distribuiti secondo la normale se il diagramma Q-Q riporta i punti allineati secondo una retta e i diagrammi dei residui rispetto ai punti interpolati non mostri pattern. > split.screen(c(2, 2)) [1] > > + > > > > > + > > + 9 10 11 12

screen(1) boxplot(cTime ~ diet, range = 0, xlab = "Diet", ylab = "Coag. time", main = "Boxplot") screen(2) qqnorm(df.lm$res) qqline(df.lm$res) screen(3) plot(df.lm$fit, df.lm$res, xlab = "Fitted", ylab = "Residuals", main = "Residual-Fitted plot") screen(4) plot(jitter(df.lm$fit), df.lm$res, xlab = "Fitted", ylab = "Residuals", main = "Jittered plot")

Nel Q-Q plot i punti risultano adeguatamente allineati lungo la retta passante per il primo ed il terzo quartile (ottenuta col comando qqline()). Si noti che i residui non hanno 2 = 1 e quindi la retta in questione non ha necessariamente pendenza unitaria. Il diagramma Residual-Fitted plot riporta i residui per tutti gli na = N punti contro i punti interpolati i , deniti come: yij = + i + ij Il diagramma Jittered plot ` e analogo al precedente, ma presenta i punti corrispondenti aancati anzich e sovrapposti, evidenziando la molteplicit` a. Dato che i diagrammi non presentano anomalie, si pu` o assumere che lerrore campionario sia distribuito in maniera normale e procedere con lanalisi della varianza. > df.anova <- anova(df.lm) > df.anova Analysis of Variance Table Response: cTime 10 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU

Boxplot
Sample Quantiles 70 Coag. time 4

Normal QQ Plot
G GG G GG G G G G G G G G G G G G GGG G G G

65

60

0 2

Diet

Theoretical Quantiles

ResidualFitted plot
G

Jittered plot
G

Residuals

G G G G G

Residuals

G G G G G G

G G G G

4
G G G G G G G G G G G G

G G G G G G G GG G G

61

63

65 Fitted

67

62

64 Fitted

66

68

Figura 1.6: Verica di normalit` a Df Sum Sq Mean Sq F value Pr(>F) diet 3 228 76.0 13.571 4.658e-05 *** Residuals 20 112 5.6 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Un valore di F0 = 13.571 ` e sucientemente elevato da suggerire di rigettare lipotesi nulla. Il p-value pari a 4.68 105 ` e il massimo livello di che porta a rigettare lipotesi nulla. Eventuali outliers possono essere individuati osservando la distribuzione dei residui standardizzati, che ci si aspetta siano N (0, 1) (vedi Figura 1.7). > > > > > > > > > stdres <- df.lm$res/sqrt(df.anova$"Mean Sq"[2]) close.screen(all = T) plot(stdres, ylim = c(-3, 3), title = "Standardized residuals") abline(h = 1, col = "green") abline(h = 2, col = "orange") abline(h = 3, col = "red") abline(h = -1, col = "green") abline(h = -2, col = "orange") abline(h = -3, col = "red")

Se la distribuzione degli errori ` e normale, i residui standardizzati sono distribuiti come eij N ID(0, 1). In tal caso tra 1 rientrano il 68% dei punti, tra 2 il 95% e tra 3 il 99.7%, corrispondenti a > floor(length(cTime) * c(1 - 0.68, 1 - 0.95, 1 - 0.997)) [1] 7 1 0 Non si evidenziano veri outlier e la distribuzione si conferma discretamente normale. Un ulteriore test di normalit` a sui residui pu` o essere eettuato confrontandone la densit` a di distribuzione con la curva di distribuzione normale (Figura 1.8). 11

CAPITOLO 1. STATISTICA INFERENZIALE

G G G

G G G G G G G G G G G G G G G

stdres

G G G

10 Index

15

20

Figura 1.7: Distribuzione dei residui standardizzati > plot(density(stdres)) > curve(dnorm(x), add = T, col = "red")

density.default(x = stdres)

Density

0.0

0.1

0.2

0.3

0.4

N = 24 Bandwidth = 0.3758

Figura 1.8: Densit` a di distribuzione (in nero) e distribuzione normale corrispondente (in rosso)

1.3.3

Esercizio

La resistenza di una bra sintetica misto cotone viene testata mediante prove a trazione per 5 dierenti composizioni: 10, 15, 20, 25, 30% di cotone. I dati risultanti sono disponibili allURL: http://meccablog.ing.unitn.it/data/anova.dat. Si vuole vericare che la variazione del contenuto in cotone alteri signicativamente la resistenza a trazione delle bre. 12 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU Soluzione Si inizia importando i dati e vericandone la distribuzione in un boxplot (Figura 1.9): > df <- read.table("http://meccablog.ing.unitn.it/data/anova.dat", + header = TRUE) > attach(df) The following object(s) are masked from 'mortar': Observation, Strength > df.lm <- lm(Strength ~ factor(Cotton), d = df) > boxplot(Strength ~ factor(Cotton), data = df, range = 0, xlab = "% in cotone", + ylab = "Resistenza a trazione [N/mm2]", ylim = c(0, 30))

Resistenza a trazione [N/mm2]

10

15

20

25

30

15

20

25 % in cotone

30

35

Figura 1.9: Box-plot per i dati anova.dat Si noti che ` e necessario utilizzare la formula Strengthfactor(Cotton) in quanto la chiave di raggruppamento dei trattamenti ` e numerica anzich e alfabetica come nellesercizio precedente. Le ipotesi che si intendono vericare possono essere espresse come: H0 : 1 = 2 = = 5 H1 : i = 0 per almento un i = 1 . . . 5 Dal boxplot, appare poco probabile che lipotesi nulla sia vera. Si procede ad una verica quantitativa mediante un F-test: > df.anova <- anova(df.lm) > df.anova Analysis of Variance Table Response: Strength 13

CAPITOLO 1. STATISTICA INFERENZIALE Df Sum Sq Mean Sq F value Pr(>F) factor(Cotton) 4 475.76 118.94 14.757 9.128e-06 *** Residuals 20 161.20 8.06 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Si conclude che la probabilit` a di commettere un errore di tipo I (riutare H0 quando ` e vera) ` e inferiore a 1 105 . Si verica la normalit` a dei residui mediante un diagramma quantile-quantile mediante i comandi qqplot e qqline (Figura 1.10):
Normal QQ Plot
G

G G G G

Sample Quantiles

G GGG

GG G

GG

GG

G G G G G

G G

0 Theoretical Quantiles

Figura 1.10: Diagramma quantile-quantile per i dati anova.dat Il diagramma evidenzia una deviazione dalla normalit` a solo nella coda inferiore: la robustezza propria del test F ci consente comunque di accettare il risultato.

1.3.4

Contrasti
H0 H0 H0 H0 : 4 = 5 : 1 + 3 = 4 + 5 : 1 = 3 : 42 = 1 + 3 + 4 + 5

Assumendo i risultati dellesercizio 1.3.3, vericare le seguenti ipotesi:

Soluzione Le ipotesi possono essere vericate utilizzando i seguenti contrasti: H0 H0 H0 H0 : 4 = 5 : 1 + 3 = 4 + 5 : 1 = 3 : 42 = 1 + 3 + 4 + 5 C1 C2 C3 C4 = y4. + y5. = y1. + y3. y4. y5. = y1. y3. = yi. 4y2. + y3. + y4. + y5.

Si preparano i dati per lanalisi: 14 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU > df <- read.table("anova.dat", header = TRUE) > attach(df) The following object(s) are masked from 'df (position 3)': Cotton, Observation, Strength The following object(s) are masked from 'mortar': Observation, Strength > fCotton <- factor(Cotton) > df.lm <- lm(Strength ~ fCotton, d = df) > df.anova <- anova(df.lm) Si denisce la matrice dei contrasti cont: > cont <- matrix(data = c(0, 0, 0, -1, 1, 1, 0, 1, -1, -1, 1, 0, + -1, 0, 0, -1, 4, -1, -1, -1), nrow = 4, ncol = 5, byrow = T) Osserviamo il risultato del modello lineare: > summary(df.lm) Call: lm(formula = Strength ~ fCotton, data = df) Residuals: Min 1Q Median -3.8 -2.6 0.4

3Q 1.4

Max 5.2

Coefficients: Estimate Std. Error t value (Intercept) 9.800 1.270 7.719 fCotton20 5.600 1.796 3.119 fCotton25 7.800 1.796 4.344 fCotton30 11.800 1.796 6.572 fCotton35 1.000 1.796 0.557 --Signif. codes: 0 *** 0.001 ** 0.01

Pr(>|t|) 2.02e-07 0.005409 0.000315 2.11e-06 0.583753

*** ** *** ***

* 0.05 . 0.1 1

Residual standard error: 2.839 on 20 degrees of freedom Multiple R-squared: 0.7469, Adjusted R-squared: 0.6963 F-statistic: 14.76 on 4 and 20 DF, p-value: 9.128e-06 Si pu` o osservare che il modello riporta un valore di intercetta in corrispondenza del primo trattamento. Ci` o` e corretto per lanalisi F, ma riporta i valori delle yi. (nella colonna Estimate) rispetto allintercetta. Per ottenere le somme dei trattamenti ` e necessario modicare la formula nella funzione lm: > df.lm1 <- lm(Strength ~ fCotton - 1, d = df) > summary(df.lm1) 15

CAPITOLO 1. STATISTICA INFERENZIALE Call: lm(formula = Strength ~ fCotton - 1, data = df) Residuals: Min 1Q Median -3.8 -2.6 0.4

3Q 1.4

Max 5.2

Coefficients: Estimate Std. Error t value Pr(>|t|) fCotton15 9.80 1.27 7.719 2.02e-07 *** fCotton20 15.40 1.27 12.129 1.12e-10 *** fCotton25 17.60 1.27 13.862 1.02e-11 *** fCotton30 21.60 1.27 17.013 2.31e-13 *** fCotton35 10.80 1.27 8.506 4.46e-08 *** --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 Residual standard error: 2.839 on 20 degrees of freedom Multiple R-squared: 0.9744, Adjusted R-squared: 0.968 F-statistic: 152.1 on 5 and 20 DF, p-value: 3.336e-15 Si procede ora a calcolare i valori di SSC secondo lequazione: SSC = > > > > > > (
2 a i=1 ci yi. ) a n i=1 c2 i

n <- 5 yi <- df.lm1$coef * n C <- cont %*% yi SSc <- matrix(0, nrow = 4, ncol = 1) for (i in 1:4) SSc[i] <- C[i]^2/(n * sum(cont[i, ]^2)) print(SSc)

[,1] [1,] 291.60 [2,] 31.25 [3,] 152.10 [4,] 0.81 Per ciascun contrasto ` e ora possibile calcolare il valore della statistica di test F0 = SSC /M SE ed il relativo p-value : > F0 <- SSc/anova(df.lm)$Mean[2] > print(F0) [,1] [1,] 36.1786600 [2,] 3.8771712 [3,] 18.8709677 [4,] 0.1004963 16 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU > pf(F0, 1, 20, low = F) [,1] 7.011202e-06 6.295952e-02 3.147387e-04 7.545203e-01

[1,] [2,] [3,] [4,]

Adottando come criterio per il rigetto dellipotesi nulla un valore = 0.05, si conclude che le ipotesi nulle corrispondenti ai contrasti 1 e 3 possono essere riutate con una probabilit` a di errore di tipo I inferiore ad .

1.3.5

Esercizio

In un esperimento si vuole determinare lecacia di un veleno per ratti al variare della dieta seguita dai ratti stessi. I risultati dellesperimento sono disponibili allURL: http://meccablog. ing.unitn.it/data/rats.dat Analizzare il problema identicando lopportuno modello lineare. Soluzione Si caricano i dati e si verica la distribuzione dei risultati mediante due boxplot (Figura 1.11): > + > > + > + df <- read.table("http://meccablog.ing.unitn.it/data/rats.dat", h = T) attach(df) boxplot(Life ~ Poison, data = df, range = 0, xlab = "Poison", ylab = "Life") boxplot(Life ~ Treat, data = df, range = 0, xlab = "Treatment", ylab = "Life")

1.2

1.0

0.8

Life

0.6

Life 0.4 0.2 I II Poison III 0.2 0.4 0.6

0.8

1.0

1.2

B Treatment

Figura 1.11: Box-plot per i dati rats.dat Si possono vericare le interazioni mediante il comando interaction.plot (Figura 1.12): 17

CAPITOLO 1. STATISTICA INFERENZIALE > interaction.plot(Poison, Treat, Life) > interaction.plot(Treat, Poison, Life)

0.9

Poison 0.8 II I III mean of Life 0.8

0.9

Treat B D C A

0.7

mean of Life

0.6

0.5

0.4

0.3

0.2

C Treat

0.2

0.3

0.4

0.5

0.6

0.7

II Poison

III

Figura 1.12: Interaction-plot per i dati rats.dat Si noti, tuttavia, che tali graci non danno alcuna informazione a proposito dellentit` a dellerrore e che, di conseguenza, le interazioni evidenziate dai due inetraction.plot potrebbero essere dovute ai soli errori statistici piuttosto che a eettive interazioni. Per unanalisi pi` u quantitativa ` e necessario costruire un modello lineare ed eettuare lanalisi della varianza: > df.lm <- lm(Life ~ Treat * Poison, d = df) > anova(df.lm) Analysis of Variance Table Response: Life Df Treat 3 Poison 2 Treat:Poison 6 Residuals 36 --Signif. codes:

Sum Sq 0.92121 1.03301 0.25014 0.80072

Mean Sq F value Pr(>F) 0.30707 13.8056 3.777e-06 *** 0.51651 23.2217 3.331e-07 *** 0.04169 1.8743 0.1123 0.02224

0 *** 0.001 ** 0.01 * 0.05 . 0.1 1

Si noti che il modello lineare ` e denito mediante la sintassi Life Treat*Poison, analoga alla scrittura convenzionale: yij = + i + j + ( )ij + ij La tabella ANOVA riporta infatti i parametri per i due fattori (Treat e Poison) e per la loro interazione (Treat:Poison). Prima di procedere ` e opportuno vericare la normalit` a dei residui. Dato che la Figura 1.13 mostra un evidente pattern nella distribuzione dei residui,si prova a modicare il modello: 18 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU

Normal QQ Plot
0.4 0.4
G G

0.2

0.2

G G

Sample Quantiles

GG GG GGGG G G G G G G G G G G G G G G G G G G G G G G G GG G GG G

Residuals

G G G G G G G G G G G GG G G G GG G G G G G G G G G G G G G G G G G G G

0.0

0.0

G G

G G

0.2

0.2

G G

G G

G G

G G

0 Theoretical Quantiles

0.2

0.3

0.4

0.5 Fitted

0.6

0.7

0.8

0.9

Figura 1.13: Diagramma Q-Q (sinistra) e diagramma dei residui (destra), LifePoison

> df.lm <- lm(log(Life) ~ Treat * Poison, d = df) > plot(df.lm$fit, df.lm$res, xlab = "Fitted", ylab = "Residuals", + main = "Log response")

Normal QQ Plot
G G G G

0.4

G G G GG G GGGG G G G G G G G G G G G G G G G G G G G G G G G GG G GG G G G

0.4

G G G G G G G G G G G G G GG G G G G G G G G G G G G G GG G G G G G G G G G G G G

0.2

Sample Quantiles

Residuals

0.0

0.0 0.4 0.2

0.2
G

0.2

0.4

G G

G G

0 Theoretical Quantiles

1.6

1.4

1.2

1.0

0.8 Fitted

0.6

0.4

0.2

Figura 1.14: Diagramma Q-Q (sinistra) e diagramma dei residui (destra), log(Life)Poison Dato che la distribuzione dei residui riportata in Figura 1.14 non ` e ancora soddisfacente, si modica ulteriormente il modello: > df.lm <- lm(1/Life ~ Treat * Poison, d = df) > plot(df.lm$fit, df.lm$res, xlab = "Fitted", ylab = "Residuals", + main = "Reciprocal response") 19

CAPITOLO 1. STATISTICA INFERENZIALE > qqnorm(df.lm$res) > qqline(df.lm$res)

Normal QQ Plot
G G

Reciprocal response
G G

1.0

G G G G

1.0

0.5

0.5

GG G G G GG G G G G G G G G G G G G G G G G G G G G G G G G GGGG G G G G GG G

G G G

G G G G G G G G G G G G G G G G GG G G G G G G G

Sample Quantiles

Residuals

G G G

G G G G

0.0

0.0

G G

G G

0.5

0.5

G G

0 Theoretical Quantiles

3 Fitted

Figura 1.15: Diagramma Q-Q (sinistra) e diagramma dei residui (destra), 1/LifePoison A questo punto si pu` o ritenere che la distribuzione dei residui calcolati sul modello 1/LifePoison sia accettabilmente normale e si pu` o quindi procedere allanalisi ANOVA: > anova(df.lm) Analysis of Variance Table Response: 1/Life Df Sum Sq Mean Sq F value Pr(>F) Treat 3 20.414 6.8048 28.3431 1.376e-09 *** Poison 2 34.877 17.4386 72.6347 2.310e-13 *** Treat:Poison 6 1.571 0.2618 1.0904 0.3867 Residuals 36 8.643 0.2401 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 > df.lm <- lm(1/Life ~ Treat + Poison, d = df) > anova(df.lm) Analysis of Variance Table Response: 1/Life Df Sum Sq Mean Sq F value Pr(>F) Treat 3 20.414 6.8048 27.982 4.192e-10 *** Poison 2 34.877 17.4386 71.708 2.865e-14 *** Residuals 42 10.214 0.2432 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 20 Paolo Bosetti - Universit` a di Trento

` DI DUE TRATTAMENTI 1.3. TEST INFERENZIALI SU PIU > summary(df.lm) Call: lm(formula = 1/Life ~ Treat + Poison, data = df) Residuals: Min 1Q -0.82757 -0.37619

Median 0.02116

3Q 0.27568

Max 1.18153

Coefficients: Estimate Std. Error t value (Intercept) 2.6977 0.1744 15.473 TreatB -1.6574 0.2013 -8.233 TreatC -0.5721 0.2013 -2.842 TreatD -1.3583 0.2013 -6.747 PoisonII 0.4686 0.1744 2.688 PoisonIII 1.9964 0.1744 11.451 --Signif. codes: 0 *** 0.001 ** 0.01

Pr(>|t|) < 2e-16 2.66e-10 0.00689 3.35e-08 0.01026 1.69e-14

*** *** ** *** * ***

* 0.05 . 0.1 1

Residual standard error: 0.4931 on 42 degrees of freedom Multiple R-squared: 0.8441, Adjusted R-squared: 0.8255 F-statistic: 45.47 on 5 and 42 DF, p-value: 6.974e-16

21

CAPITOLO 1. STATISTICA INFERENZIALE

22

Paolo Bosetti - Universit` a di Trento

Capitolo 2

Quality Control Charts Statistica di Controllo di Processo


2.1 Note iniziali

Questo documento riporta esempi risolti di controllo statistico di processo. Gli esempi descritti in questo documento sono risolti mediante il pacchetto GNU R facendo uso della libreria QCC. ` necessario caricare tale libreria allinizio della sessione R con il comando: E > library(qcc) La libreria contiene anche i dati impiegati negli esempi sotto descritti, caricabili mediante il comando data().

2.2
2.2.1

Carte di controllo per dati attribuiti


Carte p

Con dimensione dei campioni costante Un sistema di ispezione controlla la tenuta di lattine per succo darancia. Per impostare la carta di controllo vengono selezionati e controllati 30 campioni di 50 lattine ogni mezzora. Il tabulato contenente il numero di lattine non conformi per campione pu` o essere caricato direttamente dal pacchetto QCC: > data(orangejuice) > attach(orangejuice) La tabella 2.1 contiene, nellordine, il numero del campione (sample ), il numero di lattine non conformi riscontrate (D ), il numero di lattine per campione (size ) e una colonna booleana (trial ) che identica la prima serie di calibrazione utilizzata per costruire la carta di controllo (trial =TRUE) dai dati raccolti in seguito (trial=FALSE). La carta di controllo p viene costruita sulla base dei primi 30 campioni secondo le formule: p =
1 k k i=1

p i
p (1p ) n p (1p ) n

U CL = p + 3 LCL = p 3 23

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO 1 2 3 4 5 6 7 8 9 10 sample 1 2 3 4 5 6 7 8 9 10 D 12 15 8 10 4 7 16 9 14 10 size 50 50 50 50 50 50 50 50 50 50 trial TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Tabella 2.1: Dati orangejuice (parziali)

Si tratta dunque di un caso particolare di carta di controllo p con dimensione dei sottogruppi costante. La carta di controllo, sui dati di calibrazione, pu` o essere realizzata mediante il comando qcc(), il cui output ` e riportato in Figura 2.1: > q <- qcc(D[trial], type = "p", sizes = size[trial])
p Chart for D[trial]
G G

G G

0.4

UCL
G

Group summary statistics

G G

0.3

G G G G G G

G G

CL
G

0.2

G G G G

G G G G G G G

0.1

G G

LCL 1 3 5 7 9 11 14 17 20 23 26 29

Group Number of groups = 30 Center = 0.2313333 LCL = 0.05242755 Number beyond limits = 2 StdDev = 0.421685 UCL = 0.4102391 Number violating runs = 0

Figura 2.1: Carta p per i dati di test. Si evidenziano 2 punti fuori controllo: lanalisi delle possibili cause rivela che il campione 15 ` e dovuto allintroduzione di un nuovo lotto di materie prime, mentre il campione 23 ` e dovuto alla presenza temporanea di un operatore inesperto. Tali punti vengono quindi eliminati e viene ri-calcolata la carta di controllo: > inc <- setdiff(which(trial), c(15, 23)) > q1 <- qcc(D[inc], sizes = size[inc], type = "p") > qcc(D[inc], sizes = size[inc], type = "p", newdata = D[!trial], + newsizes = size[!trial]) 24 Paolo Bosetti - Universit` a di Trento

2.2. CARTE DI CONTROLLO PER DATI ATTRIBUITI

p Chart for D[inc] and D[!trial]


Calibration data in D[inc]
G G

New data in D[!trial]

UCL
G

0.35

G G G G G

Group summary statistics

0.25

G G G G G G G G G G G G G G G G G

G G

CL
G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G

0.15

0.05

LCL

1 4 7

11 15 19 23 27 31 35 39 43 47 51 Group

Number of groups = 52 Center = 0.215 LCL = 0.04070284 Number beyond limits = 2 StdDev = 0.4108223 UCL = 0.3892972 Number violating runs = 15

Figura 2.2: Carta di controllo estesa. La linea verticale indica i nuovi dati Si noti che, nella Figura 2.2, il punto 20 risulta oltre il nuovo limite di controllo superiore. Dato che lindagine non ha rivelato nessuna causa imputabile, si decide di mantenere tale punto ed accettare i nuovi valori LCL, UCL e p calcolati. Il graco viene poi completato anche con i punti acquisiti successivamente (punti per cui trial = FALSE), che sono riportati a destra della linea tratteggiata verticale. In corrispondenza del punto 31 avviene una regolazione delle impostazioni della macchina, che comporta una evidente diminuzione della difettosit` a. Ci si chiede se sia opportuno ri-calcolare i limiti di controllo. La decisione viene presa eettuando un test per vericare le due opposte ipotesi: H0 : p1 = p2 H1 : p1 > p2 La statistica di test da impiegare ` e (vedi [2, cap. 3]): Z0 = p 1 p 2 p (1 p ) dove: p =
1 n1

N (0, 1) +
1 n2

n1 p 1 + n2 p 2 n1 + n2

Pertanto, dato che p 1 ` e la media delle difettosit` a del primo run (da 1 a 30) e p 2 ` e la media del secondo run (da 31 a 54), > > > > > > > pb1 <- mean(D[inc])/50 pb2 <- mean(D[31:54])/50 n1 <- 50 * 30 n2 <- 50 * (54 - 30) pb <- (n1 * pb1 + n2 * pb2)/(n1 + n2) Z0 <- (pb1 - pb2)/(sqrt(pb * (1 - pb) * (1/n1 + 1/n2))) print(Z0) 25

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO [1] 7.181959 > pnorm(Z0, low = F) [1] 3.435983e-13 Dato che 3.436e 13 < 0.05 ci ` e lecito rigettare lipotesi nulla con una probabilit` a derrore pari a 3.436e 11%, e costruire una nuova carta di controllo con limiti ridotti (vedi Figura 2.3): > + > > > > > q2 <- qcc(D[inc], sizes = size[inc], type = "p", newdata = D[!trial], newsizes = size[!trial]) q3 <- qcc(D[31:54], sizes = size[31:54], type = "p") plot(q2, ylim = c(0, 0.5)) abline(h = q3$limits[1], col = "gray", lty = "dashed") abline(h = q3$limits[2], col = "gray", lty = "dashed") abline(h = q3$center, col = "gray", lty = "dashed")

p Chart for D[inc] and D[!trial]


Calibration data in D[inc] New data in D[!trial]

0.4

0.5

Group summary statistics

G G

UCL
G

0.3

G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G

0.1

0.2

CL

LCL

0.0 1 4 7

11 15 19 23 27 31 35 39 43 47 51 Group

Number of groups = 52 Center = 0.215 LCL = 0.04070284 Number beyond limits = 2 StdDev = 0.4108223 UCL = 0.3892972 Number violating runs = 15

Figura 2.3: Carta di controllo con i nuovi limiti (in verde)

Con dimensione dei campioni variabile Nel caso in cui la dimensione (numero di elementi) dei campioni sia variabile, lampiezza dei limiti di controllo dipende dalla dimensione dei campioni: p =
1 k k i=1

p i
p (1p ) ni p (1p ) ni

U CL = p + 3 LCL = p 3

Un esempio pu` o essere realizzato a partire dai dati disponibili allURL: http://meccablog.ing. unitn.it/data/p_data.dat: 26 Paolo Bosetti - Universit` a di Trento

2.2. CARTE DI CONTROLLO PER DATI ATTRIBUITI sample 1 2 3 4 5 6 7 8 9 10 size 100 80 80 100 110 110 100 100 90 90 D 12 8 6 9 10 12 11 16 10 6

1 2 3 4 5 6 7 8 9 10

Tabella 2.2: Dati con dimensione variabile dei campioni (parziali)

> df <- read.table("http://meccablog.ing.unitn.it/data/p_data.dat", + h = T) > attach(df) Mediante il comando qcc() si procede a realizzare la carta di controllo riportata in Figura 2.4: > qcc(D, sizes = size, type = "p")

p Chart for D
0.20
G G

UCL

Group summary statistics

0.15

G G G G G G

0.10

G G

G G G G G

CL

G G

G G G G G

0.00

0.05

LCL 1 3 5 7 9 11 13 Group 15 17 19 21 23 25

Number of groups = 25 Center = 0.0955102 LCL is variable StdDev = 0.2939184 UCL is variable

Number beyond limits = 1 Number violating runs = 0

Figura 2.4: Carta di controllo p con campioni di dimensione variabile

2.2.2

Carte np

Una carta di controllo np si dierenzia da una carta p solo per il fatto di analizzare il numero totale np di non conformit` a anzich e la frazione (o proporzione ) p. Se n ` e il numero di campioni 27

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO per sottogruppo e k ` e il numero di sottogruppi, allora: p = LCL 1 kn
k

xi
i=1

= np 3

np (1 p ) np (1 p )

U CL = np 3

Sulla base degli sessi dati orangejuice, ` e possibile realizzare una carta di controllo np mediante la funzione qcc()(vedi Figura 2.5): > data(orangejuice) > attach(orangejuice) > qcc(D[trial], type = "np", sizes = size[trial])
np Chart for D[trial]
G G

G G

20

UCL
G

Group summary statistics

G G

15

G G G G G G

G G

CL
G

10

G G G G

G G G G G G G

G G

LCL 1 3 5 7 9 11 14 17 20 23 26 29

Group Number of groups = 30 Center = 11.56667 LCL = 2.621377 StdDev = 2.981763 UCL = 20.51196

Number beyond limits = 2 Number violating runs = 0

Figura 2.5: Carta di controllo np dei dati orangejuice.

2.2.3

Carte c

Un produttore di schede elettroniche verica il numero di non-conformit` a osservate su 26 campioni di 100 schede ciascuno. I relativi dati sono disponibili nella libreria QCC come data frame circuit. La Tabella 2.3 contiene un estratto dei dati: la colonna x riporta il numero di nonconformit` a per campione, la colonna size il numero di schede per campione. Si realizza la carta di controllo c per il processo mediante il solito comando qcc() (Figura 2.6). > data(circuit) > attach(circuit) > q1 <- qcc(x[trial], sizes = size[trial], type = "c") Si eliminano i punti fuori controllo (punto 6: errore delloperatore e mancato rilevamento di non conformit` a; punto 20: guasto a un termostato e conseguente innalzamento della temperatura), si ri-calcolano i limiti e si estende la carta di controllo ai nuovi dati (Figura 2.7): 28 Paolo Bosetti - Universit` a di Trento

2.2. CARTE DI CONTROLLO PER DATI ATTRIBUITI x 21 24 16 12 15 5 28 20 31 25 size 100 100 100 100 100 100 100 100 100 100 trial TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

1 2 3 4 5 6 7 8 9 10

Tabella 2.3: Dati con dimensione variabile dei campioni (parziali)

c Chart for x[trial]


40
G G

35

UCL Group summary statistics 30


G G G

25

G G G G G

20

G G G G G G G G G G G G

CL

15

G G

10

G G

LCL 7 9 11 13 15 17 19 21 23 25

Group Number of groups = 26 Center = 19.84615 LCL = 6.481447 StdDev = 4.454902 UCL = 33.21086

Number beyond limits = 2 Number violating runs = 0

Figura 2.6: Carta di controllo c per la produzione di schede elettroniche. > inc <- setdiff(which(trial), q1$violations$beyond) > q2 <- qcc(x[inc], sizes = size[inc], type = "c", newdata = x[!trial], + newsizes = size[!trial])

2.2.4

Carte u

` necessario realizzare una carta di controllo per una linea di assemblaggio di personal computer. E I relativi dati sono disponibili nella libreria QCC come data frame pcmanufact. La Tabella 2.4 contiene un estratto dei dati: la colonna x riporta il numero di non-conformit` a per campione, la colonna size il numero di PC per campione. Si realizza la carta di controllo c per il processo mediante il solito comando qcc() (Figura 2.8). > data(pcmanufact) > attach(pcmanufact) > q1 <- qcc(x, sizes = size, type = "u")

29

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO

c Chart for x[inc] and x[!trial]


Calibration data in x[inc]
G G

New data in x[!trial]

UCL 30

Group summary statistics

25

G G G G G

G G G G G

20

G G G G G G G G G G G G G G

G G

CL
G

15

G G

G G G G G G G G

10

LCL 1 4 7 10 14 18 22 Group Number of groups = 44 Center = 19.66667 LCL = 6.362532 StdDev = 4.434712 UCL = 32.9708 26 30 34 38 42

Number beyond limits = 0 Number violating runs = 2

Figura 2.7: Carta di controllo c per la produzione di schede elettroniche, estesa a nuovi dati. I limiti di controllo sono sati ri-calcolati escludendo i punti in violazione durante la prima serie di calibrazione.

u Chart for x
UCL
G

Group summary statistics

G G

G G G G G G G G

CL
G

LCL 1 2 3 4 5 6 7 8 9 11 Group 13 15 17 19

Number of groups = 20 Center = 1.93 LCL = 0.06613305 Number beyond limits = 0 StdDev = 3.106445 UCL = 3.793867 Number violating runs = 0

Figura 2.8: Carta di controllo u per la produzione di schede elettroniche.

30

Paolo Bosetti - Universit` a di Trento

2.3. CARTE DI CONTROLLO PER DATI VARIABILI x 10 12 8 14 10 16 11 7 10 15 size 5 5 5 5 5 5 5 5 5 5

1 2 3 4 5 6 7 8 9 10

Tabella 2.4: Non-conformit` a riscontrate in campioni di personal computer (parziali)

2.3
2.3.1

Carte di controllo per dati variabili


Carte x R

Si vuole realizzare una carta di controllo x R per una linea di produzione di fasce elastiche per pistoni di motore a scoppio. La variabile sotto controllo ` e il diametro interno. I dati sono disponibili nel data frame pistonrings della libreria QCC, in cui vengono riportati sia i dati utilizzati per mettere a punto le carte di controllo che una serie aggiuntiva di dati di produzione. Si comincia importando i dati di set-up e raggruppandoli nel formato opportuno mediante il comando qcc.groups(), per poi realizzare la carta di controllo R riportata in Figura 2.9: > > > > data(pistonrings) attach(pistonrings) d1 <- qcc.groups(data = diameter[trial], sample = sample[trial]) q1 <- qcc(d1, type = "R") diameter 74 74 74 73 74 73 73 74 74 74 sample 1 1 1 1 1 2 2 2 2 2 trial TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

1 2 3 4 5 6 7 8 9 10

Tabella 2.5: Diametro interno di fasce elastiche per pistoni Dato che la carta di controllo non mostra punti critici, si procede a realizzare la carta di controllo x , riportata in Figura 2.10: > q2 <- qcc(d1, type = "xbar", target = 74) 31

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO

R Chart for d1
0.05 UCL

0.04

G G G G

Group summary statistics

0.03

G G G G G G

0.02

G G G G G G G G G G G

CL

0.01

G G G

0.00

LCL 1 3 5 7 9 11 13 Group 15 17 19 21 23 25

Number of groups = 25 Center = 0.02276 LCL = 0 Number beyond limits = 0 StdDev = 0.009785039 UCL = 0.04812533 Number violating runs = 0

Figura 2.9: Carta di controllo R per la produzione fasce elastiche.

xbar Chart for d1


UCL 74.010
G G G G G G G G G G G G G G G G G G G G G G

Group summary statistics

74.000

G G

CL

73.990

LCL 1 3 5 7 9 11 13 Group 15 17 19 21 23 25

Number of groups = 25 Center = 74.00118 LCL = 73.98805 StdDev = 0.009785039 UCL = 74.0143

Number beyond limits = 0 Number violating runs = 0

Figura 2.10: Carta di controllo x per la produzione di fasce elastiche.

32

Paolo Bosetti - Universit` a di Trento

2.3. CARTE DI CONTROLLO PER DATI VARIABILI 1 74.03 74.00 73.99 74.00 73.99 74.01 74.00 73.98 74.01 74.00 2 74.00 73.99 74.02 74.00 74.01 73.99 74.01 74.00 74.00 74.00 3 74.02 74.00 74.02 73.99 74.02 74.00 73.99 73.99 74.01 73.99 4 73.99 74.01 74.00 74.02 73.99 73.98 74.00 74.02 74.00 74.01 5 74.01 74.00 74.00 74.01 74.01 73.99 74.00 73.99 74.00 74.00

1 2 3 4 5 6 7 8 9 10

Tabella 2.6: Diametro interno di fasce elastiche per pistoni, dati raggruppati

Dato che anche la carta x non riporta problemi, le due carte di controllo vengono poi estese alla produzione (vedi Figure 2.11 e 2.12): > d2 <- qcc.groups(data = diameter[!trial], sample = sample[!trial]) > q3 <- qcc(d1, type = "R", newdata = d2) > q4 <- qcc(d1, type = "xbar", target = 74, newdata = d2)

R Chart for d1 and d2


0.05
Calibration data in d1 New data in d2

UCL
G

0.04

G G G G G

Group summary statistics

0.03

G G G G G G G G G G G G G G G G G G G G G G G G G G G

G G

G G

0.02

CL

0.00

0.01

LCL 1 4 7 10 13 16 19 22 25 28 31 34 37 40 Group

Number of groups = 40 Center = 0.02276 LCL = 0 Number beyond limits = 0 StdDev = 0.009785039 UCL = 0.04812533 Number violating runs = 0

Figura 2.11: Carta di controllo R estesa per la produzione di fasce elastiche.

33

CAPITOLO 2. QUALITY CONTROL CHARTS STATISTICA DI CONTROLLO DI PROCESSO

xbar Chart for d1 and d2


Calibration data in d1 New data in d2
G G

74.020

G G

Group summary statistics

G G

74.010

G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G

G G

UCL

74.000

CL

73.990

G G

LCL 1 4 7 10 13 16 19 22 25 28 31 34 37 40 Group

Number of groups = 40 Center = 74.00118 LCL = 73.98805 StdDev = 0.009785039 UCL = 74.0143

Number beyond limits = 3 Number violating runs = 1

Figura 2.12: Carta di controllo x estesa per la produzione di fasce elastiche.

34

Paolo Bosetti - Universit` a di Trento

Bibliograa
A [1] Friedrich Leisch. Sweave, part I: Mixing R and L TEX. R News, 2(3):2831, December 2002.

[2] D.C. Montgomery. Introduction to Statistical Quality Control. John Wiley & Sons, New York, 4th edition, 2000. [3] D.C. Montgomery. Design and Analysis of Experiments. John Wiley & Sons, Hoboken, NJ, USA, 5th edition, 2001. [4] Sheldon M. Ross. Introductory Statistics. Elsevier Academic Press, Burlington, MA, USA, 2nd edition, 2005.

35