Come valutare il potere predittivo di un insieme di predittori categorici di un risultato binario? Calcolare le probabilità o la regressione logistica?


10

Sto cercando di determinare se le probabilità semplici funzioneranno per il mio problema o se sarà meglio usare (e conoscere) metodi più sofisticati come la regressione logistica.

La variabile di risposta in questo problema è una risposta binaria (0, 1). Ho un numero di variabili predittive che sono tutte categoriche e non ordinate. Sto cercando di determinare quali combinazioni delle variabili predittive producono la proporzione più alta di 1. Ho bisogno della regressione logistica? Come sarebbe un vantaggio calcolare solo le proporzioni nel mio set di campioni per ogni combinazione dei predittori categorici?


Se hai più di 1 predittore, potrebbe essere difficile farlo senza un qualche tipo di modello di regressione. Cosa avevi in ​​mente? Solo una grande tabella di contigenze dimensionale ( è il numero di predittori)? kKK
Macro,

Le categorie di predittori sono raggruppate in più di un fattore e, in tal caso, sono incrociate o nidificate? Inoltre, ti interessa solo fare una dichiarazione descrittiva? Se i tuoi dati sono complessi, un modello LR potrebbe essere più conveniente, e se vuoi fare delle inferenze LR è fortemente preferibile, penso.
gung - Ripristina Monica

@Macro - Sì, stavo pensando che sarebbe essenzialmente una grande tabella, con una colonna che mostra # di punti campione che corrispondono allo scenario, e un'altra colonna che mostra la proporzione di 1. Ho cinque predittori categorici, ciascuno con 10-30 possibili valori, quindi so che l'elenco di scenari sarebbe alto. Stavo pensando di scrivere un loop in R che attraversi ciascuno di essi e produca risultati significativi (alta percentuale di 1 più un gran numero di punti campione nello scenario).
Rachel,

@gung - I fattori sono incrociati solo parzialmente. Nessuno dei fattori sarebbe considerato nidificato. Sono interessato a trovare le combinazioni di fattori (ad es. Stato, Cliente, Dipendente) che avranno probabilmente un'alta probabilità che la variabile di risposta sia pari a 1.
Rachel

1
@EmreA - Purtroppo le variabili categoriali non sono del tutto indipendenti. Alcune combinazioni saranno più probabili di altre ...
Rachel,

Risposte:


11

La regressione logistica, fino all'imprecisione numerica, darà esattamente gli stessi adattamenti delle percentuali tabulate. Pertanto, se le variabili indipendenti sono oggetti fattorefactor1 , ecc., E i risultati dipendenti (0 e 1) lo sono x, è possibile ottenere gli effetti con un'espressione come

aggregate(x, list(factor1, <etc>), FUN=mean)

Confronta questo con

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

A titolo di esempio, generiamo alcuni dati casuali:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

Il sommario è ottenuto con

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

Il suo output include

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

Per riferimento futuro, la stima per i fattori ai livelli (1,2,0) nella riga 6 dell'output è 0,5.

La regressione logistica rinuncia ai suoi coefficienti in questo modo:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

Per usarli, abbiamo bisogno della funzione logistica:

logistic <- function(x) 1 / (1 + exp(-x))

Per ottenere, ad esempio, la stima per i fattori ai livelli (1,2,0), calcolare

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(Notare come tutte le interazioni devono essere incluse nel modello e tutti i coefficienti associati devono essere applicati per ottenere una stima corretta.) L'output è

(Intercept) 
        0.5

d'accordo con i risultati di aggregate. (L'intestazione "(Intercetta)" nell'output è una traccia dell'input ed effettivamente priva di significato per questo calcolo.)


Le stesse informazioni in ancora un'altra forma appaiono nell'output ditable . Ad esempio, l'output (lungo) di

table(x, factor1, factor2, factor3)

include questo pannello:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

factor121/(21+21)=0.5x1aggregateglm


Infine, una combinazione di fattori che producono la proporzione più elevata nel set di dati viene convenientemente ottenuta dall'output di aggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

