Analisi ROC e multiROC: come calcolare il cutpoint ottimale?


14

Sto cercando di capire come calcolare il punto di taglio ottimale per una curva ROC (il valore al quale la sensibilità e la specificità sono massimizzate). Sto usando il set aSAHdi dati dal pacchetto pROC.

La outcomevariabile potrebbe essere spiegata da due variabili indipendenti: s100be ndka. Usando la sintassi del Epipacchetto, ho creato due modelli:

library(pROC)
library(Epi)
ROC(form=outcome~s100b, data=aSAH)
ROC(form=outcome~ndka, data=aSAH)

L'output è illustrato nei seguenti due grafici:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Nel primo grafico ( s100b), la funzione afferma che il punto di taglio ottimale è localizzato al valore corrispondente a lr.eta=0.304. Nel secondo grafico ( ndka) il punto di taglio ottimale è localizzato al valore corrispondente a lr.eta=0.335(qual è il significato di lr.eta). La mia prima domanda è:

  • qual è il corrispondente s100be i ndkavalori per i lr.etavalori indicati (qual è il punto di taglio ottimale in termini di s100be ndka)?

SECONDA DOMANDA:

Supponiamo ora di creare un modello tenendo conto di entrambe le variabili:

ROC(form=outcome~ndka+s100b, data=aSAH)

Il grafico ottenuto è:

inserisci qui la descrizione dell'immagine

Voglio sapere quali sono i valori di ndkaAND s100ba cui la sensibilità e la specificità sono massimizzate dalla funzione. In altri termini: quali sono i valori di ndkae s100bai quali abbiamo Se = 68,3% e Sp = 76,4% (valori derivati ​​dal grafico)?

Suppongo che questa seconda domanda sia correlata all'analisi multiROC, ma la documentazione del Epipacchetto non spiega come calcolare il punto di taglio ottimale per entrambe le variabili utilizzate nel modello.

La mia domanda sembra molto simile a quella di reasearchGate , che in breve dice:

La determinazione del punteggio limite che rappresenta un migliore compromesso tra sensibilità e specificità di una misura è semplice. Tuttavia, per l'analisi della curva ROC multivariata, ho notato che la maggior parte dei ricercatori si è concentrata su algoritmi per determinare l'accuratezza complessiva di una combinazione lineare di diversi indicatori (variabili) in termini di AUC. [...]

Tuttavia, questi metodi non menzionano come decidere una combinazione di punteggi di cut-off associati ai molteplici indicatori che forniscano la migliore precisione diagnostica.

Una possibile soluzione è quella proposta da Shultz nel suo articolo , ma da questo articolo non sono in grado di capire come calcolare il punto di taglio ottimale per una curva ROC multivariata.

Forse la soluzione dal Epipacchetto non è l'ideale, quindi qualsiasi altro link utile sarà apprezzato.

Risposte:


9

Per elaborare la risposta di Frank Harrell, ciò che il Epipacchetto ha fatto è stato quello di adattarsi a una regressione logistica e creare una curva ROC con previsioni di risultato nella seguente forma:

outcome=11+e(β0+β1s100b+β2ndka)

Nel tuo caso, i valori adattati sono (intercetta) = -2.379, (s100b) = 5.334 e (ndka) = 0.031. Poiché desideri che il risultato previsto sia 0,312 (il limite "ottimale"), puoi sostituirlo come (spero di non aver introdotto errori qui):β 1 β 2β0β1β2

0.312=11+e(2.379+5.334s100b+0.031ndka)
1.588214=5.334s100b+0.031ndka
o:
s100b=1.5882140.031ndka5.334

Qualsiasi coppia di valori (s100b, ndka) che soddisfano questa uguaglianza è "ottimale". Sfortuna per te, ci sono un'infinità di queste coppie. Ad esempio, (0,29, 1), (0, 51,2), ecc. Ancora peggio, la maggior parte di essi non ha alcun senso. Cosa significa la coppia (-580, 10000)? Niente!

In altre parole, non è possibile stabilire interruzioni sugli ingressi: è necessario farlo sugli output, e questo è il punto centrale del modello.


8

Non è opportuno cercare valori soglia per le variabili di input, ma solo per l'output (ad es. Rischio previsto da un modello multivariabile). Questo perché il cutoff per x1 dipenderebbe dal valore continuo di x2. E cercare un punto di interruzione su , per ottenere decisioni ottimali, richiede una funzione di utilità / perdita / costo e questo non ha nulla a che fare con le curve ROC.Y^


