Wir arbeiten an einem Anwendungsfall, bei dem der Kunde Daten zu Leistungsschwankungen (Durchschnitt und Maximum) eines Produkts hat. Zuvor segmentierte er das Diagramm manuell in verschiedene Lastzustände, basierend auf Änderungen des Leistungswerts. Nun möchte er diesen Segmentierungsprozess mit JMP automatisieren.
Ich habe die Daten zusammen mit einem Screenshot des erwarteten (manuell ermittelten) Ergebnisses angehängt. Jeder identifizierte Zustand wird durch einen Start- und einen Endpunkt definiert, die in der Spalte „Start-/Endpunkt“ aufgeführt sind. Für jeden Zustand wird ein Puffer von ±5 Zeilen um die tatsächlichen Start- und Endpunkte angewendet.
Einige wichtige Klarstellungen nach dem Gespräch mit dem Kunden:
1. Die Variation ist nicht zeitbasiert
2. Die Anzahl der Zustände ist nicht festgelegt. Es werden nicht immer 11 sein, wie im Screenshot gezeigt
3. Die Zustände 7 und 8 wurden in ihrem manuellen Ergebnis anhand der 2. Y-Achsen-Variable unterschieden
Ich habe mit hierarchischem Clustering und K-Means-Clustering experimentiert. Die Ergebnisse kamen dem manuellen Ergebnis nahe, waren aber nicht exakt identisch. Gibt es Vorschläge zur besseren Automatisierung dieses Segmentierungsprozesses in JMP?
Mein erster Gedanke wäre, die Nullen zu entfernen, die Daten dann zu glätten und nach Spitzen in der Ableitung als Markierungen der verschiedenen Segmente zu suchen. Ich denke, das ist machbar, aber ein bisschen zu viel Aufwand. Clustering klingt nach einer „schöneren“ Lösung, obwohl ich damit nicht viel Erfahrung habe.
Mithilfe der hierarchischen Clusterbildung konnte ich einige Fortschritte erzielen, indem ich die Methode auf „Einzeln“, das Datenformat auf „Daten sind gestapelt“ und „Nicht standardisiert“ eingestellt habe. Wenn ich das richtig verstehe, werden dadurch Cluster gebildet, indem „benachbarte“ Punkte betrachtet werden, die sowohl zeitlich als auch in Bezug auf die Leistung nahe beieinander liegen, indem sie als Punkte in einem zweidimensionalen Raum betrachtet werden, wobei Zeit als X und Leistung als Y gilt. Vielleicht kann jemand anderes das hier übernehmen?
Hierarchical Cluster(
Y( :"Time(s)"n, :"Power AVG (W)"n ),
Method( "Single" ),
Standardize Data( 0, "(for backward compatibility)" ),
Standardize By( "Unstandardized" ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 20 ),
SendToReport(
Dispatch( {"Dendrogram"}, "Clust Dendro", FrameBox,
{Frame Size( 47, 700 )}
)
)
);
Bei näherer Betrachtung halte ich die Verwendung von „Daten sind gestapelt“ für falsch. Aber die Verwendung von „Einzeln“ + „Nicht standardisiert“ liefert bei mir immer noch gute Ergebnisse.