CIAO @eliyahu100 ,
(TLDR: i test di bootstrap e randomizzazione possono essere utilizzati, in modi diversi, per ottenere un valore p empirico per AUCroc, e attraverso questi possiamo vedere perché il valore p per AUCroc finisce per essere l'intero test del modello).
La mia prima impressione è che qualsiasi valore p che si possa ottenere da un test dell'AUCroc sia concettualmente equivalente all'intero test del modello del classificatore (che si tratti di regressione logistica o altro). Cioè, verificare se ci sono prove che AUCroc è diverso da quello che ci si aspetterebbe sotto l'ipotesi nulla (classificazione casuale) sembra equivalere a se un modello spiega più errore (cioè classifica) di quanto ci si aspetterebbe dal solo caso. Detto questo, sono stato in grado di trovare vari metodi che descrivono come si potrebbe calcolare un valore p AUCroc (ad es Hajian-Tilaki, 2013 ) e possiamo tranquillamente affermare che JMP non esegue questi calcoli per impostazione predefinita (sebbene tutto sia possibile tramite script, ovviamente). Guardare attraverso queste formule mi ha fatto riflettere, tuttavia, sulle prestazioni di questi test di ipotesi e sulle ipotesi che fanno. Se hai accesso a JMP Pro, c'è qualcosa che puoi fare in questo momento che probabilmente supererà le grandi formule di approssimazione del campione/normale utilizzate per ottenere i valori p per AUCroc, e questo è il bootstrap e/o il test di simulazione/randomizzazione. Ecco come lo faremmo:
1. Montare un modello di classificatore. Userò Big Class e predirò il sesso in base all'altezza. Rivela l'AUCroc dal triangolo rosso.
Open("$SAMPLE_DATA\Big Class.jmp");
Logistic(Y( :sex ),X( :height ), Positive Level( "M" ),
Logistic Plot( 0 ), ROC Curve( 1 ),
SendToReport(
Dispatch( {}, "Whole Model Test", OutlineBox, {Close( 1 )} ),
Dispatch( {}, "Parameter Estimates", OutlineBox, {Close( 1 )} )
));
2. Per prima cosa, proviamo con Bootstrapping. Fare clic con il pulsante destro del mouse sul valore AUCroc segnalato, quindi selezionare Bootstrap. Usa almeno 2500 campioni bootstrap e mi piacciono i pesi frazionari, soprattutto se hai categorie con frequenze relative basse.
Ciò restituirà una tabella di valori AUCroc avviati: ciò che ottieni dal campionamento con sostituzione dalla tua tabella e ricalcolando il modello e AUCroc, memorizzando ad ogni iterazione il valore che ottieni. In sostanza, ora hai la distribuzione campionaria di AUCroc per il tuo classificatore dato. Ottenere un valore p ora è solo una questione di conteggio. Ma lasciamo che JMP lo faccia.
3. Analizza > Distribuzione, quindi inserisci AUC come Y e seleziona "Solo istogrammi", quindi fai clic su OK:

Ora hai i limiti di confidenza bootstrap su AUCroc, che sono ottimi per i rapporti, inoltre se desideri sapere se il tuo AUCroc originariamente ottenuto è diverso da un valore particolare, devi solo vedere se quel valore nullo è all'interno dell'intervallo di confidenza al tuo livello di confidenza prescelto.
Ma hai chiesto un valore p. Potremmo letteralmente contare quante volte su 2500 campioni abbiamo ottenuto un AUCroc pari o inferiore a 0,50, ma possiamo fare di meglio. JMP sta aggiungendo un output speciale a questo report di distribuzione perché nella tabella è presente una colonna BootID. JMP sa come lavorare con quella colonna insieme alla prima riga della tabella (la stima del campione originale). Se lo desideriamo, possiamo cambiare le cose per renderlo una sorta di test di randomizzazione piuttosto che un bootstrap (e in seguito faremo il test di randomizzazione appropriato per confrontare). Dobbiamo solo apportare due semplici modifiche: rinominare la colonna "BootID•" in "SimID•" e modificare il valore della stima originale nella tabella con il valore con cui si desidera eseguire il test... ovvero, modificare il valore in la prima riga della colonna AUC a 0,50. Ecco come dovrebbe apparire ora la parte superiore del tuo tavolo:
Ora avvia Analizza> Distribuzione, inserisci di nuovo AUC per Y e seleziona Solo istrogrammi. Otterremo il seguente output:
Si noti che JMP ci presenta "Risultati della simulazione" anziché risultati di bootstrap. Ciò è dovuto alla modifica della colonna BootID (SimID è ciò che fornisce la simulazione del clic destro). Stiamo finendo un po' le cose qui, quindi sappi che questo non è in genere il modo in cui JMP riporta i risultati della simulazione (vedremo come funziona normalmente in seguito), ma in questo caso JMP ha tracciato una linea per dove hai posizionato il tuo valore di ipotesi nulla di AUCroc (0,50) e nel tuo valore p di Y<=Y0 puoi vedere la proporzione di tempo in cui hai ottenuto un campione casuale (dai tuoi dati originali) con un AUCroc inferiore o uguale a 0,50. Questo è il tuo valore p empirico a una coda, dato 0,50 come nullo. Ma non fermiamoci qui poiché un altro approccio a questo può produrre qualcosa di interessante e importante.
Un altro modo (e francamente, il modo migliore) in cui avremmo potuto procedere se un valore p empirico fosse il risultato desiderato, è utilizzare Fare clic con il tasto destro> Simula sull'AUCroc riportato. In modo molto simile al bootstrap, implicheremo il ricampionamento con sostituzione dalla nostra tabella (o senza sostituzione se desideriamo eseguire un test di permutazione). Per fare ciò come Clic destro> Simula, dobbiamo creare una nuova colonna formula per il simulatore che gestirà il campionamento con la sostituzione. Un modo semplice per farlo è selezionare la colonna Y nella tabella, fare clic con il pulsante destro del mouse sulla riga dell'intestazione > Nuova colonna formula > Casuale > Campione con sostituzione.
Questo crea una nuova colonna (Resample[sex]) e ogni volta che la formula per questa colonna viene ricongiunta, le etichette di M e F vengono assegnate casualmente alla tabella in base ai tassi di base osservati (ad esempio, campionamento con sostituzione).
Successivamente, torniamo alla nostra regressione logistica e facciamo clic con il pulsante destro del mouse su AUCroc nel report, ma invece di selezionare Bootstrap, selezioniamo Simulate. Verrà richiesto di scegliere una colonna formula da sostituire a una colonna utilizzata nel report. In questo caso, selezionerei sex e Resample[sex]. Esegui almeno 2500 campioni, ma per questo esempio ne farò 10k solo per ottenere una stima più precisa delle statistiche risultanti.
Al termine di JMP, ci viene fornita una tabella molto simile al bootstrap, ma ciò che abbiamo ora non è la distribuzione campionaria di AUCroc dati i nostri dati originali, ma la distribuzione campionaria di AUCroc data NO relazione tra sesso e altezza ma onorando i tassi di base del sesso (poiché stiamo simulando cosa accadrebbe se assegnassimo casualmente le etichette di M e F alle righe nella nostra tabella -- questo È l'ipotesi nulla).Sceglierò Analizza > Distribuzione, inserirò AUC per Y, ma questa volta non selezioniamo la casella per Istogrammi solo perché c'è qualcosa di importante da notare qui:

I nostri valori p empirici sono riportati di nuovo, ma questa volta le nostre stime di AUCroc oscillano verso 0,50 (ma non in realtà 0,50, torneremo sul perché) mentre dal bootstrap si aggiravano attorno alla nostra stima osservata. Di nuovo, in questo caso, stiamo simulando cosa succede ad AUCroc sotto l'ipotesi nulla, quindi dovrebbe avere senso. I p-value empirici qui riportano la frequenza con cui otteniamo stime da questa distribuzione campionaria che superano la nostra stima originale (che è la nostra definizione tipica di un p-value: quanto è improbabile la nostra stima dato che solo il caso è responsabile della generazione del p-value valori). Due cose da notare qui:
1. Il nostro valore p empirico è 0,0190, che è identico al valore p del test originale dell'intero modello.
Non è un caso che questo valore p sia vicino, anche se è una fortuna per questo punto che siano numericamente identici a 4 cifre decimali. In effetti, sono diversi e ottenuti in modi diversi, ma come ho detto all'inizio, un test dell'AUCroc rispetto a ciò che ci si aspetta solo per caso è concettualmente la stessa cosa dell'intero test del modello: stiamo classificando meglio del caso .
2. Si noti che la distribuzione campionaria qui non ha una media di 0,50. Cioè, il valore atteso qui non è 0,50 e quindi i valori p empirici dati non si riferiscono a un valore nullo di 0,50, ma piuttosto a un valore nullo, in questo caso, di circa 0,57. Ciò è dovuto alla proporzione di maschi e femmine in questo set di dati: se stiamo solo indovinando in modo casuale rispetto all'altezza, ma sappiamo che ci sono più maschi che femmine, possiamo indovinare il maschio più spesso e fare una precisione di classificazione migliore del 50% (la nostra intercettazione del modello tiene conto di questo). Nota a margine: si noti che questa distribuzione campionaria è decisamente non normale , eppure i valori p ottenuti da formule di approssimazione di grandi campioni (come quella a cui ho fatto riferimento all'inizio) farebbero credere che questa distribuzione campionaria sia normale. Se usiamo semplicemente la media e la deviazione standard ed eseguiamo una ricerca del valore p in questo modo, otteniamo p = 0,0033, non p = 0,0190. Questa è una grande differenza e un'ottima ragione per cui i test di randomizzazione sono fantastici: nessuna ipotesi sulla forma distributiva. 
Un altro punto: le differenze tra il bootstrap e il test di randomizzazione sono importanti, anche se possono fornire quelle che sembrano informazioni simili. Nel bootstrap abbiamo cambiato BootI D colonna per essere SimID per hackerare JMP per fornirci il rapporto empirico sul valore p e modificare un valore nella tabella per impostare l'AUCroc nullo esattamente a 0,50. Quello che abbiamo ottenuto è un valore p empirico, ma lo abbiamo fatto dal punto di vista della stima del campione (nel modo in cui un intervallo di confidenza è dal punto di vista della stima del campione). Per il test di randomizzazione tramite il tasto destro del mouse su Simulate, prendiamo la prospettiva del nulla e abbiamo permesso a jmp di generare la distribuzione del campionamento sotto l'ipotesi nulla per AUCroc e quindi abbiamo confrontato la nostra stima originale con quella. Nessuno di questi è più accurato, ma finiscono per darti cose sottilmente diverse ed è bene capirle entrambe.
La differenza più grande, tuttavia, non è la differenza concettuale della prospettiva statistica adottata da ciascun approccio, è la specifica di 0,50 come valore nullo nella nostra variante bootstrap. Ci si potrebbe chiedere, cosa succede se usiamo la tabella bootstrap e impostiamo il valore dell'ipotesi nulla sul valore sotto il valore nullo ottenuto dal test di randomizzazione (0,57079)?
Bene, se sei un credente, come me, nella casualità della casualità come certezza, dovresti aspettarti che il nostro valore p empirico generato da campioni bootstrap rispetto allo stesso null sia abbastanza simile al test di randomizzazione effettivo. Dopotutto, non stanno valutando la stessa cosa concettualmente, solo da prospettive diverse?
Bene, guarda, p = 0,0192. Fede nella casualità confermata.:)
Spero che questo aiuti alcuni!
@giuliano