Cos'è la carenza di rango e come gestirla?


87

Il montaggio di una regressione logistica con lme4 termina con

Error in mer_finalize(ans) : Downdated X'X is not positive definite. 

Una probabile causa di questo errore è apparentemente la carenza di rango. Cos'è la carenza di rango e come devo affrontarla?


2
Ti consiglierei di verificare che nessuna delle tue variabili sia costante (ovvero nessuna varianza). Se stai bene su quel punteggio controlla se hai variabili complesse o infinite.
tristan,

3
Normalmente significa che una o più variabili non sono linearmente indipendenti, in quanto la variabile problematica può essere espressa come una combinazione delle altre variabili. Il pacchetto R caretha una funzione chiamata findLinearCombosche ti dirà quali sono le variabili problematiche.
richiemorrisroe,

2
Sono d'accordo con richiemorrisroe. Dal momento che dice che X'X non è definito positivo, penso che stiano insinuando che la matrice di progettazione X'X sia singolare e quindi non abbia un rango completo. Quindi almeno una delle covariate può essere scritta come combinazioni lineari esatte di altre covariate.
Michael Chernick,

Risposte:


123

La carenza di rango in questo contesto indica che le informazioni contenute nei dati non sono sufficienti per stimare il modello desiderato. Deriva da molte origini. Parlerò qui della modellazione in un contesto abbastanza generale, piuttosto che della regressione esplicitamente logistica, ma tutto si applica ancora al contesto specifico.

La carenza può derivare da dati troppo pochi. In generale, non è possibile stimare in modo univoco n parametri con meno di n punti dati. Ciò non significa che tutto ciò di cui hai bisogno siano n punti, come se ci fosse del rumore nel processo, otterrai risultati piuttosto scarsi. Hai bisogno di più dati per aiutare l'algoritmo a scegliere una soluzione che rappresenterà tutti i dati, in un minimo senso di errore. Questo è il motivo per cui utilizziamo gli strumenti dei minimi quadrati. Di quanti dati hai bisogno? Mi è sempre stata posta questa domanda in una vita passata e la risposta è stata più di quello che hai, o quanto più puoi ottenere. :)

A volte potresti avere più dati del necessario, ma alcuni (troppi) punti sono replicati. La replica è BUONA nel senso che aiuta a ridurre il rumore, ma non aiuta ad aumentare il rango numerico. Supponiamo quindi di avere solo due punti dati. Non è possibile stimare un modello quadratico univoco attraverso i punti. Un milione di replicati di ogni punto non ti consentirà comunque di adattarti più di una linea retta, attraverso quelli che sono ancora effettivamente solo una coppia di punti. In sostanza, la replica non aggiunge contenuto informativo. Tutto ciò che fa è ridurre il rumore nei luoghi in cui sono già presenti informazioni.

A volte hai informazioni nei posti sbagliati. Ad esempio, non puoi adattare un modello quadratico bidimensionale se tutto ciò che hai sono punti che si trovano tutti in una linea retta in due dimensioni. Cioè, supponiamo di avere punti sparsi solo lungo la linea x = y nel piano e che si desidera adattare un modello per la superficie z (x, y). Anche con miliardi di punti (nemmeno replicati) avrai informazioni sufficienti per stimare in modo intelligente più di un modello costante. Sorprendentemente, questo è un problema comune che ho visto nei dati campionati. L'utente si chiede perché non riesca a costruire un buon modello. Il problema è incorporato proprio nei dati che hanno campionato.

A volte è semplicemente la scelta del modello. Questo può essere visto come "dati insufficienti", ma dall'altra parte. Desideri stimare un modello complicato, ma hai fornito dati insufficienti per farlo.

In tutti i casi di cui sopra, la risposta è ottenere più dati, campionati in modo intelligente da luoghi che forniranno informazioni sul processo che attualmente ti manca. La progettazione di esperimenti è un buon punto di partenza.

