Cosa fare con la correlazione di effetti casuali uguale a 1 o -1?


9

L'occorrenza non così rara quando si ha a che fare con modelli misti massimi complessi (stimando tutti i possibili effetti casuali per dati e modello dati) è perfetta (+1 o -1) o correlazione quasi perfetta tra alcuni effetti casuali. Ai fini della discussione, osserviamo il seguente modello e riepilogo del modello

Model: Y ~ X*Cond + (X*Cond|subj)

# Y = logit variable  
# X = continuous variable  
# Condition = values A and B, dummy coded; the design is repeated 
#             so all participants go through both Conditions  
# subject = random effects for different subjects  

Random effects:
 Groups  Name             Variance Std.Dev. Corr             
 subject (Intercept)      0.85052  0.9222                    
         X                0.08427  0.2903   -1.00            
         CondB            0.54367  0.7373   -0.37  0.37      
         X:CondB          0.14812  0.3849    0.26 -0.26 -0.56
Number of obs: 39401, groups:  subject, 219

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)       2.49686    0.06909   36.14  < 2e-16 ***
X                -1.03854    0.03812  -27.24  < 2e-16 ***
CondB            -0.19707    0.06382   -3.09  0.00202 ** 
X:CondB           0.22809    0.05356    4.26 2.06e-05 ***

La presunta ragione dietro queste correlazioni perfette è che abbiamo creato un modello che è troppo complesso per i dati che abbiamo. Il consiglio comune che viene dato in queste situazioni è (ad esempio, Matuschek et al., 2017; carta ) di fissare i coefficienti sovra parametrizzati a 0, poiché tali modelli degeneri tendono ad abbassare la potenza. Se osserviamo un marcato cambiamento negli effetti fissi in un modello ridotto, dovremmo accettarlo; se non ci sono cambiamenti, allora non ci sono problemi ad accettare quello originale.

Tuttavia, supponiamo che non siamo interessati solo agli effetti fissi controllati per RE (effetti casuali), ma anche alla struttura RE. Nel caso specifico, sarebbe teoricamente corretto supporre che Intercepte la pendenza Xabbia una correlazione negativa diversa da zero. Seguono diverse domande:

  1. Cosa fare in tali situazioni? Dovremmo segnalare la correlazione perfetta e dire che i nostri dati non sono "abbastanza buoni" per stimare la correlazione "reale"? O dovremmo segnalare il modello di correlazione 0? O forse dovremmo provare a impostare qualche altra correlazione su 0 nella speranza che quella "importante" non sia più perfetta? Non credo che ci siano risposte corrette al 100% qui, mi piacerebbe soprattutto sentire le tue opinioni.

  2. Come scrivere il codice che fissa la correlazione di 2 effetti casuali specifici su 0, senza influenzare le correlazioni tra altri parametri?


Il pacchetto nlme offre un controllo accurato della matrice varianza-covarianza degli effetti casuali. Non ne ho mai avuto bisogno, ma rileggerei i modelli ad effetti misti in S e S-PLUS (Pinheiro e Bates, 2000) se lo facessi.
Roland

3
Un radicale alternativa è quella di regolarizzare il modello, vale a dire adattare un modello bayesiano con priori un po 'informative sulle strutture effetti casuali (ad esempio via blme, MCMCglmm, rstanarm, brms...)
Ben Bolker

@BenBolker Ben. Non sono sicuro che sia un'idea radicale, poiché il montaggio di un modello non regolamentato potrebbe essere il modo più radicale di adattarsi a un modello;)
D_Williams

Grazie a tutti ragazzi per ottime risposte ... Sfortunatamente, sono stato offline per un paio di giorni, ma sono tornato.
Utente 326868

Risposte:


13

Matrici di covarianza ad effetto casuale singolari

