Logit con variabili ordinali indipendenti


18

In un modello logit, esiste un modo più intelligente per determinare l'effetto di una variabile ordinale indipendente piuttosto che utilizzare variabili fittizie per ogni livello?


Non dipende dal software?

1
Software diverso può consentire opzioni diverse, ma dovrebbe esserci una risposta di principio, no?
fgregg,

1
Ok, stupido commento, scusa.

Risposte:


16

Per aggiungere alla risposta di @ dmk38, "qualsiasi set di punteggi fornisce un test valido , a condizione che siano costruiti senza consultare i risultati dell'esperimento. Se il set di punteggi è scadente, in quanto distorce gravemente una scala numerica che è alla base del classifica ordinata, il test non sarà sensibile. I punteggi dovrebbero quindi incarnare le migliori informazioni disponibili sul modo in cui la classificazione è stata costruita e utilizzata. " (Cochran, 1954, citato da Agresti, 2002, pagg. 88-89). In altre parole, trattare un fattore ordinato come una variabile con punteggio numerico è semplicemente un problema di modellazione. Se ha senso, ciò influirà solo sul modo in cui interpreti il ​​risultato e non esiste una regola empirica definitiva su come scegliere la migliore rappresentazione per una variabile ordinale.

Si consideri il seguente esempio sul consumo materno di alcol e la presenza o l'assenza di malformazione congenita (Agresti, Analisi dei dati categorici , Tabella 3.7 p.89):

            0    <1 1-2 3-5 6+
Absent  17066 14464 788 126 37
Present    48    38   5   1  1

In questo caso particolare, possiamo modellare il risultato usando la regressione logistica o una semplice tabella di associazione. Facciamolo in R:

tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
                 dimnames=list(c("Absent","Present"),
                               c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)

Le statistiche usuali (12.08, p = 0.016751) o LR (6.20, p = 0.184562) (con 4 df) non tengono conto dei livelli ordinati nel consumo di alcol.χ2

Considerando entrambe le variabili come ordinali con punteggi equidistanti (questo non ha alcun impatto per le variabili binarie, come la malformazione, e scegliamo la linea di base come 0 = assente), potremmo testare un'associazione lineare per lineare. Costruiamo prima una versione esplosa di questa tabella di contingenza:

library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1), 
                                alcohol=gl(5,2,10,labels=colnames(tab3.7))), 
                     c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check

Quindi possiamo testare un'associazione lineare usando

library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)

che produce con . Si noti che questa statistica è semplicemente la correlazione tra le due serie di punteggi (che Agresti ha chiamato ), che è prontamente calcolato comeχ2(1)=1.83p=0,1764M2=(n-1)r2

cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)

Come si può vedere, non ci sono molte prove di una chiara associazione tra le due variabili. Come fatto da Agresti, se scegliamo di ricodificare i livelli di alcol come {0,0.5,1.5,4,7}, che utilizza valori di fascia media per una scala continua ipotizzata con l'ultimo punteggio alquanto puramente arbitrario, concluderemmo a un effetto maggiore del consumo materno di alcol sullo sviluppo della malformazione congenita:

lbl_test(malform ~ alcohol, data=tab3.7.df,         
         scores=list(alcohol=c(0,0.5,1.5,4,7)))

fornisce una statistica di prova di 6,57 con un valore p associato di 0,01037.

Esistono schemi di codifica alternativi, compresi i midrank (nel qual caso, torniamo a Spearman invece di Pearson ) che viene discussa da Agresti, ma spero che tu catturi l'idea generale qui: è meglio selezionare punteggi che riflettano effettivamente una misura ragionevole della distanza tra le categorie adiacenti della variabile ordinale e una spaziatura uguale è spesso un buon compromesso (in assenza di giustificazione teorica).ρr

Usando l'approccio GLM, procederemmo come segue. Ma prima controlla come viene codificato l'alcol in R:

class(tab3.7.df$alcohol)

È un semplice fattore non ordinato ( "factor"), quindi un predittore nominale. Ora, qui ci sono tre modelli in cui consideriamo l'alcol come un predittore nominale, ordinale o continuo.

summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df, 
                    family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df, 
                    family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df, 
                    family=binomial))

L'ultimo caso assume implicitamente una scala a intervalli uguali e il è interpretato come ha fatto @ dmk38: riflette l'effetto di un aumento di una unità di alcol sul risultato attraverso il collegamento logit, ovvero l'aumento della probabilità di osservare una malformazione (rispetto a nessuna malformazione, cioè il rapporto di probabilità) è . Il test Wald non è significativo al solito livello del 5%. In questo caso, la matrice di progettazione include solo 2 colonne: la prima è una colonna costante di 1 per l'intercetta, la seconda è il valore numerico (da 1 a 5) per il predittore, come in una semplice regressione lineare. In sintesi, questo modello verifica un effetto lineare di Alcohol sul risultato (sulla scala logit).β^exp(θ^)=exp(0,228)=1.256

Tuttavia, negli altri due casi ( mod1e mod2), otteniamo un output diverso perché la matrice di progettazione utilizzata per modellare il predittore differisce, come può essere verificato usando:

model.matrix(mod1)
model.matrix(mod2)

Possiamo vedere che la matrice di progettazione associata per mod1include variabili fittizie per i livelli di di alcol (0 è sempre la linea di base) dopo il termine di intercettazione nella prima colonna, mentre nel caso di abbiamo quattro colonne di effetti con codice di contrasto (dopo la colonna di 1 per l'intercettazione). Il coefficiente per la categoria "3-5" è stimato a 1,03736 sotto , ma a 0,01633 sotto . Si noti che l'AIC e altre misure basate sulla probabilità rimangono, tuttavia, identiche tra questi due modelli.K-1mod2mod1mod2

Puoi provare ad assegnare nuovi punteggi ad Alcohol e vedere come influenzerà la probabilità prevista di una malformazione.


3
(+1) risposta molto approfondita. Aggiungo solo che è possibile ottenere test che assumono solo la monotonicità della relazione dose-risposta senza assegnare punteggi alla variabile ordinale usando la regressione isotonica, sebbene i metodi di simulazione o di permutazione siano di solito necessari per ottenere la distribuzione della statistica del test sotto il null. Vedi Salanti & Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
Onestop,

@onestop Grazie per questo riferimento. Lo guarderò.
chl

6

è perfettamente corretto utilizzare un predittore categorico in un modello di regressione logit (o OLS) se i livelli sono ordinali. Ma se hai una ragione per trattare ogni livello come discreto (o se in effetti la tua variabile categoriale è nominale piuttosto che ordinale), allora, in alternativa alla codifica fittizia, puoi anche usare la codifica a contrasto ortogonale. Per una discussione molto completa e accessibile, vedi Judd, CM, McClelland, GH & Ryan, CS Analisi dei dati: un approccio di confronto tra modelli, Edn. 2 °. (Routledge / Taylor e Francis, New York, NY; 2008) o semplicemente "codifica del contrasto" di Google


Stai dicendo che va bene trattare i dati ordinali come dati di intervallo nel modello? In tal caso, come posso interpretare il coefficiente se non conosco la "distanza" tra i livelli?
fgregg,

3
Sì. Il coefficiente riflette la variazione delle probabilità del registro per ogni incremento della variazione nel predittore ordinale. Questa specifica del modello (molto comune) presuppone che il predittore abbia un impatto lineare sui suoi incrementi. Per testare l'assunto, è possibile confrontare un modello in cui si utilizza la variabile ordinale come un singolo predittore con uno in cui si discretizzano le risposte e le trattano come predittori multipli (come si farebbe se la variabile fosse nominale); se quest'ultimo modello non risulta in una misura significativamente migliore, allora è ragionevole considerare ogni incremento come avere un effetto lineare.
dmk38,

Ti do +1 perché questa risposta suona bene, e immagino che @fgregg avrebbe fatto lo stesso (con abbastanza rep).
chl

Penso anche che questo sia un esempio perfetto, perché il cambiamento nelle probabilità del registro può essere interpretato con variabili ordinali.
SmallChess
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.