Comment renvoyer l'AUC d'une colonne sous la forme d'une valeur unique (et non d'un graphique) ?Je peux utiliser ce qui suit pour générer une courbe ROC qui contient la valeur AUC.
Names Default To Here( 1 );
Open( "RESULTS.jmp" );
Logistic( Y( :IsDef ), X( :Interest ), Positive Level( 0 ), ROC Curve );
Cela génère une courbe graphique. J'ai une table avec 80 colonnes et je veux calculer la valeur AUC pour chaque colonne et simplement renvoyer chacune sous forme de valeur numérique. Je ne veux pas générer la représentation graphique. Existe-t-il une formule qui pourrait être utilisée dans la feuille elle-même ?
Un grand merci d'avance pour toute aide !
Marc
Re : Comment renvoyer l'AUC d'une colonne sous la forme d'une valeur unique (et non d'un graphique) ?Ma première question est la suivante : comprenez-vous le fonctionnement du script que j'ai fourni ?L'exemple simple n'a pas été fourni sous l'hypothèse qu'il fonctionne avec les données réelles.La ligne clé est
dtOutput:AUC = (Report( theLog )["Receiver Operating Characteristic"][Number Col Box( 1 )] << get)[1];
Je suppose qu'il y a quelque chose de différent dans la façon dont JMP affiche les colonnes qui fonctionnent avec cette ligne de code par rapport à celles qui ne le font pas.Je vous suggère de regarder manuellement les différences, puis de déterminer ce qui est différent, puis d'adapter le code pour gérer les deux cas.Et il se peut que vous ayez à traiter plus de deux cas.
Re : Comment renvoyer l'AUC d'une colonne sous la forme d'une valeur unique (et non d'un graphique) ?Parfait!
Merci beaucoup!
Marc
Re : Comment renvoyer l'AUC d'une colonne sous la forme d'une valeur unique (et non d'un graphique) ?Merci! Cela semble une excellente solution, mais il ne traite que 23 sur 75
valeurs. Le script s'exécute pleinement et avec succès sans erreur de débogage,
mais ne parvient pas à traiter les colonnes numériques qui peuvent être traitées manuellement.
Une idée pourquoi?
Voici le script en cours d'exécution :
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;
);
Merci beaucoup pour le coup de main!
Meilleur,
Marc
Re : Comment renvoyer l'AUC d'une colonne sous la forme d'une valeur unique (et non d'un graphique) ?Voici un exemple simple pour faire ce que vous essayez de faire
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;
);