Ottenere una stima della correlazione dell'effetto casuale di +1 o -1 significa che l'algoritmo di ottimizzazione ha raggiunto "un limite": le correlazioni non possono essere superiori a +1 o inferiori a -1. Anche se non ci sono errori o avvisi espliciti di convergenza, ciò indica potenzialmente alcuni problemi di convergenza perché non ci aspettiamo che le reali correlazioni si trovino al limite. Come hai detto, questo di solito significa che non ci sono dati sufficienti per stimare tutti i parametri in modo affidabile. Matuschek et al. Il 2017 afferma che in questa situazione il potere può essere compromesso.

Un altro modo per raggiungere un limite è ottenere una stima della varianza di 0: Perché ottengo la varianza zero di un effetto casuale nel mio modello misto, nonostante alcune variazioni nei dati?

4×44×4(prestampa non pubblicata) consiglia di utilizzare l'analisi dei componenti principali (PCA) per verificare se la matrice di covarianza ottenuta è singolare. In tal caso, suggeriscono di trattare questa situazione allo stesso modo delle situazioni singolari sopra menzionate.

Quindi che si fa?

Se non ci sono abbastanza dati per stimare tutti i parametri di un modello in modo affidabile, dovremmo considerare di semplificare il modello. Prendendo il tuo modello di esempio X*Cond + (X*Cond|subj), ci sono vari modi possibili per semplificarlo:

  1. Rimuovi uno degli effetti casuali, di solito la correlazione di ordine più alto:

    X*Cond + (X+Cond|subj)
  2. Sbarazzarsi di tutti i parametri di correlazione:

    X*Cond + (X*Cond||subj)

    Aggiornamento: come osserva @Henrik, la ||sintassi rimuoverà le correlazioni solo se tutte le variabili alla sua sinistra sono numeriche. Se Condsono coinvolte variabili categoriche (come ), si dovrebbe piuttosto usare il suo afexpacchetto conveniente (o ingombranti soluzioni manuali). Vedi la sua risposta per maggiori dettagli.

  3. Sbarazzarsi di alcuni dei parametri di correlazione suddividendo il termine in diversi, ad esempio:

    X*Cond + (X+Cond|subj) + (0+X:Cond|subj)
  4. Vincola la matrice di covarianza in un modo specifico, ad esempio impostando una correlazione specifica (quella che ha raggiunto il limite) a zero, come suggerisci. Non esiste un modo integrato lme4per raggiungere questo obiettivo. Vedi la risposta di @ BenBolker su SO per una dimostrazione di come ottenere questo risultato tramite un hacking intelligente.

Contrariamente a quanto hai detto, non credo che Matuschek et al. Il 2017 raccomanda specificamente il n. 4. L'essenza di Matuschek et al. 2017 e Bates et al. Il 2015 sembra essere quello che inizia con il modello massimo alla Barr et al. 2013 e quindi diminuisce la complessità fino a quando la matrice di covarianza è al massimo grado. (Inoltre, raccomandano spesso di ridurre ulteriormente la complessità, al fine di aumentare la potenza.) Aggiornamento: al contrario, Barr et al. consiglia di ridurre la complessità SOLO se il modello non converge; sono disposti a tollerare matrici di covarianza singolari. Vedi la risposta di @Henrik.

Se uno è d'accordo con Bates / Matuschek, allora penso che sia giusto provare diversi modi per ridurre la complessità al fine di trovare quello che fa il lavoro facendo "il minimo danno". Guardando la mia lista sopra, la matrice di covarianza originale ha 10 parametri; # 1 ha 6 parametri, # 2 ha 4 parametri, # 3 ha 7 parametri. È impossibile stabilire quale modello si sbarazzerà delle correlazioni perfette senza adattarle.

Ma cosa succede se sei interessato a questo parametro?

La discussione sopra tratta la matrice di covarianza ad effetto casuale come un parametro di disturbo. Sollevi un'interessante domanda su cosa fare se sei specificamente interessato a un parametro di correlazione che devi "abbandonare" per ottenere una soluzione a pieno titolo significativa.

Notare che fissare il parametro di correlazione su zero non produrrà necessariamente BLUP ( ranef) che non sono correlati; in effetti, potrebbero non esserne minimamente interessati (vedi la risposta di @ Placidia per una dimostrazione ). Quindi un'opzione sarebbe quella di esaminare le correlazioni dei BLUP e segnalarlo.

