Esercitazione

Transcript

Esercitazione
22/01/2016
Prova scritta del 7 marzo 2014
Un campione di 100 componenti è sottoposto alla prova di durata per 500 ore e i
tempi di insuccesso dei 12 componenti che si sono guastati durante il test sono i
seguenti: 6, 21, 50, 84, 95, 130, 205, 260, 270, 370, 440 e 480 ore.
a) Costruire un modello teorico che descriva il tempo di vita del componente.
b) Sottoporlo a verifica statistica(…).
c) Calcolare il tempo di vita medio teorico in base al modello scelto e confrontarlo
con il tempo di vita campionario.
d) Determinare la mediana teorica e confrontarla con quella empirica valutata sui
dati.
Analisi descrittiva del campione
> h<-hist(dati)
> str(h)
List of 6
$ breaks : num [1:6] 0 100 200 300 400 500
$ counts : int [1:5] 5 1 3 1 2
$ density : num [1:5] 0.004167 0.000833 0.0025 0.000833 0.001667
$ mids : num [1:5] 50 150 250 350 450
$ xname : chr "dati"
$ equidist: logi TRUE
- attr(*, "class")= chr "histogram"
Dall’istogramma si evince un andamento
esponenziale.
Per salvare i grafici in PDF
1
22/01/2016
Se sovrapponiamo la linea della densità,
potrebbe andar bene anche un modello
di Weibull.
> h<-hist(dati,freq=F)
> lines(density(dati),col='red',lwd=3)
Pertanto effettuiamo i PPP per stabilire
quale modello usare.
Per poter mettere i grafici su una stessa
finestra
> par(mfrow=c(1,3))
> qqnorm(dati)
Per verificare l’andamento esponenziale
> x<-sort(dati)
> index<-seq(1,12,1)
> cdf<-(index-0.3)/12.4
> z<-log(1/(1-cdf))
> plot(x,z,type='p',xlab='Dati',ylab='Trasf.log.cdf',main='Prob.plotting
+ esponenziale')
>
Per verificare l’andamento di Weibull
2
22/01/2016
> x<-log(sort(dati))
> z<-log(log(1/(1-cdf)))
> plot(x,z,type='p',xlab='Log Dati',ylab='Log log cdf',main='Probability
+ plotting paper Weibull')
>
La distribuzione di Weibull
è quella che meglio fitta i
dati.
In questo momento non abbiamo gli strumenti per stabi
lire quale distribuzione si
avvicina maggiormente a
quella teorica.
Potremmo usare una legge
lognormale?
> par(mfrow=c(1,1))
> qqnorm(log(dati))
>
Avendo stabilito che la legge
da usare per la stima è quella
di Weibull, usiamo il metodo
massima verosimiglianza
> library('MASS')
> stima<-fitdistr(dati,"weibull")
Errore in fitdistr(dati, "weibull") : optimization failed
>
REGRESSIONE
3
22/01/2016
> x<-log(sort(dati))
> result<-lm(z ~ x)
> result
Call:
lm(formula = z ~ x)
> x<-log(sort(dati))
> z<-log(log(1/(1-cdf)))
> plot(x,z,type='p',xlab='Log Dati',ylab='Log log cdf',
+ main='Probability plotting paper Weibull')
> abline(lm(z ~ x))
Coefficients:
(Intercept)
x
-4.5465
0.8419
> m=0.8419
> b=exp(4.5465/m)
> ks.test(dati,"pweibull",0.84195,exp(4.5465/0.84195))
One-sample Kolmogorov-Smirnov test
data: dati
D = 0.1468, p-value = 0.9253
alternative hypothesis: two-sided
> ks.test(dati,"pexp",1/mean(dati))
One-sample Kolmogorov-Smirnov test
data: dati
D = 0.1425, p-value = 0.9396
alternative hypothesis: two-sided
4
22/01/2016
Calcolare il tempo di vita medio (mediano) teorico in base al modello scelto e
confrontarlo con il tempo di vita medio (mediano) campionario.
> summary(dati)
Min. 1st Qu. Median
6.0 75.5
167.5
Mean 3rd Qu. Max.
200.9 295.0 480.0
Per il tempo medio di vita teorico, usiamo l’integrazione numerica:
> integrand<-function(x){pweibull(x,m,b,lower.tail=FALSE)}
> integrate(integrand,0,Inf)
242.4097 with absolute error < 0.019
Per il tempo mediano bisogna risolvere l’equazione
con
ossia
Dalla prova scritta del 16 Febbraio 2015
ESERCIZIO: E’ stato realizzato un esperimento per giudicare l’effetto di 4 diversi carburanti e 2 differenti tipi
di lanciatori sul range di un certo razzo.
a) Sulla base dei seguenti dati espressi in miglia marine, verificare se ci sono differenze significative
effettuando un’analisi ANOVA.
b) Stimare la varianza dell’errore.
c) Verificare le ipotesi che consentono l’applicazione dell’ANOVA.
d) Dal grafico delle interazioni, determinare (qualora ci fossero) quelle coppie di livelli che hanno maggiore
interazione e quantificarne il valore numerico.
LanR X
LanR Y
Carburante I
62.5 58.7
65.8 59.4
40.4 45.2
42.3 46.2
Carburante II Carburante III Carburante IV
49.3 52.4 33.8 35.9 43.6 47.8
55.6 51.9 42.9 45.2 51.2 45.7
39.7 38.9 47.4 44.2 50.4 59.8
42.5 44.2 46.8 49.5 58.6 57.1
I dati vanno sistemati in un file.
Usando il blocco note, digitare i dati al
seguente modo:
5
22/01/2016
Dopo aver salvato il file, in ambiente R posizionarsi nella cartella dove il file è stato memorizzato:
> setwd(‘…')
> datieserc<-read.table('lanciarazzo.txt',header=TRUE)
> attach(datieserc)
I box-plots dei due fattori Lanciarazzo e Carburante sono
> boxplot(Dati~Carb,col=c('red','blue','yellow','orange'),main='Boxplot carburante')
> boxplot(Dati~LanciaR,col=c('red','blue'),main='Boxplot LanciaRazzi')
Per verificare l’omogeneità delle varianze:
> bartlett.test(split(Dati,list(Carb,LanciaR)))
Bartlett test of homogeneity of variances
Sintassi diversa nelle ultime versioni di R
data: split(Dati, list(Carb, LanciaR))
Bartlett's K-squared = 3.8439, df = 7, p-value = 0.7976
Si tratta di un’ANOVA a due fattori con repliche:
> results<-aov(Dati~Carb+LanciaR+Carb*LanciaR,data=datieserc)
> summary(results)
Df Sum Sq Mean Sq F value Pr(>F)
Carb
3
464.0
154.7 13.290 2.58e-05 ***
LanciaR
1
73.5
73.5
6.316 0.0191 *
Carb:LanciaR 3 1110.8
370.3 31.815 1.57e-08 ***
Residuals
24
279.3
11.6
Varianza dell’errore
--Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Dalle interazione si evince che si rigetta l’ipotesi di assenza di interazione. Pertanto non è
possibile proseguire con l’analisi. Per validare il modello, è comunque necessario che i
residui abbiano legge gaussiana.
6
22/01/2016
Per effettuare l’analisi dei residui del fattore Lanciarazzo, è necessario calcolare le medie
dei due fattori:
> medialanciaX<-mean(Dati[1:16])
> medialanciaY<-mean(Dati[17:32])
> media1<-rep(medialanciaX,16)
> media2<-rep(medialanciaY,16)
> residuilancia<-c(Dati[1:16]-media1,Dati[17:32]-media2)
> qqnorm(residuilancia)
> shapiro.test(residui)
Shapiro-Wilk normality test
data: residui
W = 0.9703, p-value = 0.5079
Per effettuare l’analisi dei residui del fattore Carburante, è necessario calcolare le medie
dei livelli:
> residuiC1<-c(Dati[1:4],Dati[17:20])-mean(c(Dati[1:4],Dati[17:20]))
> residuiC2<-c(Dati[5:8],Dati[21:24])-mean(c(Dati[5:8],Dati[21:24]))
> residuiC3<-c(Dati[9:12],Dati[25:28])-mean(c(Dati[9:12],Dati[25:28]))
> residuiC4<-c(Dati[13:16],Dati[29:32])-mean(c(Dati[13:16],Dati[29:32]))
> residui<-c(residuiC1,residuiC2,residuiC3,residuiC4)
> qqnorm(residui)
> shapiro.test(residui)
Shapiro-Wilk normality test
data: residui
W = 0.9551, p-value = 0.2006
Poiché i residui sono gaussiani sia sulle
righe che sulle colonne, le ipotesi sulla
popolazione, necessarie alla applicazione
dell’anova, sono verificate.
7
22/01/2016
Per stabilire quale tra i livelli dei due fattori ha interazioni, è necessario un interaction plot,
ossia
> interaction.plot(Carb, LanciaR, Dati,col=c('red', 'blue'),lwd=4,ylab='media dei dati')
>
> interaction.plot(LanciaR, Carb, Dati,col=c('red', 'blue'),lwd=4,ylab='media dei dati')
>
Dai grafici, si evidenzia un’interazione tra le coppie C1-C4 e C2-C3. Pertanto gli effetti vanno
valutati per queste coppie:
> eff11<-sum(Dati[1:4])
> eff12<-sum(Dati[5:8])
> eff13<-sum(Dati[9:12])
> eff14<-sum(Dati[13:16])
> eff21<-sum(Dati[17:20])
> eff22<-sum(Dati[21:24])
> eff23<-sum(Dati[25:28])
> eff24<-sum(Dati[29:32])
-
=
-
=
-
CarbII
CarbIII
CarbIV
eff11
eff12
eff13
eff14
LanRY
eff21
eff22
eff23
eff24
Ad esempio per la coppia C2-C3 (analogamente per C1-C4)
si ha:
=1.725
2 3=
CarbI
LanRX
= 3.6
= 9.25
> (eff12+eff13)/8-(eff22+eff23)/8
[1] 1.725
> (eff12+eff22)/8-(eff13+eff23)/8
[1] 3.6
> (eff12+eff23)/8-(eff22+eff13)/8
[1] 9.25
>
8
22/01/2016
ESERCIZIO: Ipotizzando di lavorare solo sui lanciarazzi, confrontare le due popolazioni X e
Y sia con strumenti di analisi descrittiva che inferenziale. Ci sono differenze rispetto alle
conclusioni cui si perviene all’esercizio precedente? Motivare la risposta.
I dati del LanciaRazzoX sono Dati[1:16], quelli del LanciaRazzoY sono Dati[17:32].
> hist(Dati[1:16],freq=F,col='Blue',ylim=range(0,0.06),xlim=range(30,70))
> hist(Dati[17:32],freq=F,col='Blue',ylim=range(0,0.06),xlim=range(30,70))
Provengono da due popolazioni che hanno pari legge?
> ks.test(Dati[1:16],Dati[17:32])
Two-sample Kolmogorov-Smirnov test
data: Dati[1:16] and Dati[17:32]
D = 0.3125, p-value = 0.4154
alternative hypothesis: two-sided
Questa legge è gaussiana?
> ks.test(Dati[1:16],"pnorm",mean(Dati[1:16]),sd(Dati[1:16]))
One-sample Kolmogorov-Smirnov test
data: Dati[1:16]
D = 0.0868, p-value = 0.9988
alternative hypothesis: two-sided
Warning message:
> ks.test(Dati[17:32],"pnorm",mean(Dati[17:32]),sd(Dati[17:32]))
In ks.test(Dati[1:16], Dati[17:32]) :
impossibile calcolare p-value esatto in presenza di ties One-sample Kolmogorov-Smirnov test
Sono indipendenti?
> cor.test(Dati[1:16],Dati[17:32])
Pearson's product-moment correlation
data: Dati[17:32]
D = 0.1677, p-value = 0.7591
alternative hypothesis: two-sided
Warning message:
In ks.test(Dati[17:32], "pnorm", mean(Dati[17:32]), sd(Dati[17:32])) :
ties should not be present for the Kolmogorov-Smirnov test
data: Dati[1:16] and Dati[17:32]
t = -1.2616, df = 14, p-value = 0.2277
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.7037557 0.2093480
sample estimates: cor -0.319515
9
22/01/2016
Per la prima popolazione, i principali indici statistici sono:
> mean(Dati[1:16]); summary(Dati[1:16])
[1] 50.10625
Min. 1st Qu. Median Mean 3rd Qu. Max.
33.80 44.80 50.25 50.11 56.38 65.80
> sd(Dati[1:16]); IQR(Dati[1:16]);diff(range(Dati[1:16]))
[1] 8.986692
[1] 11.575
[1] 32
Ripetere la stessa analisi
anche per il secondo
campione.
> sd(Dati[1:16])/mean(Dati[1:16]); sd(Dati[1:16])/sqrt(16)
[1] 0.1793527
[1] 2.246673
> library('e1071')
> skewness(Dati[1:16]);kurtosis(Dati[1:16])
[1] -0.05834305
[1] -0.9395265
Analisi: media e mediana sono quasi coincidenti, pertanto la distribuzione è simmetrica;
tale osservazione è confermata dal coefficiente di asimmetria quasi nullo; la curtosi è
negativa, con una deviazione standard che è circa la quarta parte del range, ossia il campione
ha una certa dispersione; la media campionaria è uno stimatore preciso.
Infine per verificare se hanno medesima varianza e medesima media.
> var.test(Dati[1:16], Dati[17:32], ratio = 1, alternative = "two.sided", conf.level = 0.95)
F test to compare two variances
data: Dati[1:16] and Dati[17:32]
F = 1.8849, num df = 15, denom df = 15, p-value = 0.2311
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.6585757 5.3947715
sample estimates:
ratio of variances 1.884905
> t.test(Dati[1:16], Dati[17:32], mu = 0, alternative ="two.sided",paired = FALSE, var.equal =
+ TRUE, conf.level = 0.95)
Two Sample t-test
Cosa si può concludere rispetto all’esercizio precedente?
data: Dati[1:16] and Dati[17:32]
t = 1.0906, df = 30, p-value = 0.2841
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.645171 8.707671
sample estimates:
mean of x mean of y 50.10625 47.07500
10
22/01/2016
ESERCIZIO: Da una linea di produzione di filo di cotone sono stati prelevati, ad intervalli
casuali, 25 spezzoni di cui sono stati misurati i rispettivi carichi di rottura in kg:
2.79, 2.55, 2.21, 1.97, 2.45, 2.18, 2.57, 2.13, 2.54, 2.90, 2.34, 2.28, 1.78,
2.19, 2.71, 2.35, 1.91, 1.98, 2.88, 2.45, 2.68, 1.58, 3.11, 1.90, 2.30
Formulare una ipotesi sulla legge di distribuzione dei seguenti dati e sottoporla a test. Se
necessario costruire dei grafici per convalidare questa tesi. Stimare la funzione di affidabilità ed effettuarne il grafico. Calcolare il tasso di rottura empirico. Calcolare il carico di
rottura medio.
Trattandosi di un campione univariato, i dati possono essere direttamente inseriti in un
vettore
> dati<-c(2.79, 2.55, 2.21, 1.97, 2.45, 2.18, 2.57, 2.13, 2.54, 2.90, 2.34, 2.28, 1.78, 2.19, 2.71,
+ 2.35, 1.91, 1.98, 2.88, 2.45, 2.68, 1.58, 3.11, 1.90, 2.30)
>
> mean(dati); summary(dati)
[1] 2.3492
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.580 2.130 2.340 2.349 2.570 3.110
>
> sd(dati); IQR(dati);diff(range(dati))
[1] 0.3798456
[1] 0.44
[1] 1.53
Il carico di rottura medio è 2.3492
> sd(dati); IQR(dati);diff(range(dati))
[1] 0.3798456
[1] 0.44
[1] 1.53
> skewness(dati);kurtosis(dati)
[1] 0.008315056
[1] -0.780604
> sd(dati)/sqrt(length(dati)); sd(dati)/mean(dati)
[1] 0.07596912
[1] 0.1616915
> hist(dati,freq=F,col='Blue')
> boxplot(dati,col='blue',main='Boxplot dati')
>
L’andamento risulta essere gaussiano.
> lines(density(dati),col='red',lwd=3)
>
11
22/01/2016
> ks.test(dati,"pnorm",mean(dati),sd(dati))
One-sample Kolmogorov-Smirnov test
data: dati
D = 0.0745, p-value = 0.9991
alternative hypothesis: two-sided
Per validare l’esito del test, confrontiamo
la funzione di ripartizione empirica e
quella teorica.
Warning message:
In ks.test(dati, "pnorm", mean(dati), sd(dati)) :
ties should not be present for the Kolmogorov-Smirnov test
> plot.ecdf(dati,col='blue',ylim=range(0,1),
+ xlim=range(1.5,4.0))
> par(new=TRUE)
> plot(sort(dati),pnorm(sort(dati),mean(dati),
+ sd(dati)),type='l',lwd=3,col='red',ylim=range(0,1),
+ xlim=range(1.5,4.0),ylab=' ')
>
> cf<-ecdf(dati)
Per costruire la funzione di ripartizione empirica
> cf(sort(dati))
[1] 0.04 0.08 0.12 0.16 0.20 0.24 0.28 0.32 0.36 0.40 0.44 0.48 0.52 0.56 0.64
[16] 0.64 0.68 0.72 0.76 0.80 0.84 0.88 0.92 0.96 1.00
>
> plot(sort(dati),1-cf(sort(dati)),type='S',col='red',
La funzione di affidabilità si ottiene
+ main='Affidabilità')
al seguente modo:
>
Per costruire il tasso di guasto:
Le densità vanno accoppiate ai punti
centrali delle classi e divisi per la funzione di affidabilità.
> obj<-hist(dati,freq=F)
> obj
$breaks
[1] 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.2
$counts
[1] 1 1 4 3 5 5 3 2 1
$density
[1] 0.2 0.2 0.8 0.6 1.0 1.0 0.6 0.4 0.2
$mids
[1] 1.5 1.7 1.9 2.1 2.3 2.5 2.7 2.9 3.1
$xname
[1] "dati"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
12
22/01/2016
Per calcolare il tasso di guasto, si considera
a) la densità valutata nei punti centrali delle classi;
b) si calcola la funzione di ripartizione nei centri delle classi obj$mids[i] usando la function cumulativa sum()
c) si calcola la funzione di affidabilità complementando la funzione di ripartizione;
d) si calcola il tasso, dividendo la densità per la funzione di affidabilità
> r<-vector()
> for(i in 1:9) r[i] <- 1-(sum(dati<=obj$mids[i])/25);
>r
[1] 1.00 0.96 0.88 0.76 0.52 0.36 0.20 0.04 0.04
> obj$density/r
[1] 0.2000000 0.2083333 0.9090909 0.7894737 1.9230769 2.7777778 3.0000000
[8] 10.0000000 5.0000000
ESERCIZIO: Supponiamo di sottoporre a controllo una macchina per la foratura di pannelli di legno. I fori praticati devono avere un diametro di 2cm. I
dati raccolti durante i controlli indicano che lo scarto tipo dal valore medio è
0.15cm. Se si assume che lo spostamento massimo consentito nel controllo
finale è 0.1 cm e che la conseguente rilavorazione dell’apparato costa 15 euro,
determinare la funzione perdita teorica associata al processo di foratura ed
effettuarne un grafico. Determinare la perdita media associata al suddetto
processo di controllo.
Il tipo è Normal is better . La funzione perdita è di tipo
L ( x) = K ( x − 2) 2
Poiché si ha: K =
costo
15
=
= 1500 posto
2
scostam.massimo
0.12
µ = x0 = 2,
si ha che la funzione perdita media risulta 1500*0.15*0.15.
26
13
22/01/2016
ESERCIZIO: La lunghezza complessiva di un accendisigari usato nelle macchine
viene monitorato attraverso una carta di controllo. Costruire la carta. Calcolare gli
indici di capacità del processo ipotizzando che le specifiche del processo siano 7 e
15. Costruire la carta di tolleranza.
Campione Osservazioni
1 2 3 4
1
15 10 8 9
2
14 14 10 6
3
9 10 9 11
4
8 6 9 13
5
14 8 9 12
6
9 10 7 13
7
15 10 12 12
8
14 16 11 10
9
11 7 16 10
10
11 14 11 12
11
13 8 9 5
12
10 15 8 10
13
8 12 14 9
14
15 12 14 6
15
13 16 9 5
16
14 8 8 12
17
8 10 16 9
18
8 14 10 9
19
13 15 10 8
20
9 7 15 8
Trascriviamo i dati in un file.
27
> datiaccendi<-read.table('accendisigari.txt', header=TRUE)
> attach(datiaccendi)
> library('qcc')
Carico il pacchetto richiesto: MASS
Package 'qcc', version 2.2
Type 'citation("qcc")' for citing
this R package in publications.
> qcc(datiaccendi,type='xbar')
Il processo appare in controllo.
14
22/01/2016
Per la carta sull’escursione, siccome i sottogruppi hanno taglia costante pari a 5, è necessario
usare il metodo "UWAVE-R"
> qcc(datiaccendi,type='R')
> obj<-qcc(datiaccendi,type='xbar')
> process.capability(obj, spec.limits=c(7, 15))
Process Capability Analysis
il processo non è capace di produrre entro
i limiti di specifica
> cp<-(15-7)/(6*3.27829)
> cp
[1] 0.4067161
Call:
process.capability(object = obj, spec.limits = c(7, 15))
Number of obs = 80
Center = 10.7
StdDev = 3.27829
Target = 11
LSL = 7
USL = 15
Capability indices:
Value 2.5% 97.5%
Cp 0.4067 0.3434 0.4699
Cp_l 0.3762 0.2976 0.4548
Cp_u 0.4372 0.3534 0.5211
Cp_k 0.3762 0.2825 0.4699
Cpm 0.4050 0.3421 0.4679
Exp<LSL 13% Obs<LSL 6.2%
Exp>USL 9.5% Obs>USL 5%
15
22/01/2016
> obj<-qcc(datiaccendi,type='xbar')
> process.capability(obj, spec.limits=c(7, 15))
E’ centrato
Process Capability Analysis
Call:
process.capability(object = obj, spec.limits = c(7, 15))
Number of obs = 80
Center = 10.7
StdDev = 3.27829
Target = 11
LSL = 7
USL = 15
Capability indices:
Value 2.5% 97.5%
Cp 0.4067 0.3434 0.4699
Cp_l 0.3762 0.2976 0.4548
Cp_u 0.4372 0.3534 0.5211
Cp_k 0.3762 0.2825 0.4699
Cpm 0.4050 0.3421 0.4679
Exp<LSL 13% Obs<LSL 6.2%
Exp>USL 9.5% Obs>USL 5%
> obj<-qcc(datiaccendi,type='xbar')
> process.capability(obj, spec.limits=c(7, 15))
Process Capability Analysis
Non c’è uno scostamento significativo della
media del processo dal target
Call:
process.capability(object = obj, spec.limits = c(7, 15))
Number of obs = 80
Center = 10.7
StdDev = 3.27829
Target = 11
LSL = 7
USL = 15
Capability indices:
Value 2.5% 97.5%
Cp 0.4067 0.3434 0.4699
Cp_l 0.3762 0.2976 0.4548
Cp_u 0.4372 0.3534 0.5211
Cp_k 0.3762 0.2825 0.4699
Cpm 0.4050 0.3421 0.4679
Exp<LSL 13% Obs<LSL 6.2%
Exp>USL 9.5% Obs>USL 5%
16
22/01/2016
> obj<-qcc(datiaccendi,type='xbar')
> process.capability(obj, spec.limits=c(7, 15))
Process Capability Analysis
% attesa di prodotti non conformi è circa
23%
Call:
process.capability(object = obj, spec.limits = c(7, 15))
Number of obs = 80
Center = 10.7
StdDev = 3.27829
Target = 11
LSL = 7
USL = 15
Capability indices:
Value 2.5% 97.5%
Cp 0.4067 0.3434 0.4699
Cp_l 0.3762 0.2976 0.4548
Cp_u 0.4372 0.3534 0.5211
Cp_k 0.3762 0.2825 0.4699
Cpm 0.4050 0.3421 0.4679
Exp<LSL 13% Obs<LSL 6.2%
Exp>USL 9.5% Obs>USL 5%
> obj<-qcc(datiaccendi,type='xbar')
> process.capability(obj, spec.limits=c(7, 15))
Process Capability Analysis
= % osservata di prodotti non conformi
è circa 11%
Call:
process.capability(object = obj, spec.limits = c(7, 15))
Number of obs = 80
Center = 10.7
StdDev = 3.27829
Target = 11
LSL = 7
USL = 15
Capability indices:
Value 2.5% 97.5%
Cp 0.4067 0.3434 0.4699
Cp_l 0.3762 0.2976 0.4548
Cp_u 0.4372 0.3534 0.5211
Cp_k 0.3762 0.2825 0.4699
Cpm 0.4050 0.3421 0.4679
Exp<LSL 13% Obs<LSL 6.2%
Exp>USL 9.5% Obs>USL 5%
17
22/01/2016
CARTA DI TOLLERANZA
> x<-seq(1,20,1)
> for (i in 1:20){
+ plot(rep(i,4),datiaccendi[i,],type='b',lwd=4,col='red',xlim=range(0,20),ylim=range(5,17),ylab=' ')
+ par(new=TRUE)}
>
Per posizionare il limite superiore:
> plot(x,rep(15.61,20),type='l',col='blue',lwd=4,ylim=range(5,17),xlim=range(0,20),ylab=' ')
> par(new=TRUE)
>
18
22/01/2016
Per posizionare il limite inferiore:
> plot(x,rep(5.78,20),type='l',col='blue',lwd=4,ylim=range(5,17),xlim=range(0,20),ylab=' ')
>
Da questa carta, si evince che
i sottogruppi 8 e 9, i sottogruppi
11, 15 e 17 escono dalle specifiche richieste.
19