Wie kann ich die AUC für eine Spalte als einzelnen Wert (kein Diagramm) zurückgeben?Ich kann Folgendes verwenden, um eine ROC-Kurve zu erstellen, die den AUC-Wert enthält.
Names Default To Here( 1 );
Open( "RESULTS.jmp" );
Logistic( Y( :IsDef ), X( :Interest ), Positive Level( 0 ), ROC Curve );
Dadurch wird eine grafische Kurve erzeugt. Ich habe eine Tabelle mit 80 Spalten und möchte den AUC-Wert für jede Spalte berechnen und jeden einfach als numerischen Wert zurückgeben. Ich möchte die grafische Darstellung nicht generieren. Gibt es eine Formel, die im Blatt selbst verwendet werden könnte?
Vielen Dank im Voraus für jede Hilfe!
Marc
Betreff: Wie kann ich die AUC für eine Spalte als einzelnen Wert (kein Diagramm) zurückgeben?Meine erste Frage lautet: Verstehen Sie, wie das von mir bereitgestellte Skript funktioniert?Das einfache Beispiel wurde nicht unter der Annahme bereitgestellt, dass es mit den realen Daten funktioniert.Die Schlüsselzeile ist
dtOutput:AUC = (Report( theLog )["Receiver Operating Characteristic"][Number Col Box( 1 )] << get)[1];
Ich gehe davon aus, dass sich die Art und Weise, wie JMP die Spalten anzeigt, die mit dieser Codezeile funktionieren, von denen unterscheidet, die dies nicht tun.Ich schlage vor, dass Sie sich die Unterschiede manuell ansehen, dann herausfinden, was unterschiedlich ist, und dann den Code anpassen, um beide Fälle zu behandeln.Und es kann sein, dass Sie sich mit mehr als zwei Fällen befassen müssen.
Betreff: Wie kann ich die AUC für eine Spalte als einzelnen Wert (kein Diagramm) zurückgeben?Perfekt!
Vielen Dank!
Marc
Betreff: Wie kann ich die AUC für eine Spalte als einzelnen Wert (kein Diagramm) zurückgeben?Danke! Es scheint eine ausgezeichnete Lösung zu sein, aber sie verarbeitet nur 23 von 75
Werte. Das Skript wird vollständig und erfolgreich ohne Debugging-Fehler ausgeführt.
numerische Spalten, die manuell verarbeitet werden können, können jedoch nicht verarbeitet werden.
Irgendeine Idee warum?
Hier ist das Skript, wie es ausgeführt wird:
Names Default To Here( 1 );
// Open and example data table
dt = Open( "RESULTS3.jmp" );
// Get the columns to be analyzed
colNamesList = dt << get column names( string, continuous );
// Create a data table to save the results to
dtOutput = New Table( "AUCResults", New Column( "Column", character ), New Column( "AUC" ) );
// Loop across all of the columns to be analyzed and retrieve the AUC
For( i = 1, i <= N Items( colNamesList ), i++,
// Add a new row to the output data table
dtOutput << Add Rows( 1 );
// Add the active variable name to the current row in the data table
dtOutput:Column[i] = colNamesList[i];
// Run the Logistic Regression
theLog = dt << Logistic( invisible, Y( :isDef ), X( Column( colNamesList[i] ) ), Positive Level( "0" ), ROC Curve );
// Add the AUC to the data table by grabbing it from the display report output
dtOutput:AUC = (Report( theLog )["Receiver Operating Characteristic"][Number Col Box( 1 )] << get)[1];
// Close the report window
Report( theLog ) << close window;
);
Vielen Dank für die Hilfe!
Am besten,
Marc
Betreff: Wie kann ich die AUC für eine Spalte als einzelnen Wert (kein Diagramm) zurückgeben?Hier ist ein einfaches Beispiel für das, was Sie tun möchten
Names Default To Here( 1 );
// Open and example data table
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Get the columns to be analyzed
colNamesList = dt << get column names( string, continuous );
// Create a data table to save the results to
dtOutput = New Table( "Results", New Column( "Column", character ), New Column( "AUC" ) );
// Loop across all of the columns to be analyzed and retrieve the AUC
For( i = 1, i <= N Items( colNamesList ), i++,
// Add a new row to the output data table
dtOutput << Add Rows( 1 );
// Add the active variable name to the current row in the data table
dtOutput:Column[i] = colNamesList[i];
// Run the Logistic Regression
theLog = dt << Logistic( invisible, Y( :sex ), X( Column( colNamesList[i] ) ), Positive Level( "F" ), ROC Curve );
// Add the AUC to the data table by grabbing it from the display report output
dtOutput:AUC = (Report( theLog )["Receiver Operating Characteristic"][Number Col Box( 1 )] << get)[1];
// Close the report window
Report( theLog ) << close window;
);