Un'altra opzione, forse meno interessante, sarebbe quella di utilizzare il trattamento subjectcome un effetto fisso Y~X*cond*subj, ottenere le stime per ciascun soggetto e calcolare la correlazione tra di essi. Ciò equivale a eseguire Y~X*condregressioni separate per ciascun soggetto separatamente e ottenere le stime di correlazione da essi.


Vedi anche la sezione sui singoli modelli nelle FAQ sui modelli misti di Ben Bolker:

θ


1
Quello che mostra il mio esempio è che per le (Machine||Worker) lmerstime una varianza in più rispetto a per (Machine|Worker). Quindi ciò che lmerfa ||con i fattori non può essere descritto da "questo rimuove solo le correlazioni tra i fattori, ma non tra i livelli di un fattore categorico". Altera la struttura random effects in modo alquanto strano (si espande (Machine||Worker)a (1|Worker) + (0+Machine|Worker), quindi la varianza aggiuntivo). Sentiti libero di cambiare la mia modifica. Il mio punto principale è che in queste affermazioni deve essere chiarita la distinzione tra covariate numeriche e categoriche.
Henrik,

1
No, anche non funziona con le variabili binarie, vedere di persona: machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2)). In generale non funziona con i fattori dovuti a questa espansione e il modo in cui Rgestisce i fattori model.matrix.
Henrik,

@amoeba: Penso che tu abbia fatto un punto interessante suggerendo di passare ai ranefvalori per studiare la correlazione tra effetti casuali. Non sono troppo approfondito in questo argomento, ma so che di solito non è consigliabile lavorare con i valori estratti di ranef, ma piuttosto con correlazioni e varianze stimate. Qual è la tua opinione al riguardo? Inoltre, non so come si spiegherebbe al revisore che la correlazione nel modello non è stata postulata, ma calcoliamo comunque la correlazione dei valori estratti. Non ha senso
User33268,

1
@RockyRaccoon Sì, penso che sia meglio usare / segnalare il parametro di correlazione stimato, ma qui stiamo parlando della situazione in cui probabilmente non possiamo stimarla perché converge a 1. Ecco cosa scriverei in un documento: "Il modello completo è stato convertito alla soluzione con corr = 1, quindi seguendo i consigli in [citazioni] abbiamo usato un modello ridotto [dettagli]. La correlazione tra i BLUP ad effetto casuale in questo modello era 0.9. " Ancora una volta, quando non includi la correlazione, non stai vincolando il modello a trattarli come non correlati! Semplicemente non stai modellando questa correlazione esplicitamente.
ameba,

Ho un'altra domanda: le varianze vicine allo zero e le correlazioni perfette e quasi perfette degli effetti casuali implicano qualcosa sul valore reale dei parametri? Ad esempio, le correlazioni -1 implicano che la correlazione reale è almeno negativa e / o che è almeno diversa da zero? Più concretamente, se proviamo a stimare la correlazione che è 0 in realtà, è possibile ottenere una stima -1?
Utente 326868

9

Concordo con tutto quanto detto nella risposta di amoeba che fornisce un ottimo riassunto della discussione in corso su questo tema. Proverò ad aggiungere alcuni punti aggiuntivi e farò riferimento al volantino del mio recente corso di modello misto che riassume anche questi punti.


Sopprimere i parametri di correlazione (opzioni 2 e 3 nella risposta di ameba) via ||funziona solo per covariate numeriche lmere non per fattori. Questo è discusso in dettaglio con il codice di Reinhold Kliegl .

Tuttavia, il mio afexpacchetto fornisce la funzionalità per sopprimere la correlazione anche tra i fattori se l'argomento expand_re = TRUEnella chiamata a mixed()(vedi anche funzione lmer_alt()). Lo fa essenzialmente implementando l'approccio discusso da Reinhold Kliegl (ovvero, trasformando i fattori in covariate numeriche e specificando la struttura degli effetti casuali su quelli).

Un semplice esempio:

library("afex")
data("Machines", package = "MEMSS") # same data as in Kliegl code

