Quale metodo di confronto multiplo utilizzare per un modello lmer: lsmeans o glht?


15

Sto analizzando un set di dati usando un modello di effetti misti con un effetto fisso (condizione) e due effetti casuali (partecipante a causa del disegno e della coppia all'interno del soggetto). Il modello è stato generato conlme4 pacchetto: exp.model<-lmer(outcome~condition+(1|participant)+(1|pair),data=exp).

Successivamente, ho eseguito un test del rapporto di verosimiglianza di questo modello rispetto al modello senza l'effetto fisso (condizione) e ho una differenza significativa. Ci sono 3 condizioni nel mio set di dati, quindi voglio fare un confronto multiplo, ma non sono sicuro di quale metodo utilizzare . Ho trovato una serie di domande simili su CrossValidated e altri forum, ma sono ancora abbastanza confuso.

Da quello che ho visto, le persone hanno suggerito di usare

1. Il lsmeanspacchetto - lsmeans(exp.model,pairwise~condition)che mi dà il seguente output:

condition     lsmean         SE    df  lower.CL  upper.CL
 Condition1 0.6538060 0.03272705 47.98 0.5880030 0.7196089
 Condition2 0.7027413 0.03272705 47.98 0.6369384 0.7685443
 Condition3 0.7580522 0.03272705 47.98 0.6922493 0.8238552

Confidence level used: 0.95 

$contrasts
 contrast                   estimate         SE    df t.ratio p.value
 Condition1 - Condition2 -0.04893538 0.03813262 62.07  -1.283  0.4099
 Condition1 - Condition3 -0.10424628 0.03813262 62.07  -2.734  0.0219
 Condition2 - Condition3 -0.05531090 0.03813262 62.07  -1.450  0.3217

P value adjustment: tukey method for comparing a family of 3 estimates 

2. Il multcomppacchetto in due modi diversi: usando mcp glht(exp.model,mcp(condition="Tukey"))risultante

     Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lmer(formula = outcome ~ condition + (1 | participant) + (1 | pair), 
    data = exp, REML = FALSE)

Linear Hypotheses:
                             Estimate Std. Error z value Pr(>|z|)  
Condition2 - Condition1 == 0  0.04894    0.03749   1.305    0.392  
Condition3 - Condition1 == 0  0.10425    0.03749   2.781    0.015 *
Condition3 - Condition2 == 0  0.05531    0.03749   1.475    0.303  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

e usando lsm glht(exp.model,lsm(pairwise~condition))risultante in

Note: df set to 62

     Simultaneous Tests for General Linear Hypotheses

Fit: lmer(formula = outcome ~ condition + (1 | participant) + (1 | pair), 
    data = exp, REML = FALSE)

Linear Hypotheses:
                             Estimate Std. Error t value Pr(>|t|)  
Condition1 - Condition2 == 0 -0.04894    0.03749  -1.305   0.3977  
Condition1 - Condition3 == 0 -0.10425    0.03749  -2.781   0.0195 *
Condition2 - Condition3 == 0 -0.05531    0.03749  -1.475   0.3098  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
(Adjusted p values reported -- single-step method)

Come puoi vedere, i metodi danno risultati diversi. Questa è la prima volta che lavoro con R e statistiche, quindi qualcosa potrebbe andare storto ma non saprei dove. Le mie domande sono:

Quali sono le differenze tra i metodi presentati? Ho letto in una risposta a domande correlate che riguarda i gradi di libertà ( lsmeansvs. glht). Ci sono alcune regole o raccomandazioni su quando usare quale, ad esempio, il metodo 1 è buono per questo tipo di set di dati / modello ecc.? Quale risultato devo segnalare? Senza saperlo, probabilmente andrei semplicemente a segnalare il valore p più alto che ho avuto per giocarlo in sicurezza, ma sarebbe bello avere un motivo migliore. Grazie

Risposte:


17

Non una risposta completa ...

La differenza tra glht(myfit, mcp(myfactor="Tukey")) e gli altri due metodi è che in questo modo utilizza una statistica "z" (distribuzione normale), mentre gli altri usano una statistica "t" (distribuzione Studente). La statistica "z" è la stessa di una statistica "t" con un infinito grado di libertà. Questo metodo è asintotico e fornisce valori p più piccoli e intervalli di confidenza più brevi rispetto agli altri. I valori p possono essere troppo piccoli e gli intervalli di confidenza possono essere troppo brevi se il set di dati è piccolo.

Quando corro lsmeans(myfit, pairwise~myfactor)appare il seguente messaggio:

Loading required namespace: pbkrtest

Ciò significa che lsmeans(per un lmermodello) utilizza il pbkrtestpacchetto che implementa il metodo Kenward & Rogers per i gradi di libertà della statistica "t". Questo metodo intende fornire valori p e intervalli di confidenza migliori rispetto a quello asintotico (non c'è differenza quando il grado di libertà è grande).

Ora, circa la differenza tra lsmeans(myfit, pairwise~myfactor)$contrasts e glht(myfit, lsm(pairwise~factor), ho appena fatto alcuni test e le mie osservazioni sono le seguenti:

  • lsm è un'interfaccia tra il lsmeans pacchetto e il multcomppacchetto (vedi ?lsm)

  • per un design equilibrato non c'è differenza tra i risultati

  • per un design sbilanciato, ho osservato piccole differenze tra i risultati (gli errori standard e il rapporto t)

Purtroppo non so quale sia la causa di queste differenze. Sembra solo lsmchiamate lsmeansper ottenere la matrice di ipotesi lineari e i gradi di libertà, ma lsmeansusa un modo diverso per calcolare gli errori standard.


Grazie per la risposta dettagliata! Ho completamente perso la differenza nella statistica dei test ... Hai detto che i valori possono essere troppo piccoli e gli IC troppo stretti per il metodo asintotico. Il mio set di dati è composto da ~ 30 partecipanti, quindi credo che mi atterrò alla statistica t. Quando dici che il metodo Kenward & Rogers porta a valori p migliori, intendi più preciso o più piccolo? Quindi le differenze sono dovute a differenze nei metodi di calcolo df e SE e non a causa dell'uso errato di uno di essi con il mio modello, se ti ho capito correttamente. C'è un modo per scegliere il metodo "migliore" qui?
schvaba986,

11
(Sono lo sviluppatore del pacchetto lsmeans ) lsmeansusa il pacchetto pbkrtest, che prevede (1) i calcoli di Kenward-Rogers df e (2) una matrice di covarianza aggiustata con distorsione ridotta nelle stime. Se si imposta prima lsm.options(disable.pbkrtest=TRUE), quindi la lsmeanschiamata conadjust="mvt" produrrà gli stessi risultati glht, ad eccezione di lievi differenze dovute all'algoritmo randomizzato utilizzato da entrambi i pacchetti per la distribuzione multivariata.
Russ Lenth

3
Tuttavia, suggerisco la regolazione "mvt" senza disabilitare pbkrtest, a causa della correzione del bias e del fatto che senza valori di df, i valori asintotici (z) assumono essenzialmente df infinito, producendo quindi valori di P irrealisticamente bassi.
Russ Lenth

3
A proposito, il summarymetodo glhtconsente vari metodi di test step-down oltre alla regolazione della molteplicità di default one-step (CI simultanei). Su un punto completamente diverso, se hai più di un fattore, lsmpuoi creare i normali tipi di confronto abbastanza facilmente, mentre mcpnon puoi farlo affatto.
Russ Lenth
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.