spc

irChart

##set_spc

Description

L'action `spc.irChart` est votre meilleur atout pour surveiller l'évolution et la variabilité d'un processus au fil du temps. Elle génère des cartes de contrôle de mesures individuellesOutil statistique pour suivre la stabilité d'un procédé via des mesures unitaires chronologiques. Il détecte les causes spéciales grâce aux limites de contrôle (Moyenne, Étendue Mobile). (Individual) et d'étendues mobiles (Moving Range), très prisées pour détecter des anomalies avant que la machine à café (ou la ligne de production) ne s'emballe ! Vous pouvez l'utiliser pour analyser la capacité du processus avec et appliquer de multiples tests de causes spéciales avec .

Syntaxe Officielle
proc cas;
spc.irChart /
table={name="nom_table_entree"}
processValue="variable_mesure"
subgroupValue="variable_temps"
sMethod="MVGRANGE"
sigmas=3
primaryTests={test1=true, test2=true}
outLimitsTable={name="limites_controle_out", replace=true}
chartsTable={name="donnees_graphique_out", replace=true};
run;
quit;

Paramètres Clés

Nom du paramètre Description
chartsTable Spécifie la table de données CAS de sortie contenant le résumé des cartes de contrôle .
ciAlpha Définit le niveau de confiance utilisé pour calculer les limites de confiance des indices de capacité (valeur par défaut : 0.05) .
ciIndices Si défini sur true, calcule les limites de confiance des indices de capacité à partir des données résumées du sous-groupe .
ciType Spécifie le type de limites de confiance pour les indices de capacité : LOWER (inférieure), TWOSIDED (bilatérale, par défaut) ou UPPER (supérieure) .
display Spécifie une liste de tables de résultats à renvoyer au client pour l'affichage (pratique pour masquer le bruit) .
exChart Si vrai, produit une carte de contrôle dans les résultats uniquement si des exceptions (points hors contrôle) se produisent. Parfait pour la gestion par exception .
groupByLimit Supprime l'analyse si le nombre de groupes générés par 'groupBy' dépasse cette limite .
limitsTable Table CAS contenant des limites de contrôle précalculées à appliquer à votre analyse actuelle .
nMvgRange Nombre de sous-groupes consécutifs (entre 2 et 25) utilisés pour calculer l'étendue mobile (par défaut 2) .
no3SigmaCheck Active l'évaluation des tests pour les causes spéciales même si vos limites de contrôle ne sont pas strictement à 3 sigma .
outLimitsTable Spécifie la table de sortie où seront sauvegardées les limites de contrôle calculées (pour les réutiliser plus tard) .
outputTables Liste des noms des tables de résultats (statistiques, graphiques) à enregistrer physiquement sur le serveur CAS .
primaryTests Active un ou plusieurs tests (règles de Western Electric / Nelson) pour identifier des causes spéciales (ex: test1=true, test2=true) .
processName Nom de la variable contenant l'identifiant du processus à analyser .
processValue Nom de la variable numérique contenant les mesures de votre processus .
sigmas Largeur des limites de contrôle exprimée en multiples de l'erreur type (défaut : 3) .
sMethod Méthode d'estimation de l'écart-type du processus : MAD, MMR, ou MVGRANGE (défaut) .
specsTable Table contenant les limites de spécification client, permet de calculer des indices de capacité (Cp, Cpk) en plus de la stabilité .
subgroupName Variable contenant le nom du sous-groupe (utile si vos données sont empilées) .
subgroupValue Variable d'axe X ou de sous-groupe (souvent une date ou un identifiant de lot) .
table Paramètre obligatoire spécifiant la table d'entrée CAS (caslib, nom, options de filtrage) .
test2Run / test3Run Personnalise la longueur du motif recherché pour le Test 2 (défaut 9) ou le Test 3 (défaut 6) .
testNStd Si vrai, exécute les tests de causes spéciales même avec des tailles de sous-groupes inégales .
testOverlap Si vrai, autorise la recherche de motifs qui se chevauchent pour les tests de causes spéciales .

Préparation des données

Création de données de test : Usine de Baguettes Magiques

Ce script crée une table simulant la mesure de longueur de 30 baguettes magiques fabriquées consécutivement. Nous ajoutons volontairement une dérive (longueur excessive) à la 20ème baguette pour faire réagir la carte de contrôle.

1DATA work.mesures_baguettes;
2 DO lot = 1 to 30;
3 /* Production normale autour de 30 cm */
4 longueur = 30 + normal(123) * 0.4;
5 /* Oups, un défaut de fabrication sur le lot 20 ! */
6 IF lot = 20 THEN longueur = 33;
7 OUTPUT;
8 END;
9RUN;
10PROC CASUTIL;
11 load DATA=work.mesures_baguettes casout="baguettes" outcaslib="casuser" replace;
12QUIT;

Exemples d'utilisation

Carte de contrôle IR standard

On exécute l'action basique pour calculer les limites à 3 sigmas. Les données pour visualiser le graphique sont sauvegardées dans une table.

1PROC CAS;
2 spc.irChart /
3 TABLE={name="baguettes", caslib="casuser"}
4 processValue="longueur"
5 subgroupValue="lot"
6 chartsTable={name="ir_charts_out", caslib="casuser", replace=true};
7RUN;
8QUIT;
Résultat Attendu :
L'action génère la table 'ir_charts_out' contenant les moyennes, limites de contrôle et l'étendue mobile. Le 20ème lot sera mis en évidence (flag) comme dépassant la limite supérieure (LCS) de la carte.
Surveillance rigoureuse avec tests d'anomalies (Nelson Rules)

Un vrai détective ne s'arrête pas aux simples dépassements de limites. Ici, on active plusieurs tests pour détecter des motifs statistiques suspects (tendances, successions du même côté de la moyenne), et on exporte les limites pour un audit futur.

1PROC CAS;
2 spc.irChart /
3 TABLE={name="baguettes", caslib="casuser"}
4 processValue="longueur"
5 subgroupValue="lot"
6 sMethod="MVGRANGE"
7 nMvgRange=2
8 sigmas=3
9 primaryTests={test1=true, test2=true, test3=true}
10 test2Run=9
11 outLimitsTable={name="baguettes_limites", caslib="casuser", replace=true}
12 chartsTable={name="baguettes_graphiques", caslib="casuser", replace=true};
13RUN;
14QUIT;
Résultat Attendu :
Le système analyse la stabilité en utilisant une étendue mobile de taille 2. Il repère non seulement le point hors limites (Test 1 sur le lot 20) mais analyse aussi si 9 points consécutifs (test2Run=9) sont du même côté de la moyenne (Test 2). Les limites exactes sont consignées dans 'baguettes_limites'.