- Présentation de la mise en œuvre de la maîtrise statistique des procédés (SPC) en Python pour identifier les variations dans le temps et les moments d’intervention sur la qualité produit
- Utilisation de
pandas, plotnine et scipy pour le traitement des données, la visualisation et les calculs statistiques
- Analyse des températures, du pH et de la teneur en soufre comme indicateurs de qualité, à partir de données sur des sources thermales de la préfecture de Kagoshima au Japon
- Utilisation des statistiques de sous-groupes et des cartes de contrôle (X-bar, S, étendue mobile) pour évaluer la stabilité du procédé et détecter les valeurs aberrantes
- Présentation d’une démarche permettant de diagnostiquer visuellement l’état d’un procédé et d’appuyer les décisions d’amélioration à partir des données
Vue d’ensemble de la maîtrise statistique des procédés avec Python
- La maîtrise statistique des procédés (SPC) est une approche statistique visant à mesurer la variation de la qualité produit et déterminer quand intervenir
- En Python,
plotnine sert à la visualisation, pandas à la manipulation des données et scipy aux calculs statistiques
- Dans la mise en pratique, les concepts de la SPC sont appliqués à un cas de gestion de la qualité d’eaux thermales
- La température, le pH et la teneur en soufre des sources sont définis comme principaux indicateurs de qualité
Packages et fonctions définies par l’utilisateur
- Packages requis :
pandas, plotnine, scipy
- Les fonctions définies par l’utilisateur sont importées depuis le répertoire
functions/ du dépôt GitHub
functions_distributions.py : fonctions de fiabilité et de distribution
functions_process_control.py : fonctions de maîtrise des procédés
- Le répertoire de fonctions est ajouté au chemin Python avec
sys.path.append('functions'), puis importé
Cas d’usage : gestion de la qualité des sources thermales japonaises
- Les sources thermales japonaises (onsen) sont une ressource touristique clé pour l’économie locale, et la température, le pH et la teneur en soufre constituent des critères de qualité
- Critère de température : Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
- Critère de pH : Acidic(pH<3) ~ Alkaline(pH>8.5)
- Critère de soufre : classé comme source sulfurée à partir de 1 mg/kg
- Les données de sources thermales de la préfecture de Kagoshima sont échantillonnées 20 fois par mois sur 15 mois afin d’analyser les variations de qualité
Chargement des données et statistiques de base
- Chargement du fichier
onsen.csv pour examiner les données de température, pH et teneur en soufre
- Calcul de la moyenne (
mean) et de l’écart-type (sd) avec la fonction describe()
- Exemple de résultat : moyenne 44.85°C, écart-type 1.99°C
- Ces statistiques constituent des indicateurs de base pour comprendre le centre et la variabilité du procédé
Visualisation générale du procédé
- Avec
plotnine, la distribution des températures dans le temps est visualisée sous forme de boîte à moustaches (boxplot) et de nuage de points
- La ligne centrale correspond à la moyenne globale, ce qui permet de comparer la distribution à chaque instant
- Un histogramme de la distribution globale des températures permet de vérifier le centre du procédé et l’ampleur de sa variabilité
Calcul des statistiques de sous-groupes
- Chaque instant (
time) est regroupé en sous-groupe pour calculer la moyenne (xbar), l’étendue (r) et l’écart-type (sd)
- Exemple : moyenne du premier groupe 44.635°C, étendue 4.2°C
- σₛ (écart-type intra-sous-groupe) et l’erreur standard (
se) sont calculés afin de fixer les limites supérieure et inférieure (±3σ)
- Cela permet d’évaluer la stabilité temporelle du procédé
Statistiques globales du procédé
- L’ensemble des groupes est agrégé pour calculer la moyenne globale (
xbbar), l’étendue moyenne (rbar) et l’écart-type moyen (sdbar)
- Exemple :
xbbar 44.85, rbar 7.26, sdbar 1.94
- La comparaison avec σₜ (écart-type global) permet d’identifier la variabilité à l’intérieur et entre les groupes
Cartes de contrôle (X-bar et S)
- Carte X-bar : la moyenne de chaque sous-groupe est représentée sur l’axe du temps
- Ligne centrale : moyenne globale ; limites supérieure et inférieure : ±3σ
- La zone ombrée représente l’intervalle des limites de contrôle
- Si les limites de contrôle sont dépassées ou qu’un motif non aléatoire apparaît, cela peut indiquer une anomalie du procédé
Vérification des acquis : visualisation du procédé pour le pH
- La même fonction
ggprocess() est utilisée pour générer un graphique de vue d’ensemble du procédé pour les données de pH
- Comparaison visuelle entre la ligne de moyenne et les distributions à chaque instant
Carte d’étendue mobile (n=1)
- Lorsqu’on ne dispose que de mesures individuelles, on utilise l’étendue mobile (Moving Range)
- La variabilité est estimée en calculant la différence absolue entre mesures consécutives
- Calcul de l’étendue mobile moyenne (
mrbar), de la limite supérieure (upper) et de la limite inférieure (lower=0)
- La carte d’étendue mobile est utile pour surveiller la variation d’un procédé à partir de données individuelles
Conclusion
- Python permet de générer une vue d’ensemble du procédé, des statistiques de sous-groupes et une carte d’étendue mobile
- Les outils de SPC permettent de diagnostiquer visuellement la stabilité d’un procédé et la présence éventuelle d’anomalies
- Ce type d’analyse peut être utilisé pour l’amélioration de la qualité et la prise de décision fondées sur les données
1 commentaires
Avis Hacker News
Cela m’a rappelé un ancien projet
Dans une entreprise de type FANG, nous avons remplacé avec succès des milliers de détecteurs d’anomalies de séries temporelles basés sur le deep learning complexes par des modèles de contrôle statistique des procédés (non paramétriques, semi-paramétriques)
Les nouveaux modèles avaient 3 à 4 ordres de grandeur de moins en nombre de paramètres d’apprentissage, et étaient assez simples pour qu’une équipe de 3 à 4 personnes puisse gérer des milliers de flux
Les modèles de deep learning étaient opaques à déboguer et à interpréter, donc bien trop difficiles à maintenir
Pour une petite équipe, je recommande toujours fortement une approche fondée sur les statistiques
Cela dit, pour des raisons politiques, ce genre de choix n’est pas forcément bon pour la carrière. Les personnes qui ont fait d’énormes paris n’aiment pas voir apparaître des preuves contraires
C’est pour ce genre de raison que je suis sceptique face à l’emballement actuel autour de l’IA
Dans bien des cas, les méthodes classiques existantes sont bien plus stables et efficaces, et je ne comprends pas pourquoi les entreprises choisissent délibérément des approches complexes et instables
L’entreprise mettait en avant de jolis modèles de ML pour les conférences, mais les opérateurs réels se plaignaient beaucoup du manque de précision et d’interprétabilité
J’ai donc réécrit le code à partir des règles mathématiques simples que les opérateurs utilisaient réellement, et j’ai obtenu de bien meilleurs résultats
C’est bien adapté à l’OCR, mais moins efficace pour les tâches de classification
En se concentrant sur un bon éclairage et des techniques traditionnelles de vision par ordinateur, on obtient souvent de meilleurs résultats
Je comprends aussi les problèmes politiques liés à l’adoption de ces technologies. C’est pourquoi je propose surtout une approche hybride combinant deep learning et vision traditionnelle
La plupart des paramètres semblent instables ou corrélés entre eux
J’avais autrefois obtenu la certification Lean Six Sigma Green Belt, et j’avais mené avec Minitab un projet de contrôle statistique des procédés pour des processus de back-office d’une banque d’investissement
On dirait qu’aujourd’hui plus personne ne se souvient de Minitab. Tout le monde n’utilise plus que Python
Le logiciel est toujours mis à jour, et il existe aussi une interface Python → package mtbpy
Les outils open source ne prenaient en charge que x-bar/S/R, et manquaient de fonctionnalités avancées comme l’analyse multivariée
J’ai écrit il y a quelques années un guide pratique pour les débutants en SPC
Cela peut être utile → Statistical Process Control: A Practitioner’s Guide
Pour les petits jeux de données, comme les données cliniques, les statistiques classiques restent essentielles
La collecte et l’alignement des métadonnées sont difficiles, et dans les recherches sur les maladies rares, il est souvent difficile d’appliquer même le machine learning ou la régression
Les données du monde réel ne sont jamais propres
La plupart du temps est consacrée à la gestion de la qualité des données
Les valeurs aberrantes peuvent venir d’erreurs de mesure ou de changements dans le procédé, et pour les comprendre il faut une intuition du procédé lui-même
C’est pourquoi des outils matures, permettant une visualisation et une exploration rapides, sont importants
Construire soi-même en code des graphiques SPC et Cpk est inefficace
Le SPC est vraiment un excellent outil
C’est bien plus simple et cela fonctionne bien mieux que beaucoup d’autres ensembles d’outils complexes
Il y a beaucoup de fautes de frappe
J’aime vraiment le design et l’ambiance de la page