# with correlation:
summary(lmer(score ~ Machine + (Machine  | Worker), data=Machines))
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr       
#  Worker   (Intercept) 16.6405  4.0793              
#           MachineB    34.5467  5.8776    0.48      
#           MachineC    13.6150  3.6899   -0.37  0.30
#  Residual              0.9246  0.9616              
# Number of obs: 54, groups:  Worker, 6

## crazy results:
summary(lmer(score ~ Machine + (Machine  || Worker), data=Machines))
# Random effects:
#  Groups   Name        Variance Std.Dev. Corr     
#  Worker   (Intercept)  0.2576  0.5076            
#  Worker.1 MachineA    16.3829  4.0476            
#           MachineB    74.1381  8.6103   0.80     
#           MachineC    19.0099  4.3600   0.62 0.77
#  Residual              0.9246  0.9616            
# Number of obs: 54, groups:  Worker, 6

## as expected:
summary(lmer_alt(score ~ Machine + (Machine  || Worker), data=Machines))
# Random effects:
#  Groups   Name         Variance Std.Dev.
#  Worker   (Intercept)  16.600   4.0743  
#  Worker.1 re1.MachineB 34.684   5.8894  
#  Worker.2 re1.MachineC 13.301   3.6471  
#  Residual               0.926   0.9623  
# Number of obs: 54, groups:  Worker, 6

Per chi non lo sapesse afex, la funzionalità principale per i modelli misti è di fornire valori p per gli effetti fissi, ad es .:

(m1 <- mixed(score ~ Machine + (Machine  || Worker), data=Machines, expand_re = TRUE))
# Mixed Model Anova Table (Type 3 tests, KR-method)
# 
# Model: score ~ Machine + (Machine || Worker)
# Data: Machines
#    Effect      df        F p.value
# 1 Machine 2, 5.98 20.96 **    .002
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1

summary(m1)  
# [...]
# Random effects:
#  Groups   Name         Variance Std.Dev.
#  Worker   (Intercept)  27.4947  5.2435  
#  Worker.1 re1.Machine1  6.6794  2.5845  
#  Worker.2 re1.Machine2 13.8015  3.7150  
#  Residual               0.9265  0.9626  
# Number of obs: 54, groups:  Worker, 6
# [...]

Dale Barr del Barr et al. (2013) il documento è più cauto nel raccomandare di ridurre la struttura degli effetti casuali rispetto a quello presentato nella risposta di ameba. In un recente scambio su Twitter ha scritto:

  • "La riduzione del modello introduce un rischio sconosciuto di anticonservazione e dovrebbe essere eseguita con cautela, se non del tutto." e
  • "La mia principale preoccupazione è che le persone comprendano i rischi associati alla riduzione del modello e che minimizzare questo rischio richieda un approccio più conservativo di quanto comunemente adottato (ad esempio, ogni pendenza testata a 0,05)."

Quindi si consiglia cautela.


Come uno dei revisori posso anche fornire alcune informazioni sul perché noi Bates et al. (2015) il documento è rimasto inedito. Io e gli altri due revisori (che hanno firmato, ma rimarranno senza nome qui) abbiamo avuto alcune critiche con l'approccio PCA (sembra senza principi e non ci sono prove che sia superiore in termini di potere). Inoltre, credo che tutti e tre abbiano criticato il fatto che l'articolo non si è concentrato sul problema di come specificare la struttura degli effetti casuali, ma cerca anche di introdurre i GAMM. Pertanto, il documento di Bates et al (2015) si è trasformato in Matuschek et al. (2017) articolo che affronta il problema della struttura degli effetti casuali con simulazioni e Baayen et al. (2017) articolo che introduce i GAMM.

La mia recensione completa di Bates et al. la bozza può essere trovata qui . IIRC, le altre recensioni avevano una sorta di punti principali simili.


