Come comprendere l'output dalla funzione polr di R (regressione logistica ordinata)?


26

Sono nuovo di R, ho ordinato la regressione logistica e polr.

La sezione "Esempi" in fondo alla pagina di aiuto per polr (che adatta un modello di regressione logistica o probit a una risposta fattoriale ordinata) mostra

options(contrasts = c("contr.treatment", "contr.poly"))
house.plr <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
pr <- profile(house.plr)
plot(pr)
pairs(pr)
  • Quali informazioni prcontiene? La pagina di aiuto sul profilo è generica e non fornisce indicazioni per polr.

  • Cosa sta plot(pr)mostrando? Vedo sei grafici. Ognuno ha un asse X che è numerico, sebbene l'etichetta sia una variabile indicatore (sembra una variabile di input che è un indicatore per un valore ordinale). Quindi l'asse Y è "tau" che è completamente inspiegabile.

  • Cosa sta pairs(pr)mostrando? Sembra un diagramma per ogni coppia di variabili di input, ma di nuovo non vedo alcuna spiegazione degli assi X o Y.

  • Come si può capire se il modello si è adattato bene? summary(house.plr)mostra Deviance residua 3479.149 e AIC (Akaike Information Criterion?) del 3495.149. Quello è buono? Nel caso in cui siano utili solo come misure relative (cioè per confrontare con un altro modello adatto), qual è una buona misura assoluta? La devianza residua è distribuita approssimativamente al quadrato? È possibile utilizzare "% previsto correttamente" sui dati originali o una convalida incrociata? Qual è il modo più semplice per farlo?

  • Come si applica e si interpreta anovasu questo modello? I documenti dicono "Esistono metodi per le funzioni standard di adattamento dei modelli, tra cui predict, summary, vcov, anova". Tuttavia, i anova(house.plr)risultati in esecuzione inanova is not implemented for a single "polr" object

  • Come si interpretano i valori t per ciascun coefficiente? A differenza di alcuni modelli, qui non ci sono valori P.

Mi rendo conto che si tratta di molte domande, ma per me ha senso porre un unico pacchetto ("come posso usare questa cosa?") Piuttosto che 7 domande diverse. Qualsiasi informazione apprezzata.


3
@dfrankow Un po 'rozzo e sicuramente un aiuto molto parziale per le tue prime due domande, ma methods("profile")ti darà i metodi (S3 in questo caso) associati a un profileoggetto R , quindi vedrai che esiste un metodo dedicato per i polrrisultati, che puoi sfogliare on-line digitando getAnywhere("profile.polr")al prompt R.
chl

1
Grazie! Il codice sorgente è buono. La spiegazione sarebbe ancora migliore. :)
domenica

1
Qualcuno mi ha indicato "Modern Applied Statistics with S" di Venables e Ripley. La sezione 7.3 ha "Un esempio di tabella di frequenza a quattro vie" che tratta ampiamente questo modello di casa. Lettura ..
dfrankow

In realtà la sezione è "un modello di probabilità proporzionale"
dfrankow

Risposte:


17

Suggerirei di leggere libri sull'analisi dei dati categorici (cfr. Analisi dei dati categorici di Alan Agresti, 2002) per una migliore spiegazione e comprensione della regressione logistica ordinata . Tutte le domande che poni hanno sostanzialmente una risposta in alcuni capitoli di tali libri. Se sei interessato solo ad Resempi correlati, l' estensione dei modelli lineari in R di Julian Faraway (CRC Press, 2008) è un ottimo riferimento.

Prima di rispondere alle tue domande, la regressione logistica ordinata è un caso di modelli logit multinomiali in cui sono ordinate le categorie. Supponiamo di avere ordinato categorie e che per i singoli , con risposta ordinale , per . Con una risposta ordinata, è spesso più facile lavorare con le probabilità cumulative, . Le probabilità cumulative sono in aumento e invarianti rispetto alla combinazione di categorie adiacenti. Inoltre, , quindi abbiamo bisogno solo delle probabilità del modello .JiYipij=P(Yi=j)j=1,...,Jγij=P(Yij)γiJ=1J1

Ora vogliamo collegare s alle covariate . Nel tuo caso, è dotato di 3 livelli ordinate: , , . Ha più senso trattarli come ordinati piuttosto che non ordinati. Le restanti variabili sono le tue covariate. Il modello specifico che stai prendendo in considerazione è il modello di probabilità proporzionale ed è matematicamente equivalente a:γijxSatlowmediumhigh

logit γj(xi)=θjβTxi,j=1J1
where γj(xi)=P(Yij|xi)

Si chiama così perché le probabilità relative per confrontano e sono:Yjx1x2

(γj(x1)1γj(x1))/(γj(x2)1γj(x2))=exp(βT(x1x2))