1
Queste sono molte informazioni e mi ci vorrà del tempo per digerirle, ma sono felice di sentire le percentuali tabulate e le regressioni logistiche mi daranno essenzialmente gli stessi risultati. Ho eseguito la funzione di aggregazione su due dei predittori e ha terminato immediatamente ... i risultati per l'adattamento logistico sono in esecuzione da diversi minuti e non sono ancora terminati. Continuerò a modificare le cose, ma potrei finire solo usando le percentuali tabulate. Grazie!
Rachel,

(+1), Off the cuff Mi chiedo se gli errori standard in questo contesto dalla regressione logistica possano essere incorporati nei riassunti grafici della trama a mosaico che ho suggerito. Sospetto anche che questo potrebbe essere un buon modo per "filtrare" rapidamente i risultati per interazioni interessanti (queste sono solo le mie riflessioni!)
Andy W

"La regressione logistica, fino all'imprecisione numerica, corrisponderà esattamente alle stesse percentuali tabulate": Non sta tabulando le percentuali per ogni configurazione di predittori? In tal caso, la regressione logistica non può codificare tutte le possibili relazioni.
Neil G,

@Neil Certo che può codificare tutte le "relazioni" (combinazioni di fattori): usa tutte le possibili interazioni. Vedi il codice R per un esempio. Quando i fattori sono numerosi, in pratica ci saranno molte combinazioni vuote, ma un software decente non avrà problemi a gestirlo. Un software ancora migliore gestirà le combinazioni senza alcuna variazione nelle risposte.
whuber

@Andy, adoro la tua risposta sulla grafica: dobbiamo trovare un modo per creare un thread in cui è esattamente la risposta giusta! Forse il tuo pensiero sull'incorporazione delle stime di errore nei diagrammi a mosaico sarebbe il modo di affrontarlo: come rappresenteresti contemporaneamente le stime logistiche, i dati effettivi e / o l'errore?
whuber

6

Per una rapida occhiata alla proporzione di risposte binarie all'interno di ciascuna categoria e / o subordinata a più categorie, i grafici possono essere utili. In particolare, per visualizzare simultaneamente proporzioni condizionate da molte variabili categoriali indipendenti, suggerirei diagrammi a mosaico .

Di seguito è riportato un esempio tratto da un post sul blog, Comprensione dei grafici basati sull'area: grafici a mosaico dalla grafica statistica e altro blog. In questo esempio viene visualizzata la percentuale di sopravvissuti sul Titanic in blu, a seconda della classe del passeggero. È possibile valutare simultaneamente la percentuale di sopravvissuti, pur apprezzando il numero totale di passeggeri all'interno di ciascuno dei sottogruppi (informazioni utili di sicuro, soprattutto quando alcuni sottogruppi sono scarsi in numero e ci aspetteremmo variazioni più casuali).

Trama mosaico di Titanic
(fonte: theusrus.de )

Si possono quindi subordinare i successivi diagrammi a mosaico a più variabili indipendenti categoriali. L'esempio seguente dello stesso post di blog in un breve sommario visivo dimostra che tutti i bambini passeggeri in prima e seconda classe sono sopravvissuti, mentre in terza classe i bambini non hanno fatto altrettanto. Mostra anche chiaramente che le donne adulte avevano un tasso di sopravvivenza molto più elevato rispetto ai maschi all'interno di ogni classe, sebbene la percentuale di donne sopravvissute tra le classi diminuisse sensibilmente dalla prima alla seconda alla terza classe (e quindi fosse di nuovo relativamente alta per l'equipaggio, sebbene di nuovo nota che non esistono molte donne membri dell'equipaggio, dato quanto è stretta la barra).

Mosaico condizionato alla terza variabile
(fonte: theusrus.de )

È incredibile quante informazioni vengano visualizzate, si tratta di proporzioni in quattro dimensioni (classe, adulto / bambino, sesso e proporzione di sopravvissuti)!

Sono d'accordo se sei interessato alla previsione o alla spiegazione più causale in generale, vorrai passare a una modellazione più formale. I diagrammi grafici possono essere indizi visivi molto rapidi anche se sulla natura dei dati e possono fornire altre intuizioni spesso perse quando si valuta semplicemente i modelli di regressione (specialmente quando si considerano le interazioni tra le diverse variabili categoriche).


