So finden Sie jeden Test, um eine Einheit zu screenenIch bin ziemlich neu bei JMP und JSL und arbeite derzeit daran, eine Einheit in einem sehr großen Datensatz auszusortieren. Mein Ziel ist es, eine Ausgabetabelle zu erhalten, die einen Namen jedes Tests enthält, in dem die Einheit (definiert durch ihre ECID) einen Z-Score größer als 3 (oder einen anderen Wert, den ich wählen kann) hat. Diese Z-Scores müssen auf den jeweiligen Verteilungen der bestandenen Einheiten jedes Tests basieren. Gibt es dafür eine JMP-Funktionalität oder ein Skript, das erstellt wurde, um etwas in dieser Richtung zu tun? Unten ist mein sehr lockerer Pseudocode für ein Skript.
Pseudocode:
Erfordert einen ausreichend großen Datensatz, um eine Normalverteilung für verschiedene Tests zu haben (mindestens 30 gute Einheiten)
Teilmenge der Basisdatentabelle nur in Bin-1-Einheiten
Berechnen Sie den Mittelwert und die Standardabweichung für jeden Test, indem Sie nur bestandene Einheiten verwenden
Berechnen Sie den Z-Score in Bezug auf den Mittelwert und die Standardabweichung jedes Tests
Erstellen Sie eine Ausgabetabelle mit allen Tests und Ergebnissen, die über 3 liegen
AnalytikDatentabelleSkripterstellungWindowsBetreff: So finden Sie jeden Test, um eine Einheit zu screenenHier ist ein Beispielskript, das die Z-Scores erstellt und die Werte identifiziert, die größer als 3 sind. Geht das in die gewünschte Richtung?
Names Default To Here( 1 );
// Open Data Table: Probe.jmp
// → Data Table( "Probe" )
dt = Open( "$SAMPLE_DATA/Process Measurements.jmp" );
// Create a Bin column
dt << New Column( "Bin",
modeling type( nominal ),
set each value( If( Random Uniform( 0, 1 ) <= .8, 1, Random Integer( 2, 7 ) ) )
);
// Get column names for all continuous columns
colNames = dt << get column names( string, continuous );
For( i = 1, i <= N Items( colNames ), i++,
mean = .;
stddev = .;
// Create the Z scores for each test
dt << New Column( colNames[i] || " Z Score",
formula(
If( Row() == 1,
Mean = Col Mean( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
Stddev = Col Std Dev( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
);
Abs( :Process 1 - Mean ) / Stddev;
)
);
Column( dt, N Cols( dt ) ) << delete formula;
targetRows = dt << get rows where( As Column( dt, N Cols( dt ) ) >= 3 );
Try( As Column( dt, N Cols( dt ) ) << color cells( "red", As List( targetRows ) ) );
);Betreff: So finden Sie jeden Test, um eine Einheit zu screenenDies ist ein sehr guter Ausgangspunkt. Danke für Ihre Hilfe. Ich möchte dieses Skript übernehmen, damit ich es nur auf Einheiten mit einer bestimmten ECID innerhalb eines großen Datensatzes ausführen kann. Wenn ich dieses Skript auf jedem Datenpunkt/Die ausführen würde, würde ich leider JMP zum Absturz bringen. Wie würden Sie empfehlen, dieses Skript zu übernehmen, um dies zu ermöglichen?
Betreff: So finden Sie jeden Test, um eine Einheit zu screenenIch würde einfach eine Teilmenge der ursprünglichen Datentabelle erstellen und die Analyse darauf ausführen.
dt = current data table();
ECIDsToTest = { "413257", "56739",...........};
dt << select where( contains( ECIDsToTest, :ECID ) );
dtToTest = dt << subset( selected columns( 0 ), selected rows( 1 ) );
// Run the Z Score analysis on the new subsetBetreff: So finden Sie jeden Test, um eine Einheit zu screenenHallo Jim,
Ich war mit meinem vorherigen Problem nicht klar. Ich möchte für jeden Test einen Z-Score für einzelne Einheiten finden, der auf der Verteilung des gesamten Datensatzes basiert. Aus diesem Grund kann ich die ECIDs nicht einfach unterteilen. Zweitens bin ich mir nicht sicher, ob das ursprüngliche Skript korrekt funktioniert. Bei weiterer Überprüfung habe ich festgestellt, dass viele der Z-Scores unwahrscheinlich sind. Es gibt einige Z-Scores, die sich dem dreistelligen Bereich nähern.

Betreff: So finden Sie jeden Test, um eine Einheit zu screenenBitte stellen Sie eine Beispiel-Eingabedatentabelle und ein Beispiel dafür bereit, was Sie für Ihre Ausgabe erwarten.