Si noti che l'espressione sopra non dipende da . Naturalmente, l'assunzione di probabilità proporzionali deve essere verificata per un determinato set di dati.j

Ora risponderò ad alcune (1, 2, 4) domande.

Come si può capire se il modello si è adattato bene? il sommario (house.plr) mostra Deviance residua 3479.149 e AIC (Akaike Information Criterion?) del 3495.149. Quello è buono? Nel caso in cui siano utili solo come misure relative (cioè per confrontare con un altro modello adatto), qual è una buona misura assoluta? La devianza residua è approssimativamente distribuita al quadrato? È possibile utilizzare "% previsto correttamente" sui dati originali o una convalida incrociata? Qual è il modo più semplice per farlo?

Un modello adatto polrè uno speciale glm, quindi tutti i presupposti che valgono per una glmpresa tradizionale qui. Se ti prendi cura dei parametri correttamente, puoi capire la distribuzione. In particolare, per testare se il modello è buono o no potresti voler fare un test di bontà di adattamento , che verifica il seguente null (nota che è sottile, per lo più vuoi rifiutare il null, ma qui non vuoi rifiutalo per ottenere un buon adattamento):

Ho: current model is good enough 

Per questo useresti il ​​test chi-quadro . Il valore p si ottiene come:

1-pchisq(deviance(house.plr),df.residual(house.plr))

Il più delle volte si spera di ottenere un valore p maggiore di 0,05 in modo da non rifiutare il valore nullo per concludere che il modello è adatto (la correttezza filosofica viene ignorata qui).

AIC dovrebbe essere alto per una buona misura allo stesso tempo, non si desidera avere un gran numero di parametri. stepAICè un buon modo per verificarlo.

Sì, puoi sicuramente utilizzare la convalida incrociata per vedere se le previsioni sono valide. Vedi predictfunzione (opzione:) type = "probs"in ?polr. Tutto ciò di cui devi occuparti sono le covariate.

Quali informazioni contiene pr? La pagina di aiuto sul profilo è generica e non fornisce indicazioni per polr

Come sottolineato da @chl e altri, prcontiene tutte le informazioni necessarie per ottenere elementi della configurazione e altre informazioni relative alla probabilità di polr fit. Tutti gli glms sono adatti usando il metodo di stima del minimo quadrato ponderato iterativamente per la probabilità del log. In questa ottimizzazione si ottengono molte informazioni (consultare i riferimenti) che saranno necessarie per il calcolo della matrice di covarianza della varianza, CI, valore t ecc. Include tutte.

Come si interpretano i valori t per ciascun coefficiente? A differenza di alcuni modelli> si adatta, non ci sono valori P qui.

A differenza del normale modello lineare (speciale glm), gli altri glmnon hanno la bella distribuzione t per i coefficienti di regressione. Pertanto, tutto ciò che puoi ottenere sono le stime dei parametri e la loro matrice di covarianza della varianza asintotica usando la teoria della massima verosimiglianza. Perciò:

Variance(β^)=(XTWX)1ϕ^

La stima divisa per il suo errore standard è ciò che BDR e WV chiamano t-value (presumo che la MASSconvenzione sia qui). È equivalente al valore t della normale regressione lineare ma non segue una distribuzione t. Usando CLT, viene distribuito asintoticamente normalmente. Ma preferiscono non usare questo approssimativo (immagino), quindi nessun valore p. (Spero di non sbagliarmi, e se lo sono, spero che BDR non sia su questo forum. Spero inoltre che qualcuno mi corregga se sbaglio.)


Aggiungerò altro.
suncoolsu

1
Grazie per questo. L'ho letto più volte. Rimangono molte domande. 1. Funzionalmente in R, come si verifica l'assunzione delle probabilità proporzionale? 2. Sei sicuro che il test chi-quadrato sia corretto? In questo esempio restituisce 0, che significa .. adattamento scadente? Ma alcuni dei valori di t sono piuttosto alti (InflHigh 10.1, InflMedium 5.4, ContHigh 3.7). 3. Che cosa mostrano i grafici o le coppie?
Alfredo

Grazie per la risposta estesa suncoolsu. Sono in una situazione simile e ho un paio di domande. 1. Ottengo anche 0 per ogni modello usando la tua equazione del test chi-sq. 2. La pagina di Wikipedia su AIC dice "il modello preferito è quello con il valore AIC minimo", ma hai detto, "AIC dovrebbe essere alto per una buona misura". Sto cercando di riconciliare questi account.
Sam Swift,

@dfrankow e @Sam Swift. Mi dispiace, sono stato un po 'impegnato a scrivere alcuni documenti. Ok - se ottieni un p-value = 0, significa che il modello NON è adatto perché il test di bontà dell'adattamento fallisce. Per quanto riguarda il problema di AIC, Wikipedia e io stiamo usando una convenzione diversa per questo. Sto usando quello utilizzato da BDR e WV. (cfr. Estensione dei modelli lineari in R, del Dr. Julian Faraway)
suncoolsu