Tuttavia, anche buoni dati sono talvolta inadeguati, almeno numericamente. (Perché accadono cose brutte a dati buoni?) Il problema qui può essere correlato al modello. Potrebbe non essere altro che una scarsa scelta di unità. Potrebbe derivare dalla programmazione del computer effettuata per risolvere il problema. (Ugh! Da dove cominciare?)

Innanzitutto, parliamo di unità e ridimensionamento. Supponiamo che io provi a risolvere un problema in cui una variabile è MOLTO ordini di grandezza più grandi di un altro. Ad esempio, supponiamo di avere un problema che riguarda la mia altezza e il numero di scarpe. Misurerò la mia altezza in nanometri. Quindi la mia altezza sarebbe di circa 1,78 miliardi (1,78e9) nanometri. Certo, sceglierò di misurare la misura della mia scarpa in chilo-parsec, quindi 9.14e-21 chilo-parsec. Quando si esegue la modellazione della regressione, la regressione lineare riguarda interamente l'algebra lineare, che comporta combinazioni lineari di variabili. Il problema qui è che questi numeri sono diversi per moltissimi ordini di grandezza (e nemmeno per le stesse unità). La matematica fallirà quando un programma per computer cerca di aggiungere e sottrarre numeri che variano di così tanti ordini di grandezza (per una doppia precisione numero,

Il trucco è di solito usare unità comuni, ma su alcuni problemi anche questo è un problema quando le variabili variano di troppi ordini di grandezza. Più importante è ridimensionare i numeri in modo che siano simili in grandezza.

Successivamente, potresti vedere problemi con numeri grandi e piccole variazioni in quei numeri. Supponiamo quindi di provare a costruire un modello polinomiale di ordine moderatamente alto con dati in cui tutti gli input si trovano nell'intervallo [1,2]. Quadratura, cubatura, ecc., I numeri dell'ordine di 1 o 2 non causeranno problemi quando si lavora in aritmetica a doppia precisione. In alternativa, aggiungi 1e12 ad ogni numero. In teoria, la matematica lo permetterà. Tutto ciò che fa è spostare qualsiasi modello polinomiale che costruiamo sull'asse x. Avrebbe esattamente la stessa forma, ma sarebbe tradotto da 1e12 a destra. In pratica, l'algebra lineare fallirà miseramente a causa di problemi di carenza di rango. Non hai fatto altro che tradurre i dati, ma all'improvviso inizi a vedere apparire matrici singolari.

Di solito il commento fatto sarà un suggerimento per "centrare e ridimensionare i dati". In effetti questo dice di spostare e ridimensionare i dati in modo che abbiano una media vicino allo zero e una deviazione standard che è approssimativamente 1. Ciò migliorerà notevolmente il condizionamento della maggior parte dei modelli polinomiali, riducendo i problemi di carenza di rango.

Esistono altri motivi per carenza di rango. In alcuni casi è integrato direttamente nel modello. Ad esempio, supponiamo di fornire la derivata di una funzione, posso inferire in modo univoco la funzione stessa? Certo che no, poiché l'integrazione implica una costante di integrazione, un parametro sconosciuto che viene generalmente dedotto dalla conoscenza del valore della funzione ad un certo punto. In effetti, questo a volte insorge anche in problemi di stima, in cui la singolarità di un sistema deriva dalla natura fondamentale del sistema in esame.

Ho sicuramente tralasciato alcune delle molte ragioni della carenza di rango in un sistema lineare, e ormai sono in chiacchiere da troppo tempo. Spero di essere riuscito a spiegare quelli che ho trattato in termini semplici e un modo per alleviare il problema.


42

Per la definizione del rango di una matrice, puoi fare riferimento a qualsiasi buon libro di testo sull'algebra lineare o dare un'occhiata alla pagina di Wikipedia .

n×pXnpp×pXTX(XTX)1

XXnXTX

(XTX)1

X


23

