- Einführung, wie sich statistische Prozesskontrolle (SPC) in Python umsetzen lässt, um zeitliche Schwankungen der Produktqualität und Eingriffszeitpunkte zu erkennen
- Nutzung von
pandas, plotnine und scipy für Datenverarbeitung, Visualisierung und statistische Berechnungen
- Anhand von Onsen-Daten aus der japanischen Präfektur Kagoshima werden Temperatur, pH-Wert und Schwefelgehalt als Qualitätskennzahlen analysiert
- Subgruppenstatistiken und Regelkarten (X-bar-, S- und Moving-Range-Diagramme) zur Bewertung der Prozessstabilität und zur Erkennung von Ausreißern
- Darstellung eines datenbasierten Verfahrens, um den Prozesszustand visuell zu diagnostizieren und Verbesserungsentscheidungen zu unterstützen
Überblick über statistische Prozesskontrolle mit Python
- Statistische Prozesskontrolle (SPC) ist ein statistischer Ansatz, um Schwankungen der Produktqualität zu messen und den Zeitpunkt für Eingriffe zu bestimmen
- In Python werden mit
plotnine Visualisierungen erstellt, mit pandas Daten manipuliert und mit scipy statistische Berechnungen durchgeführt
- In der Praxisübung werden SPC-Konzepte anhand eines Beispiels zur Qualitätskontrolle von Onsen-Wasser angewendet
- Temperatur, pH-Wert und Schwefelgehalt der Quelle werden als zentrale Qualitätsindikatoren festgelegt
Pakete und benutzerdefinierte Funktionen
- Benötigte Pakete:
pandas, plotnine, scipy
- Benutzerdefinierte Funktionen werden aus dem Verzeichnis
functions/ des GitHub-Repositoriums geladen
functions_distributions.py: Vertrauens- und Verteilungsfunktionen
functions_process_control.py: Funktionen für die Prozesskontrolle
- Mit
sys.path.append('functions') wird das Funktionsverzeichnis dem Python-Pfad hinzugefügt und anschließend import verwendet
Fallbeispiel: Qualitätskontrolle japanischer Onsen
- Japanische Onsen sind eine zentrale Tourismusressource der regionalen Wirtschaft; Temperatur, pH-Wert und Schwefelgehalt dienen als Qualitätsstandards
- Temperaturkriterien: Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
- pH-Kriterien: Acidic(pH<3) bis Alkaline(pH>8.5)
- Schwefelkriterium: Ab 1mg/kg wird die Quelle als Schwefel-Onsen klassifiziert
- Zur Analyse der Qualitätsschwankungen wurden Onsen-Daten aus der Präfektur Kagoshima über 15 Monate hinweg monatlich 20-mal beprobt
Laden der Daten und deskriptive Statistik
- Die Datei
onsen.csv wird geladen und die Daten zu Temperatur, pH-Wert und Schwefelgehalt überprüft
- Mit der Funktion
describe() werden Mittelwert(mean) und Standardabweichung(sd) berechnet
- Beispielergebnis: Mittelwert 44.85°C, Standardabweichung 1.99°C
- Diese Kennzahlen sind grundlegende Indikatoren, um Lage und Streuung des Prozesses zu erfassen
Visualisierung des Prozessüberblicks
- Mit
plotnine wird die zeitliche Temperaturverteilung als Boxplot und Punktverteilung visualisiert
- Die Mittellinie zeigt den Gesamtmittelwert; Verteilungen je Zeitpunkt lassen sich miteinander vergleichen
- Ein Histogramm der gesamten Temperaturverteilung zeigt Prozesszentrum und Schwankungsbreite
Berechnung von Subgruppenstatistiken
- Die einzelnen Zeitpunkte (
time) werden zu Subgruppen zusammengefasst, um Mittelwert (xbar), Spannweite (r) und Standardabweichung (sd) zu berechnen
- Beispiel: Mittelwert der ersten Gruppe 44.635°C, Spannweite 4.2°C
- Zur Festlegung der oberen und unteren Grenzen (±3σ) werden σₛ (Standardabweichung innerhalb der Subgruppe) und der Standardfehler (se) berechnet
- Dadurch lässt sich die zeitliche Stabilität des Prozesses bewerten
Gesamtstatistiken des Prozesses
- Durch Zusammenführung aller Gruppen werden Gesamtmittelwert (xbbar), mittlere Spannweite (rbar) und mittlere Standardabweichung (sdbar) berechnet
- Beispiel: xbbar 44.85, rbar 7.26, sdbar 1.94
- Im Vergleich mit σₜ (Gesamtstandardabweichung) lassen sich Schwankungen innerhalb und zwischen den Prozessen erkennen
Regelkarten (X-bar- und S-Diagramm)
- X-bar-Diagramm: Die Mittelwerte jeder Subgruppe werden auf einer Zeitachse dargestellt
- Mittellinie: Gesamtmittelwert, obere und untere Grenze: ±3σ
- Der schattierte Bereich zeigt den Bereich der Eingriffsgrenzen
- Wenn Werte die Eingriffsgrenzen überschreiten oder nichtzufällige Muster auftreten, besteht die Möglichkeit einer Prozessanomalie
Lernkontrolle: Visualisierung des pH-Prozesses
- Mit derselben Funktion
ggprocess() wird ein Prozessüberblicksdiagramm für die pH-Daten erzeugt
- Mittellinie und Verteilungen je Zeitpunkt lassen sich visuell vergleichen
Moving-Range-Diagramm (n=1)
- Liegen nur einzelne Messwerte vor, wird der Moving Range verwendet
- Dabei wird die absolute Differenz zwischen aufeinanderfolgenden Messwerten berechnet, um die Variabilität zu schätzen
- Mittlere gleitende Spannweite (mrbar), Obergrenze (upper) und Untergrenze (lower=0) werden berechnet
- Das Moving-Range-Diagramm ist nützlich zur Überwachung von Prozessschwankungen auf Basis einzelner Datenpunkte
Fazit
- Mit Python lassen sich Prozessüberblick, Subgruppenstatistiken und Moving-Range-Diagramme erstellen
- Mit SPC-Werkzeugen kann die Stabilität eines Prozesses und das Vorliegen von Anomalien visuell diagnostiziert werden
- Solche Analysen lassen sich für datenbasierte Qualitätsverbesserung und Entscheidungsfindung nutzen
1 Kommentare
Hacker-News-Kommentare
Das erinnert mich an ein früheres Projekt
Wir haben bei einem FANG-Unternehmen erfolgreich Tausende komplexe Deep-Learning-basierte Zeitreihen-Anomalieerkenner durch statistische Prozesskontrollmodelle (nichtparametrisch, semiparametrisch) ersetzt
Die neuen Modelle hatten 3 bis 4 Größenordnungen weniger Trainingsparameter und waren so einfach, dass ein Team von 3 bis 4 Personen Tausende von Streams verwalten konnte
Die Deep-Learning-Modelle waren beim Debugging und in der Interpretation intransparent, sodass sie viel zu schwer zu betreiben waren
Für kleine Teams würde ich weiterhin einen statistikbasierten Ansatz nachdrücklich empfehlen
Aus politischen Gründen ist so eine Entscheidung karrieretechnisch aber vielleicht nicht die beste Wahl. Leute, die große Wetten eingegangen sind, mögen es nicht, wenn Gegenbeweise auftauchen
Genau deshalb bin ich gegenüber der heutigen AI-Hype-Stimmung skeptisch
In vielen Fällen sind bestehende klassische Methoden viel stabiler und effizienter, deshalb verstehe ich nicht, warum Unternehmen unbedingt komplexe und instabile Verfahren wählen
Das Unternehmen prahlte mit schicken ML-Modellen für Konferenzen, aber die Leute im operativen Betrieb waren wegen mangelnder Genauigkeit und Interpretierbarkeit sehr unzufrieden
Also habe ich den Code auf Basis einfacher mathematischer Regeln neu geschrieben, die die Betreiber tatsächlich nutzten, und deutlich bessere Ergebnisse erzielt
Für OCR passt es gut, aber bei Klassifikationsaufgaben ist es weniger effektiv
Wenn man sich auf gute Beleuchtung und traditionelle Computer-Vision-Techniken konzentriert, bekommt man oft bessere Ergebnisse
Die politischen Probleme bei der Einführung neuer Technik kann ich auch nachvollziehen. Deshalb schlage ich meist einen hybriden Ansatz vor, der Deep Learning und klassische Vision kombiniert
Die meisten Parameter dürften instabil sein oder miteinander korrelieren
Ich habe früher ein Lean Six Sigma Green Belt gemacht und mit Minitab ein statistisches Prozesskontrollprojekt für Backoffice-Prozesse einer Investmentbank durchgeführt
Heute scheint sich niemand mehr an Minitab zu erinnern. Alle verwenden nur noch Python
Es wird immer noch aktualisiert und hat auch ein Python-Interface → mtbpy package
Open-Source-Tools unterstützten nur x-bar/S/R, und bei fortgeschrittenen Funktionen wie multivariater Analyse fehlte es ihnen
Ich habe vor ein paar Jahren einen Praxisleitfaden für SPC geschrieben
Könnte hilfreich sein → Statistical Process Control: A Practitioner’s Guide
Bei kleinen Datensätzen wie klinischen Daten ist klassische Statistik nach wie vor zentral
Das Sammeln und Abgleichen von Metadaten ist schwierig, und bei der Erforschung seltener Krankheiten sind selbst Machine Learning oder Regression oft schwer einsetzbar
Daten aus der realen Welt sind nie sauber
Die meiste Zeit geht für Datenqualitätsmanagement drauf
Ausreißer können auf Messfehler oder Prozessänderungen zurückgehen, und um das zu verstehen, braucht man Intuition für den Prozess selbst
Deshalb sind ausgereifte Werkzeuge wichtig, mit denen sich schnell visualisieren und explorieren lässt
SPC-Cpk-Diagramme direkt per Code zu erstellen, ist ineffizient
SPC ist wirklich ein großartiges Werkzeug
Es ist viel einfacher und funktioniert viel besser als viele andere komplexe Toolsets
Es gibt viele Tippfehler
Mir gefallen das Design und die Atmosphäre der Seite sehr