Ci sono alcune domande dedicate per i valori 0/1 p e l'interpretazione AIC che potresti trovare utili: stats.stackexchange.com/questions/15223/… stats.stackexchange.com/questions/81427/…
Scott

3

Mi è piaciuta molto la conversazione qui, tuttavia sento che le risposte non hanno indirizzato correttamente tutti i componenti (molto buoni) alla domanda che hai posto. La seconda metà della pagina di esempio polrriguarda la profilazione. Un buon riferimento tecnico qui è Venerables e Ripley che discutono di profilazione e cosa fa. Questa è una tecnica fondamentale quando si supera la zona di comfort di adattamento di modelli familiari esponenziali con piena probabilità (GLM regolari).

La partenza chiave qui è l'uso di soglie categoriche. Noterai che POLR non stima un normale termine di intercettazione. Piuttosto, ci sono parametri di fastidio : soglie per le quali il rischio adattato tende a cadere in un certo cumulativo delle possibili categorie. Poiché queste soglie non sono mai stimate congiuntamente, la loro covarianza con i parametri del modello non è nota. A differenza dei GLM, non possiamo "perturbare" un coefficiente di un importo ed essere certi di come potrebbe influenzare altre stime. Usiamo la profilazione per fare questo tenendo conto delle soglie di disturbo. Profiling è un argomento immenso, ma fondamentalmente l'obiettivo è robusto misurando la covarianza dei coefficienti di regressione quando il modello massimizza una probabilità irregolare, come con , , ek1klmernlspolrglm.nb.

La pagina di aiuto per ?profile.glmdovrebbe essere utile poiché gli polroggetti sono essenzialmente GLM (oltre alle soglie categoriche). Infine, puoi effettivamente raggiungere il picco del codice sorgente, se serve, usando getS3method('profile', 'polr'). Uso molto questa getS3methodfunzione perché, mentre R sembra insistere sul fatto che molti metodi dovrebbero essere nascosti, si può imparare sorprendentemente molto sull'implementazione e sui metodi rivedendo il codice.

• Quali informazioni contiene pr? La pagina di aiuto sul profilo è generica e non fornisce indicazioni per polr.

prè un profile.polr, profileoggetto (classe ereditata profile). C'è una voce per ogni covariata. Il profiler scorre su ogni covariata, ricalcola l'adattamento ottimale del modello con quella covariata fissata su una quantità leggermente diversa. L'output mostra il valore fisso della covariata misurato come una differenza "z-score" in scala dal suo valore stimato e gli effetti fissi risultanti in altre covariate. Ad esempio, se guardi pr$InflMedium, noterai che, quando "z" è 0, gli altri effetti fissi sono gli stessi che si trovano nell'adattamento originale.

• Che cosa mostra la trama (pr)? Vedo sei grafici. Ognuno ha un asse X che è numerico, sebbene l'etichetta sia una variabile indicatore (sembra una variabile di input che è un indicatore per un valore ordinale). Quindi l'asse Y è "tau" che è completamente inspiegabile.

Ancora una volta, ?plot.profilefornisce la descrizione. La trama mostra approssimativamente come i coefficienti di regressione covary. tau è la differenza in scala, il punteggio z prima, quindi il suo valore 0 fornisce i coefficienti di adattamento ottimali, rappresentati con un segno di spunta. Non diresti che questo adattamento è così ben educato, ma quelle "linee" sono in realtà spline. Se la probabilità si comportasse in modo molto irregolare nella misura ottimale, osserveresti un comportamento strano e imprevedibile nella trama. Ciò dovrebbe essere utile per stimare l'output utilizzando una stima dell'errore più solida (bootstrap / jackknife), per calcolare gli elementi della configurazione usando method='profile', per ricodificare le variabili o per eseguire altre attività diagnostiche.

• Che cosa mostra le coppie (pr)? Sembra un diagramma per ogni coppia di variabili di input, ma ancora una volta non vedo alcuna spiegazione degli assi X o Y.

Il file della guida dice: "Il metodo delle coppie mostra, per ogni coppia di parametri xey, due curve che si intersecano alla massima stima di verosimiglianza, che danno i loci dei punti in cui le tangenti ai contorni della verosimiglianza del profilo bivariato diventano verticali e orizzontale, rispettivamente. Nel caso di una probabilità del profilo normale esattamente bivariata, queste due curve sarebbero linee rette che danno i mezzi condizionali di y | x e x | y, e i contorni sarebbero esattamente ellittici. " Fondamentalmente, ti aiutano di nuovo a visualizzare le ellissi di confidenza. Gli assi non ortogonali indicano misure altamente covariabili, come InfMedium e InfHigh che sono intuitivamente molto correlate. Ancora una volta, le probabilità irregolari porterebbero a immagini piuttosto sconcertanti qui.

