SPC1

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.

SPC2

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
  1. Tracez 2 graphiques : celui de la moyenne quotidienne Xbar et celui de l’étendue R.
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

  1. L’ingénieur décide de prendre les données des 12 premiers jours pour calculer les limites de contrôle des cartes Xbar et R, placer toutes les données (24 jours) sur les cartes. Interpréter les cartes.

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.

SPC3

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

  1. Tracez une carte XmR. Interpréter la carte
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.

  1. Les 2 prochaines observations (jour 16 et jour 17) sont 34 et 44.

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

SPC4

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
  1. Tracez une carte Xbar et R. Interpréter.
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…

  1. Quelle source de variation est représentée par la carte R?

Variation intra-groupe

  1. Quelle source de variation est représentée par la carte Xbar? Variation inter-groupe

  2. Quelles seraient les limites naturelles de variation de la moyenne journalière ?

SPC5

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 ...
  1. La moyenne des étendues R est 666.08 Quelles sont les limites de contrôle pour l’étendue R

  2. Est-ce que certaines étendues excèdent la limite de contrôle supérieure?

  3. La grande moyenne (moyenne des moyennes) est 4503.25. Calculer les limites de contrôle pour les moyennes Xbar.

  4. 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.

SPC6

(données non fournies)

SPC7

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