Was hat diese Wunschlistenanfrage inspiriert?
In meinem Unternehmen müssen wir ppk und neue Grenzwerte für Datensätze mit ca. 10.000 Zeilen x 10.000 Spalten berechnen, und dies muss halbtäglich für mehrere Datensätze durchgeführt werden. Dies kann sehr lange dauern. Ich habe versucht, Skripte zu schreiben, um dies mithilfe der Distribution- oder Process Capability-Plattformen zu automatisieren und den ppk, die beste Anpassung, die Parameter für diese Anpassung und einen neuen Satz von Grenzwerten basierend auf einem Ziel-ppk auszugeben. Einige Kollegen haben in Matlab ein Skript geschrieben, um dasselbe zu tun. Trotz aller Bemühungen, mein JMP-Skript zu optimieren, ist das Matlab-Skript immer noch etwa zehnmal schneller.
Welche Verbesserung würden Sie sich wünschen?
Ich würde mir eine JSL-Funktion wünschen, die in einem Skript ausgeführt werden kann und keine Berichtsfenster erstellt. Es hätte diese Eingaben:
- die Daten für eine Spalte als 1xn-Matrix,
- eine Liste von Verteilungen, die an die Daten angepasst werden sollen,
- die bevorzugte ppk-Methode (Score, Perzentil),
- Ziel-PPK
Und es würde Folgendes ausgeben:
- Name der Verteilung mit der besten Anpassung (minimaler AICC)
- ein Vektor oder eine Liste der Anpassungsparameter für den Verteilungstyp mit der besten Anpassung
- die PPK,
- verwendete ppk-Methode (zscore oder Perzentil),
- aicc (schön zu haben, aber nicht unbedingt erforderlich)
- neue Grenzwerte, berechnet anhand des Ziel-PPK (schön zu haben, aber nicht unbedingt erforderlich)
Schließlich sollte es in der Lage sein, diese Verteilungen anzupassen: Beta, Exponential, Gamma, Johnson, Lognormal, Normal, Normalmischung, SHASH und Weibull.
Warum ist diese Idee wichtig?
(1) Ich möchte, dass mein Team JMP verwendet, aber es ist fast unmöglich, es zu überzeugen, wenn die Ausführung meines Skripts 30 Minuten dauert, während das Matlab-Skript dasselbe tut, aber nur 1 Minute dauert. Der Grund dafür, dass mein Skript langsamer ist, liegt im hohen Aufwand beim Erstellen eines Berichtsfensters für 10.000 Spalten. Stattdessen wäre es großartig, wenn diese Berechnungen mit einer Funktion durchgeführt werden könnten, die die Berichtserstellung überspringen und nur die Ergebnisse liefern könnte, die ich benötige. Ich glaube, dass dies viel schneller und einfacher zu programmieren wäre.
(2) Wir müssen in der Lage sein, Datensätze mit mehr als 10.000 Spalten zu analysieren. Mir ist aufgefallen, dass mein Skript mitten in der Ausführung stoppt, wenn ich versuche, es mit 12.000 Spalten auszuführen. Ich habe die Grundursache noch nicht identifiziert, aber es funktioniert gut für 3600 Spalten oder weniger. Ich vermute, dass es eine Einschränkung bei der Generierung des Berichtsfensters gibt, die einen Fehler verursacht.
Andere Dinge, die ich versucht habe
1. Sowohl die Funktionen „Fit Censored()“ als auch „Fit Transform to Normal()“ ähneln der von mir angeforderten Funktion, da sie beide zum Abrufen der Anpassungsparameter verwendet werden können. Sie berechnen weder ppk noch neue Grenzwerte, aber ich kann die Anpassungsparameter verwenden, um ppk und neue Grenzwerte selbst zu berechnen. Allerdings unterstützen diese Funktionen nur eine Teilmenge der Distributionen, die ich gerne hätte.
2. Ich versuche derzeit, etwas in Python zu schreiben und es in mein bestehendes Skript zu integrieren, um die Verwendung der Plattformen Distribution und Process Capability zu ersetzen. Das wird allerdings viel Zeit in Anspruch nehmen.
Leider sind die Skripte zur Reproduktion meines Problems ziemlich lang. Ich werde auf Anfrage Auskunft geben, aber hoffentlich ist meine obige Erklärung des Problems ausreichend.
Meine Besonderheiten:
JMP Pro 17.2.0
MacOS Ventura 13.6.1