• Come si può capire se il modello si è adattato bene? il sommario (house.plr) mostra Deviance residua 3479.149 e AIC (Akaike Information Criterion?) del 3495.149. Quello è buono? Nel caso in cui siano utili solo come misure relative (cioè per confrontare con un altro modello adatto), qual è una buona misura assoluta? La devianza residua è approssimativamente distribuita al quadrato? È possibile utilizzare "% previsto correttamente" sui dati originali o una convalida incrociata? Qual è il modo più semplice per farlo?

Un'ipotesi che è buona da valutare è l'assunzione di probabilità proporzionale. Ciò si riflette in qualche modo nel test globale (che valuta polr rispetto a un modello loglineare saturo). Una limitazione qui è che con dati di grandi dimensioni, i test globali falliscono sempre. Di conseguenza, è consigliabile utilizzare la grafica e ispezionare le stime (beta) e la precisione (SE) per il modello loglineare e l'adattamento polr. Se non sono assolutamente d'accordo, forse qualcosa non va.

Con i risultati ordinati, è difficile definire un accordo percentuale. Come sceglierete un classificatore basato sul modello e se lo farete come otterrete prestazioni scadenti da un classificatore scarso. modeè una cattiva scelta. Se ho 10 logit di categoria e la mia previsione è sempre esclusa da una categoria, forse non è una brutta cosa. Inoltre, il mio modello potrebbe prevedere correttamente una probabilità del 40% di una risposta 0, ma anche una probabilità del 20% di 8, 9, 10. Quindi se osservo 9 è buono o cattivo? Se è necessario misurare l'accordo, utilizzare un kappa ponderato o anche MSE. Il modello loglinear produrrà sempre il miglior accordo. Non è quello che fa il POLR.

• Come si applica e si interpreta anova su questo modello? I documenti dicono "Esistono metodi per le funzioni standard di adattamento dei modelli, tra cui predict, summary, vcov, anova". Tuttavia, l'esecuzione di anova (house.plr) in anova non è implementata per un singolo oggetto "polr"

È possibile testare i modelli nidificati con waldteste lrtestnel lmtestpacchetto in R. Ciò equivale a ANOVA. L'interpretazione è esattamente la stessa dei GLM.

• Come si interpretano i valori t per ciascun coefficiente? A differenza di alcuni modelli, qui non ci sono valori P.

Ancora una volta, a differenza dei modelli lineari, il modello POLR è in grado di avere problemi con probabilità irregolare, quindi l'inferenza basata sull'Assia può essere molto instabile. È analogo al montaggio di modelli misti, vedere ad esempio il file di aiuto su confint.merModper il pacchetto lme4. Qui, le valutazioni fatte con la profilazione mostrano che la covarianza è ben educata. I programmatori lo avrebbero fatto di default, tranne per il fatto che la profilazione può essere molto intensiva dal punto di vista computazionale, e quindi la lasciano nelle tue mani. Se devi vedere l'inferenza basata su Wald, usa coeftest(house.plr)dal lrtestpacchetto.


2

Per "testare" (cioè valutare) il presupposto delle probabilità proporzionali in R, è possibile utilizzare residuals.lrm () nel pacchetto di progettazione di Frank Harrell Jr.. Se si digita? Residuals.lrm, esiste un esempio rapido da replicare di come Frank Harrell raccomanda di valutare l'assunzione di probabilità proporzionale (cioè, visivamente, piuttosto che mediante una prova a pulsante). Le stime di progettazione hanno ordinato regressioni logistiche utilizzando lrm (), che è possibile sostituire polr () da MASS.

Per un esempio più formale di come testare visivamente l'assunzione di probabilità proporzionale in R, vedere: Paper: Modelli di regressione della risposta ordinale in ecologia Autore / i: Antoine Guisan e Frank E. Harrell Fonte: Journal of Vegetation Science, Vol. 11, n. 5 (ottobre 2000), pagg. 617-626


3
Apprezzo sinceramente la tua risposta. Tuttavia, lo scopo di StackExchange è fornire risposte, non riferimenti. Gli statistici sembrano particolarmente inclini a questo problema di riferimento. C'è qualche dettaglio che puoi aggiungere su come usare residuals.lrm? Ad esempio, un comando di esempio e un esempio di interpretazione del grafico per l'esempio house.plr?
dfrankow,

1
Aggiornamento dal sito Web dell'autore: "Il pacchetto Design è ora obsoleto. Gli utenti R devono invece utilizzare il pacchetto rms". Mark, la tua risposta è stata molto utile per me.
Tal Galili,
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.