Le nombre d’unités non conformes X à un poste d’inspection pour des lots de 150 unités est présenté dans le tableau selon l’ordre temporel de la production (lignes)
On commence par télécharger les données de l’exercice
donnees<-read.csv("https://sjaubert.github.io/SPCR/spc/SPC-1-inspection.csv",header = T)
str(donnees) #vérifions nos données
## 'data.frame': 120 obs. of 1 variable:
## $ X: int 3 4 2 5 6 10 5 4 3 11 ...
library(qcc)
dd<-donnees$X
q1<-qcc(data = dd,type = "p",sizes = 150)
Retrouvons par le calcul les limites :
(Center<-sum(donnees$X)/(150*120))
## [1] 0.04727778
(UCL<-Center+3*sqrt(Center*(1-Center)/150))
## [1] 0.09926389
(LCL<-Center-3*sqrt(Center*(1-Center)/150))
## [1] -0.00470833
Faisons la carte NP :
q2<-qcc(data = dd,type = "np",sizes = 150)
Bien entendu les cartes p et np sont équivalentes car n = 150 est constant. Elles donnent la même information.
La pression d’un réservoir d’eau servant au refroidissement d’un procédé est surveillée d’une manière continue. La pression X est enregistrée sur du papier graphique enroulé sur un cylindre circulaire. Périodiquement, le papier graphique circulaire est changé et les données sont placées en fichier. Personne ne savait quoi faire avec ces données. Un ingénieur qui venait de suivre un cours sur le contrôle statistique des procédés décida de construire une carte Xbar et R. Le tableau présente les valeurs des 5 premières heures à chaque jour couvrant la période du ler décembre au 13 janvier.
donnees_SPC2<-read.csv("https://sjaubert.github.io/SPCR/spc/SPC-2-pression.csv",header = T,sep = ";")
l’instruction summary va nous donner des informations sur le fichier récupéré :
summary(donnees_SPC2)
## date groupe pression X
## Length:120 Min. : 1.00 Min. :43.0 Mode:logical
## Class :character 1st Qu.: 6.75 1st Qu.:53.0 NA's:120
## Mode :character Median :12.50 Median :58.0
## Mean :12.50 Mean :57.3
## 3rd Qu.:18.25 3rd Qu.:61.0
## Max. :24.00 Max. :71.0
## X.1 X.2 X.3 X.4 X.5
## Mode:logical Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:120 NA's:120 NA's:120 NA's:120 NA's:120
##
##
##
##
head(donnees_SPC2,10)
## date groupe pression X X.1 X.2 X.3 X.4 X.5
## 1 1dec 1 60 NA NA NA NA NA NA
## 2 1dec 1 59 NA NA NA NA NA NA
## 3 1dec 1 54 NA NA NA NA NA NA
## 4 1dec 1 57 NA NA NA NA NA NA
## 5 1dec 1 58 NA NA NA NA NA NA
## 6 2dec 2 60 NA NA NA NA NA NA
## 7 2dec 2 59 NA NA NA NA NA NA
## 8 2dec 2 56 NA NA NA NA NA NA
## 9 2dec 2 63 NA NA NA NA NA NA
## 10 2dec 2 59 NA NA NA NA NA NA
Nous prendrons en compte que les 3 premières colonnes du data frame
Structurons nos données sous la forme de 24 prélèvements (du 1/12 au 13/01) de 5 mesures
mydata<-qcc.groups(data = donnees_SPC2$pression,sample = donnees_SPC2$groupe)
mydata[1:5,]
## [,1] [,2] [,3] [,4] [,5]
## 1 60 59 54 57 58
## 2 60 59 56 63 59
## 3 61 55 56 61 58
## 4 63 60 57 59 61
## 5 57 58 54 59 61
q_Xbar<-qcc(data = mydata,type = "xbar")
5 points sont au-delà des limites de contrôles
q_R<-qcc(data = mydata,type = "R")
La dispersion semble sous contrôle
Il suffit ici d’indiquer le jeu de données sur lequel les calculs des limites seront effectués (données de calibration “data”) , puis avec “newdata”, le jeu de données que l’on introduit après :
q_Xbar<-qcc(data = mydata[1:12,],type = "xbar",newdata =mydata[13:24,] )
Cette fois nous avons 7 points hors contrôle.
Faisons de même pour la carte R :
q_R<-qcc(data = mydata[1:12,],type = "R",newdata =mydata[13:24,] )
Un point hors contrôle alors qu’en prenant les limites calculées sur les 24 points il y en avait aucun.
Il va de soi que dans le premier cas les limites sont moins restrictives que dans le second cas où une dérive se fait nettement sentir.
Un produit liquide est fabriqué en lot (« batch »). Puisque chaque lot est logiquement homogène, chaque lot est caractérisé par une seule valeur de test. Les 15 dernières observations (jours) sont dans (l’ordre : 35, 39, 38, 42, 37, 37, 39, 37, 37, 40, 39, 39, 38, 42, 36
data<-c(35, 39, 38, 42, 37, 37, 39, 37, 37, 40, 39, 39, 38, 42, 36)
Ici nous utiliserons le type “xbar.one” car une seule valeur par observation
q3<-qcc(data = data,type = "xbar.one")
Les 15 valeurs sont parfaitement entre les limites de contrôle, le processus est stable.
Est-ce que ces valeurs sont en contrôle si on les compare aux 15 premières?
Il suffit de les ajouter à la suite du premier vecteur
data<-c(data,34,44)
q3<-qcc(data = data,type = "xbar.one")
Nous restons à l’intérieur des limites de contrôle pour la moyenne, cela étant nous observons une variation plus grande, bien que nous ayons pour chaque lot une seule valeur nous allons caractériser cette variation en comparant deux valeurs successives.
construisons un vecteur indexant nos 17 relevés en 8 groupes (7 groupes de 2 et un groupe de 3)
index<-rep(1:8,each=2)
index<-c(index,8)
mydata<-qcc.groups(data = data,sample = index)
mydata
## [,1] [,2] [,3]
## 1 35 39 NA
## 2 38 42 NA
## 3 37 37 NA
## 4 39 37 NA
## 5 37 40 NA
## 6 39 39 NA
## 7 38 42 NA
## 8 36 34 44
q3_R<-qcc(data = mydata,type = "R")
Il faut effectivement s’inquieter de l’écart qui tend à s’accroitre dans les derniers relevés
Les données représentent 99 mesures de silice dans une fonderie durant 33 jours consécutifs sont téléchargeables à cette adresse https://sjaubert.github.io/SPCR/spc/SPC-4-silice.csv
donnees<-read.csv("https://sjaubert.github.io/SPCR/spc/SPC-4-silice.csv",header = T,sep = ";")
str(donnees) #vérifions nos données
## 'data.frame': 99 obs. of 10 variables:
## $ jour: int 1 1 1 2 2 2 3 3 3 4 ...
## $ X : int 144 150 180 193 210 225 235 233 228 198 ...
## $ X.1 : logi NA NA NA NA NA NA ...
## $ X.2 : logi NA NA NA NA NA NA ...
## $ X.3 : logi NA NA NA NA NA NA ...
## $ X.4 : logi NA NA NA NA NA NA ...
## $ X.5 : logi NA NA NA NA NA NA ...
## $ X.6 : logi NA NA NA NA NA NA ...
## $ X.7 : logi NA NA NA NA NA NA ...
## $ X.8 : logi NA NA NA NA NA NA ...
Restructurons dans une matrice ces données grace à la fonction qcc.groups
library(qcc)
mydata<-qcc.groups(data = donnees$X,sample = donnees$jour)
mydata[1:5,]
## [,1] [,2] [,3]
## 1 144 150 180
## 2 193 210 225
## 3 235 233 228
## 4 198 190 178
## 5 168 137 121
q4_Xbar<-qcc(data = mydata,type = "xbar")
q4_R<-qcc(data = mydata,type = "R")
La carte Xbar nous révèle que le procédé est totalement hors contrôle, la variabilité mérite aussi notre attention nous avons à partir de la 12ème observation 10 points du même côté de la ligne centrale les causes communes à elles seules ne peuvent l’expliquer…
Variation intra-groupe
Quelle source de variation est représentée par la carte Xbar? Variation inter-groupe
Quelles seraient les limites naturelles de variation de la moyenne journalière ?
En 1931, W.A.Shewhart publiait la première monographie portant sur le contrôle statistique de la qualité. Cette monographie jeta les bases scientifiques du contrôle statistique de la qualité. Les données de cet exercice proviennent de cet ouvrage intitulé “Economic Control of Quality of Manufactured Product” (table 2, page 20)
Téléchargeons ces données :
data_spc5<-read.csv(file = "https://sjaubert.github.io/SPCR/spc/SPC-5-ohm.csv",header = F,sep = ";")
str(data_spc5) #vérifions nos données
## 'data.frame': 204 obs. of 10 variables:
## $ V1 : int 1 1 1 1 2 2 2 2 3 3 ...
## $ V2 : int 5045 4350 4350 3975 4290 4430 4485 4285 3980 3925 ...
## $ V3 : logi NA NA NA NA NA NA ...
## $ V4 : logi NA NA NA NA NA NA ...
## $ V5 : logi NA NA NA NA NA NA ...
## $ V6 : logi NA NA NA NA NA NA ...
## $ V7 : logi NA NA NA NA NA NA ...
## $ V8 : logi NA NA NA NA NA NA ...
## $ V9 : logi NA NA NA NA NA NA ...
## $ V10: logi NA NA NA NA NA NA ...
La moyenne des étendues R est 666.08 Quelles sont les limites de contrôle pour l’étendue R
Est-ce que certaines étendues excèdent la limite de contrôle supérieure?
La grande moyenne (moyenne des moyennes) est 4503.25. Calculer les limites de contrôle pour les moyennes Xbar.
Comparer ces limites de la carte Xbar et de la carte R avec celles que l’on obtiendrait en avec le logiciel Statistica.
Toutes ces questions vont être résolues directement.
library(qcc)
mydata<-qcc.groups(data = data_spc5$V2,sample = data_spc5$V1)
mydata[1:5,]
## [,1] [,2] [,3] [,4]
## 1 5045 4350 4350 3975
## 2 4290 4430 4485 4285
## 3 3980 3925 3645 3760
## 4 3300 3685 3463 5200
## 5 5100 4635 5100 5460
q5_Xbar<-qcc(data = mydata,type = "xbar")
q5_R<-qcc(data = mydata,type = "R")
Nous retrouvons effectivement la moyenne \(\bar{R}\) et la moyenne \(\bar{\bar{X}}\)
D’après la carte X, nous constatons que le process n’est absolument pas sous contrôle.
La 4ème étendue et la 15ème sont hors contrôle.
(données non fournies)
une surface de 300 cm² est inspectée et on compte le nombre d’imperfection qui excèdent une aire de 0.001 cm². Les 20 premières observations sont :
0 0 2 3 2 1 0 1 1 2 1 4 3 2 0 1 4 2 0 1