Ciao comunità JMP,
Ho un ampio set di dati con circa 4.000 misurazioni di biomarcatori al Baseline in pazienti arruolati in uno studio clinico. Devo identificare tra questi dati quale combinazione di biomarcatori può predire l'esito clinico 12 settimane dopo.
Ho utilizzato un approccio piuttosto ingenuo che sembra produrre risultati grossolanamente sovradimensionati:
- Eseguire tutti i 4.000 biomarcatori tramite Screening > Screening di risposta, dove la risposta è l'output clinico binario alla settimana 12
- Seleziona i primi 10-20 biomarcatori (in base a FDR)
- Utilizzare i biomarcatori selezionati (come effetti modello) sulla piattaforma Fit Model > Stepwise dove Y è l'output clinico binario alla settimana 12; criteri = minimizzare BIC
- Generare il modello
Sebbene questo approccio abbia prodotto eccellenti "predittori" della risposta clinica alla settimana 12 (ROC AUC > 0,940), ha anche prodotto un ROC AUC elevato quando testato con una variabile "fittizia" generata casualmente (ROC AUC ~0,870). Quest'ultimo mi indica che il mio metodo è grossolanamente inappropriato a causa del sovraadattamento.
Ho valutato la fattibilità di lavorare con sottogruppi di pazienti Discovery e Validation (il 50% dell'intera popolazione), ma non ha risolto il problema del sovraadattamento.
Oltre a utilizzare le piattaforme di modellazione avanzate fornite da JMP Pro, esistono tecniche migliori in JMP per affrontare questo tipo di questione?
Grazie per l'aiuto.
Migliore,
STUDENTI
Grazie per l'esempio. Diamo un'occhiata da vicino, da un paio di prospettive. E dovrebbero portare alla stessa conclusione: non c'è oro nei dati.
Prima prospettiva, dividere i dati in addestramento e convalida, non si dovrebbe tentare di utilizzare il modello adattato in base al risultato dello script.
Seconda prospettiva, basta adattare la buona e vecchia regressione logistica senza scissione treno/val e vedere se ci sono segnali di avvertimento.
Primo segnale di avvertimento: test dell'intero modello, che dice che c'è una grande possibilità che il modello non sia migliore di un'ipotesi casuale.

Secondo segnale di avvertimento: test sugli effetti e significato dei parametri. Ecco i test sugli effetti. Solo due rossi. Se quei due sono l'oro, il resto sono macerie. Le macerie ci fanno pensare che siano oro. Rimuovili, va bene?

Ok, ora ciò che viene fuori dall'altra estremità della scatola chiusa sono i seguenti Whole Test e Effect Test. E presta attenzione a questi valori p. Sono circa 0,05 e 0,10. Sul recinto, con i soliti mezzi. Dovremmo tenerli? Se li rimuoviamo, otteniamo un'ipotesi casuale. Facciamo finta di volerli davvero tenere, e vediamo come va.


Che ne dici di ROC e AUC?

Quindi l'AUC è 0,59. Oro? Immagino che sia sul recinto anche con i soliti mezzi, perché l'adattamento del modello dice che il modello è sul recinto, quindi dovrebbe essere tutto derivato da esso. Hai bisogno di una prova? Sì, possiamo avere una prova. Possiamo eseguire il bootstrap del valore AUC, se hai JMP Pro. Fare clic con il tasto destro sul valore AUC e selezionare Bootstrap. Gli ho dato 10000 pareggi. E 0,5 rientra nell'intervallo dei campioni bootstrap. Quindi dipende davvero da quanto si vuole credere che quei due fattori rimanenti siano oro.

Quello che ho fatto è mettere un intervallo di confidenza bootstrap attorno all'AUC. Possiamo anche fare intervalli di confidenza attorno al ROC, quindi potremmo vedere che il bel mezzo guscio non è affatto così impressionante. Ci vorrebbe un grande sforzo per farlo, però. Osserviamo invece solo un punto ROC: il punto corrispondente alla soglia di cutoff di 0,5. Ecco i passaggi.
Innanzitutto, attiva Confusion Matrix.

Guarda i numeri evidenziati, sono Tasso di veri positivi e Tasso di falsi positivi corrispondenti alla soglia limite di 0,5.
E possiamo trovare questo punto su ROC come nella seguente schermata all'incrocio.

Ora esegui il bootstrap di quei numeri evidenziati. E ottengo questa tabella, in cui la colonna "0" è il tasso di falsi positivi avviati e la colonna "1" è il tasso di veri positivi avviati.

Traccia la colonna "1" rispetto alla colonna "0" e sovrapponila al ROC. Ed ecco cosa ottengo. Ho anche messo una linea diagonale come riferimento.

Cosa dice il campione bootstrap che il punto di soglia di probabilità 0,5 su ROC ha avuto una grande possibilità sopra la linea diagonale, ma c'è una possibilità non trascurabile sotto la diagonale. È sul recinto, se avessimo dovuto concludere già dal modello.
Quindi quello che voglio concludere da questo esempio è che dovremmo davvero inchiodare il modello prima di concludere il modello overfit. Includere il rumore casuale come effetti in questo caso si adatterà eccessivamente.
Per aggiungere al mistero, ho allegato la simulazione che ho fatto.Questa volta ho utilizzato una colonna di convalida.Cose degne di nota: la regressione logistica (script salvato nel file) mostra AUC intorno a .71 per i dati di addestramento e molto inferiore (meno di .5) per i dati di convalida.Questa è una chiara prova di overfitting.Tuttavia, ho anche eseguito lo screening del modello - tutti i metodi (inclusa la regressione logistica) mostrano AUC intorno a 0,5 per i dati di addestramento e inferiore per i dati di convalida - che mi sembra ragionevole.Inoltre, il modello di regressione logistica non è significativo (e solo 1 o 2 fattori sono significativi, rispetto a ciò che ti aspetteresti per 20 fattori casuali).Tra le cose che non capisco è perché la piattaforma di regressione logistica e la regressione logistica all'interno della piattaforma di screening del modello diano risultati così diversi.So (o credo) che lo screening del modello non trovi gli iperparametri di sintonia tanto quanto le singole piattaforme di modellazione, ma la differenza tra 0,7 e 0,5 sui dati di addestramento mi sembra troppo grande.
Non conosco la risposta, ma posso confermare quello che hai trovato.Ho creato una variabile di risposta binaria (casuale) e 20 fattori normali casuali con 200 osservazioni.Ho AUC=.71!Lo trovo davvero molto sorprendente.Sospetto che abbia qualcosa a che fare con una limitazione dell'AUC come misura delle prestazioni, ma come ho detto, non capisco davvero questo comportamento.Nel mio caso, certamente non dovrebbe essere troppo adatto.Sono ansioso di vedere cosa possono dire gli altri su questo.
Ciao Dale,
Grazie per aver dato seguito a questa domanda relativamente aperta. Ho creato la variabile casuale utilizzando la seguente formula:
random uniform (0,1) > 0.5;
Da notare che ho eseguito il mio "metodo" sopra descritto su otto diverse versioni della variabile fittizia (ovvero, ricalcola la formula), ottenendo valori ROC AUC compresi tra 0,770 e 0,870.
Non mi sono mai imbattuto in un comportamento del genere, ma non ho mai lavorato con più di 1.200 variabili di biomarcatori.
Grazie per l'aiuto.
Migliore,
ST
Puoi fornire qualche dettaglio in più sulla tua variabile di risposta generata casualmente?Come lo hai creato esattamente?