La risposta di user974 è fantastica dal punto di vista della modellazione e la risposta di gui11aume è fantastica dal punto di vista matematico. Voglio affinare la prima risposta rigorosamente da una prospettiva di modellazione mista: in particolare una prospettiva di modellazione mista generalizzata (GLMM). Come puoi vedere, hai fatto riferimento alla funzione R mer_finalizeche si trova nel lme4pacchetto fantastico . Dici anche che stai adattando un modello di regressione logistica.

Ci sono molti problemi che sorgono con questi tipi di algoritmi numerici. La questione della struttura matriciale della matrice modello di effetti fissi merita sicuramente di essere presa in considerazione, come ha accennato l'utente974. Ma questo è molto facile da valutare, è sufficiente calcolare il model.matrixtuo formula=e gli data=argomenti in un modello e prendere il suo determinante usando la detfunzione. Gli effetti casuali, tuttavia, complicano notevolmente l'interpretazione, la routine di stima numerica e l'inferenza sugli effetti fissi (quelli che in genere vengono considerati coefficienti di regressione in un modello di regressione "regolare").

Supponiamo che, nel caso più semplice, sia installato solo un modello di intercettazione casuale. Quindi fondamentalmente stai considerando che ci sono migliaia di fonti non misurate di eterogeneità che sono mantenute costanti in misure ripetute all'interno dei cluster. Si stima un'intercettazione "grande", ma si tiene conto dell'eterogeneità assumendo che le intercettazioni specifiche del cluster abbiano una distribuzione normale media0. Le intercettazioni vengono stimate in modo iterativo e utilizzate per aggiornare gli effetti del modello fino a quando non viene raggiunta la convergenza (la probabilità di log - o una sua approssimazione - viene massimizzata). Il modello misto è molto facile da immaginare, ma matematicamente la probabilità è molto complessa e soggetta a problemi con singolarità, minimie locali e punti di confine (rapporti di probabilità = 0 o infinito). I modelli misti non hanno probabilità quadratiche come i GLM canonici.

Sfortunatamente, Venerables e Ripley non hanno investito molto nella diagnostica per problemi di convergenza come i tuoi. È praticamente impossibile persino speculare sulla miriade di possibili errori che portano a un tale messaggio. Considera, quindi, i tipi di diagnostica che utilizzo di seguito:

  1. Quante osservazioni ci sono per cluster?
  2. Quali sono i risultati di un modello marginale che utilizza GEE?
  3. Cos'è l'ICC dei cluster? L'eterogeneità all'interno del cluster è vicina all'eterogeneità tra cluster?
  4. Adatta uno stimatore in 1 passaggio e osserva gli effetti casuali stimati. Sono approssimativamente normali?
  5. Montare il modello misto bayesiano e osservare la distribuzione posteriore per gli effetti fissi. Sembrano avere una distribuzione approssimativamente normale?
  6. Guarda un pannello dei grappoli che mostrano l'esposizione o il regressore di interesse contro il risultato usando un effetto più fluido. Le tendenze sono coerenti e chiare o ci sono molti modi possibili per spiegare tali tendenze? (ad es. qual è il "rischio" tra i soggetti non esposti, l'esposizione appare protettiva o dannosa?)
  7. È possibile limitare il campione a soggetti che hanno solo un numero sufficiente di osservazioni per persona (diciamo, n = 5 o n = 10) per stimare l'effetto del trattamento "ideale"?

In alternativa, puoi prendere in considerazione alcuni approcci di modellazione diversi:

  1. Esistono pochi cluster o punti temporali sufficienti per poter utilizzare un effetto fisso (come indicatori di gruppo o un effetto temporale polinomiale) per modellare il livello di cluster / eterogeneità autoregressiva?
  2. È appropriato un modello marginale (usare un GEE per migliorare l'efficienza della stima dell'errore standard, ma usando ancora solo effetti fissi)
  3. Un modello bayesiano con un precedente informativo sugli effetti casuali potrebbe migliorare la stima?

2
+1: grazie per aver affrontato la parte "mista" della domanda originale. Questo post integra perfettamente una serie già valida di risposte.
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.