+1, questo è il punto che stavo cercando di fare nel mio commento sopra riguardo se l'obiettivo fosse una semplice descrizione o inferenza. Nb, il punto è più chiaro e meglio realizzato con figure!
gung - Ripristina Monica

@gung grazie, cosa significa Nb? Dico sempre meglio anche con le figure!
Andy W,

2
Nulla a che vedere con le statistiche, "nb" sta per nota bene , che a sua volta è latino per "nota bene" (letteralmente), o "nota che" / "avviso" (più colloquialmente).
gung - Ripristina Monica

3

A seconda delle tue esigenze, potresti scoprire che il partizionamento ricorsivo fornisce un metodo di facile interpretazione per prevedere una variabile di risultato. Per un'introduzione R a questi metodi, vedere la pagina del modello basata sull'albero di Quick-R . In genere favorisco l' ctree()implementazione nel pacchetto `party di R in quanto non ci si deve preoccupare della potatura e produce automaticamente una grafica carina.

Questo rientra nella categoria di algoritmi di selezione delle caratteristiche suggeriti in una risposta precedente e generalmente fornisce previsioni buone se non migliori della regressione logistica.


2

205

Se hai meno dati, vuoi imparare meno parametri. È possibile ridurre il numero di parametri ipotizzando, ad esempio, che le configurazioni dei singoli predittori abbiano effetti coerenti sulla variabile di risposta.

Se ritieni che i tuoi predittori siano indipendenti l'uno dall'altro, la regressione logistica è l'algoritmo unico che fa la cosa giusta. (Anche se non sono indipendenti, può comunque fare abbastanza bene.)

In sintesi, la regressione logistica presuppone l'influenza indipendente dei predittori, che riduce il numero di parametri del modello e produce un modello facile da imparare.


1

Dovresti guardare gli algoritmi di selezione delle funzionalità. Uno che è adatto per il tuo caso (classificazione binaria, variabili categoriche) è il metodo "minima ridondanza massima pertinenza" (mRMR). Puoi provarlo rapidamente online su http://penglab.janelia.org/proj/mRMR/


È possibile eseguire questo programma con più di un predittore categorico? Nella pagina di caricamento sembra che solo la prima colonna possa essere la "classe" di dati ... Forse non capisco come si debba formattare i dati.
Rachel,

O la "classe" dovrebbe essere la variabile di output, in questo caso uno 0 o 1? In tal caso, è importante trasformare le variabili categoriali in variabili fittizie per mostrare gli indicatori per ciascuna?
Rachel,

Puoi avere tutti i predittori che desideri. La prima riga del file di dati deve essere i nomi delle funzionalità e la prima colonna deve essere le classi (variabile di risposta) per i campioni. Quindi, un esempio è: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea,

1

Lavoro nel campo del credit scoring, dove quello che viene presentato come uno strano caso è la norma.

Usiamo la regressione logistica e convertiamo le variabili sia categoriche che continue in pesi di evidenza (WOE), che vengono quindi utilizzati come predittori nella regressione. Viene dedicato molto tempo al raggruppamento delle variabili categoriali e al discretizzazione (binning / classificazione) delle variabili continue.

Il peso dell'evidenza è un semplice calcolo. È il registro delle probabilità per la classe, meno il registro delle probabilità per la popolazione:
WOE = ln (Buono (Classe) / Cattivo (Classe)) - ln (Buono (TUTTO) / Cattivo (TUTTO)) Questo è il metodologia di trasformazione standard per quasi tutti i modelli di valutazione del credito costruiti utilizzando la regressione logistica. Puoi usare gli stessi numeri in un approccio a tratti.

Il bello è che saprai sempre se i coefficienti assegnati a ogni WOE hanno un senso. I coefficienti negativi sono contrari ai modelli all'interno dei dati e di solito risultano dalla multicollinearità; e coefficienti superiori a 1,0 indicano sovracompensazione. La maggior parte dei coefficienti uscirà da qualche parte tra zero e uno.


Grazie per un post interessante e informativo. Tuttavia, non riesco a capire come risponde alla domanda in questo thread. Qual è lo "strano caso" a cui ti riferisci? Hai forse intenzione di usarlo per rispondere a un'altra domanda altrove?
whuber
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.