Capisco il problema che hai spiegato. Mi chiedo, a proposito, se esiste un metodo per calcolare i punti di interruzione per due (o più) test in parallelo, al fine di aumentare il Sens e le Specifiche per identificare uno stato specifico (malattia / risultato / ecc.). ). Grazie in anticipo.
Tommaso,

1
Poiché il cutpoint "ottimale" per x1 dipenderà dal valore continuo di x2 e il cutpoint "ottimale" per x2 dipenderà dal valore continuo di x1, non c'è modo di farlo e conservare informazioni sufficienti per renderlo non un disastro.
Frank Harrell,

Quindi non c'è modo di trovare punti di interruzione per due o più test, al fine di massimizzare la sensibilità e la specificità? Naturalmente un metodo che non è un'analisi multiROC. Grazie ancora.
Tommaso,

2
Semplicemente non è appropriato cercare tagli sugli input. Le decisioni ottimali vengono prese senza alcun limite o, se necessario, prima del momento decisionale, tagliando le probabilità previste. Le utility (perdita / costo) sono necessarie per risolvere il taglio ottimale del rischio previsto.
Frank Harrell,

1
Le curve ROC non hanno nulla a che fare con il raggiungimento di questo obiettivo. Per fare ciò avresti bisogno di mettere in relazione SCr con il risultato, o semplicemente calcolare la probabilità di ottenere un SCr più estremo di quello in una popolazione normale.
Frank Harrell,

3

Immagino lr.etasia il predittore lineare - il logit - del modello adattato, poiché è un simbolo comunemente usato per questo; o, in caso contrario, la probabilità dal modello montato. (Si scopre che è quest'ultimo: consultare /programming//a/38532555/1864816 .) È possibile controllare il codice . In ogni caso sarai in grado di calcolarlo dai coefficienti del modello per qualsiasi numero di predittori. (Nota che non sarà un cut-off per ciascun predittore separatamente, ma una funzione di tutti i predittori.)ηROC

La tua prima frase dovrebbe dire (come evidenziato dai grafici) che stai cercando dove è massimizzata la somma di sensibilità e specificità. Ma perché questo è "ottimale"? Un risultato falso positivo ha la stessa importazione di un risultato falso negativo? Vedi qui .


Era corretto, posso calcolare il punto di interruzione dal modello montato (per una variabile indipendente), o in alternativa usando la coordsfunzione dal pROCpacchetto, come ho trovato più avanti. Il punto di interruzione ottimale era, nel mio caso, la migliore combinazione di Sens e Spec; Ho letto la risposta collegata, ma non mi interessa (almeno per ora) i risultati falsi positivi e falsi negativi, perché (se ho capito bene) sto analizzando un gruppo di dati raccolti per la ricerca.
Tommaso,

Che cosa vi preoccupate, allora? Cosa stai facendo con il cut-off che non richiede alcuna considerazione delle conseguenze? E allora che cosa è 'ottimale' o 'migliore' per ?
Scortchi - Ripristina Monica

Tommaso ha definito "ottimale" come "il valore al quale la sensibilità e la specificità sono massimizzate" (citando la prima frase della domanda), che significa implicitamente max (sensibilità + specificità). Che abbia senso o meno (e quando leggo che non gli importa, sono propenso a pensare che non lo faccia) è un'altra domanda.
Calimo,

1
Questo approccio è in contrasto con il processo decisionale.
Frank Harrell,

1
Penso che se sto leggendo correttamente il tuo post, lr.etaè esattamente la seconda opzione che menzioni: la probabilità dal modello adattato: . Dai un'occhiata se hai un minuto. E[Yi|Xi]=11+e(β0+β1×s100b)
Antoni Parellada,

0

Puoi trovare la soglia alla quale il tasso positivo reale (tpr) interseca il tasso negativo reale (tnr), questo sarà il punto in cui la somma dei falsi positivi e dei falsi negativi è minima.


Una risposta di una frase è generalmente considerata un po 'breve per il nostro formato. Puoi espandere la tua risposta per includere una breve spiegazione di come sai che deve essere il minimo?
Glen_b

1
Tale strategia vola di fronte al processo decisionale ottimale.
Frank Harrell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.