OK. Quindi potrei inserire alcune piccole modifiche / aggiornamenti in esso per chiarire alcuni dei punti che stai facendo. Per quanto riguarda la prestampa di Bates, potrebbe non essere ottimale sotto vari aspetti. Ma sono pienamente d'accordo con Bates et al. che le singole matrici di covarianza sono esattamente lo stesso problema delle correlazioni di + 1 / -1. Matematicamente, non c'è proprio alcuna differenza. Quindi, se accettiamo che le correlazioni perfette compromettono il potere, allora dobbiamo essere molto attenti al singolare cov. anche in assenza di simulazioni esplicite che lo mostrano. Non sono d'accordo che sia "senza principi".
ameba,

@amoeba lmer_altfunziona fondamentalmente esattamente come lmer(o addirittura glmer) con l'unica differenza che consente la ||sintassi. Quindi non sono sicuro del motivo per cui vorresti evitare afexa tutti i costi. Dovrebbe anche funzionare senza attaccare (cioè, afex::lmer_alt(...)).
Henrik,

@amoeba Quello che fa è fondamentalmente l'approccio descritto nel codice da Reinhold Kliegl (ovvero, l'espansione degli effetti casuali). Per ogni termine di effetti casuali della formula crea una matrice modello (cioè converte i fattori in covariate numeriche). Questo model.matrix è quindi cbindai dati. Quindi il termine degli effetti casuali nella formula viene sostituito con uno nuovo in cui ciascuna delle colonne appena create viene concatenata con un +. Vedi le righe da 690 a 730 in github.com/singmann/afex/blob/master/R/mixed.R
Henrik

Per quanto riguarda le variabili categoriali alla sinistra di ||, questo è un punto davvero importante, grazie per avermelo fatto conoscere e per avermelo spiegato (ho modificato la mia risposta per riflettere). Mi piace questa funzionalità di lmer_altin afex. Vorrei solo menzionare qui per completezza che per ottenere lo stesso output con una lmerchiamata vanilla senza ulteriori preelaborazioni si può ad esempio specificare (1+dummy(Machine,'B')+dummy(Machine,'C') || Worker). Ciò diventa chiaramente molto ingombrante quando la variabile categoriale ha molti livelli.
ameba,

2
@amoeba È importante notare che l'approccio usando dummy()funziona solo con i contrasti di trattamento predefiniti e non quando gli effetti casuali usano contrasti da somma a zero (che si dovrebbe usare nel caso in cui il modello abbia interazioni). Ad esempio, è possibile vedere che se si confrontano i componenti di varianza nell'esempio sopra per la lmer_altchiamata con la mixedchiamata.
Henrik,

1

Anch'io ho avuto questo problema usando la stima della massima verosimiglianza - solo io uso l'algoritmo Goldstein IGLS come implementato attraverso il software MLwiN e non LME4 in R. Tuttavia, in ogni caso, il problema si è risolto quando sono passato alla stima MCMC usando lo stesso Software. Ho anche avuto una correlazione superiore a 3 che si è risolta quando ho cambiato la stima. Usando IGLS, la correlazione viene calcolata dopo la stima come la covarianza divisa per il prodotto della radice quadrata del prodotto delle varianze associate - e questo non tiene conto dell'incertezza in ciascuna delle stime costituenti.

Il software IGLS non "sa" che la covarianza implica una correlazione e calcola solo le stime di una funzione di varianza costante, lineare, quadratica ecc. Al contrario, l'approccio MCMC si basa sull'assunzione di campioni da una distribuzione normale multivariata che corrisponde a varianze e covarianze con buone proprietà e piena propagazione dell'errore in modo che l'incertezza nella stima delle covarianze sia presa in considerazione nella stima delle varianze e viceversa.

MLwin costituisce la catena di stima MCMC con stime IGLS e potrebbe essere necessario modificare la matrice di covarianza varianza definita non negativa modificando la covarianza a zero all'inizio prima di iniziare il campionamento.

Per un esempio funzionante vedi

Sviluppo di modelli multilivello per l'analisi di contestualità, eterogeneità e cambiamenti mediante MLwiN 3, Volume 1 (aggiornato a settembre 2017); Il volume 2 è anche su RGate

https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017

Appendice al capitolo 10

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.