Utilizzo di lmer per il modello lineare a effetto misto a misure ripetute


41

EDIT 2: Inizialmente pensavo di dover eseguire un ANOVA a due fattori con misure ripetute su un fattore, ma ora penso che un modello lineare a effetto misto funzionerà meglio per i miei dati. Penso di sapere quasi cosa deve succedere, ma sono ancora confuso da alcuni punti.

Gli esperimenti che devo analizzare sembrano così:

  • I soggetti sono stati assegnati a uno dei numerosi gruppi di trattamento
  • Le misurazioni di ciascun soggetto sono state prese in più giorni
  • Così:
    • Il soggetto è nidificato durante il trattamento
    • Il trattamento è attraversato con il giorno

(ogni soggetto è assegnato a un solo trattamento e le misurazioni vengono prese su ciascun argomento ogni giorno)

Il mio set di dati contiene le seguenti informazioni:

  • Soggetto = fattore di blocco (fattore casuale)
  • Giorno = all'interno del soggetto o fattore di misure ripetute (fattore fisso)
  • Trattamento = tra fattore soggetto (fattore fisso)
  • Obs = variabile misurata (dipendente)

AGGIORNAMENTO OK, quindi sono andato a parlare con uno statistico, ma è un utente SAS. Pensa che il modello dovrebbe essere:

Trattamento + giorno + soggetto (trattamento) + giorno * soggetto (trattamento)

Ovviamente la sua notazione è diversa dalla sintassi R, ma questo modello dovrebbe tenere conto di:

  • Trattamento (fisso)
  • Giorno (fisso)
  • l'interazione trattamento * giorno
  • Soggetto nidificato all'interno del trattamento (casuale)
  • Giorno attraversato con "Soggetto entro il trattamento" (casuale)

Quindi, è questa la sintassi corretta da usare?

m4 <- lmer(Obs~Treatment*Day + (1+Treatment/Subject) + (1+Day*Treatment/Subject), mydata)

Sono particolarmente preoccupato se la giornata trascorsa con la parte "Soggetto all'interno del trattamento" sia corretta. Qualcuno ha familiarità con SAS o è sicuro di capire cosa sta succedendo nel suo modello, in grado di commentare se il mio triste tentativo di sintassi R corrisponde?

Ecco i miei precedenti tentativi di creare un modello e scrivere la sintassi (discussi in risposte e commenti):

m1 <- lmer(Obs ~ Treatment * Day + (1 | Subject), mydata)

Come posso affrontare il fatto che il soggetto è nidificato durante il trattamento? In cosa m1differisce da:

m2 <- lmer(Obs ~ Treatment * Day + (Treatment|Subject), mydata)
m3 <- lmer(Obs ~ Treatment * Day + (Treatment:Subject), mydata)

e sono m2ed m3equivalenti (e se no, perché)?

Inoltre, devo usare nlme invece di lme4 se voglio specificare la struttura di correlazione (come correlation = corAR1)? Secondo le misure ripetute , per un'analisi delle misure ripetute con misure ripetute su un fattore, la struttura della covarianza (la natura delle correlazioni tra le misurazioni dello stesso soggetto) è importante.

Quando stavo provando a fare un ANOVA a misure ripetute, avevo deciso di usare un SS di tipo II; è ancora rilevante e, in caso affermativo, come faccio a specificarlo?

Ecco un esempio di come appaiono i dati:

mydata <- data.frame(
  Subject  = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 
               34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 
               19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
               40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
               29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65), 
  Day       = c(rep(c("Day1", "Day3", "Day6"), each=28)), 
  Treatment = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C", 
                      "A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)), 
  Obs       = c(6.472687, 7.017110, 6.200715, 6.613928, 6.829968, 7.387583, 7.367293, 
                8.018853, 7.527408, 6.746739, 7.296910, 6.983360, 6.816621, 6.571689, 
                5.911261, 6.954988, 7.624122, 7.669865, 7.676225, 7.263593, 7.704737, 
                7.328716, 7.295610, 5.964180, 6.880814, 6.926342, 6.926342, 7.562293, 
                6.677607, 7.023526, 6.441864, 7.020875, 7.478931, 7.495336, 7.427709, 
                7.633020, 7.382091, 7.359731, 7.285889, 7.496863, 6.632403, 6.171196, 
                6.306012, 7.253833, 7.594852, 6.915225, 7.220147, 7.298227, 7.573612, 
                7.366550, 7.560513, 7.289078, 7.287802, 7.155336, 7.394452, 7.465383, 
                6.976048, 7.222966, 6.584153, 7.013223, 7.569905, 7.459185, 7.504068, 
                7.801867, 7.598728, 7.475841, 7.511873, 7.518384, 6.618589, 5.854754, 
                6.125749, 6.962720, 7.540600, 7.379861, 7.344189, 7.362815, 7.805802, 
                7.764172, 7.789844, 7.616437, NA, NA, NA, NA))

Risposte:


18

Penso che il tuo approccio sia corretto. Il modello m1specifica un'intercettazione separata per ogni argomento. Il modello m2aggiunge una pendenza separata per ciascun soggetto. La pendenza dura più giorni poiché i soggetti partecipano solo a un gruppo di trattamento. Se si scrive un modello m2come segue, è più ovvio che si modella un'intercettazione e una pendenza separate per ogni soggetto

m2 <- lmer(Obs ~ Treatment * Day + (1+Day|Subject), mydata)

Ciò equivale a:

m2 <- lmer(Obs ~ Treatment + Day + Treatment:Day + (1+Day|Subject), mydata)

Cioè i principali effetti del trattamento, il giorno e l'interazione tra i due.

Penso che non devi preoccuparti di nidificare fino a quando non ripeti l'ID soggetto all'interno dei gruppi di trattamento. Quale modello è corretto, dipende davvero dalla tua domanda di ricerca. C'è motivo di credere che le pendenze dei soggetti variano oltre all'effetto terapeutico? È possibile eseguire entrambi i modelli e confrontarli con anova(m1,m2)per vedere se i dati supportano uno dei due.

Non sono sicuro di cosa vuoi esprimere con la modella m3? La sintassi di annidamento utilizza un /, ad es (1|group/subgroup).

Non penso che devi preoccuparti dell'autocorrelazione con un numero così piccolo di punti temporali.


Questo non è corretto Il trattamento è una variabile di livello 2, non può essere nidificato all'interno di Soggetti.
Patrick Coulombe,

Informazioni sull'autocorrelazione e il numero di punti temporali: ne mostro solo tre in questo esempio di dati, ma i miei dati reali contengono osservazioni in 8 giorni diversi, quindi penso che probabilmente sarà un problema. Qualche idea su come inserirla?
fosforilato

1
Inoltre, ora sono abbastanza confuso riguardo all'annidamento; (1 + Trattamento | Soggetto) è diverso da (1 + Trattamento / Soggetto)? Cosa significa "|" significa, in parole povere? Non capisco le spiegazioni che ho letto.
fosforilato

Ciao. Che cos'è qui una "pendenza separata per ogni soggetto"? perché il soggetto è una variabile fattore, non una variabile continua.
skan

12

Non mi sento abbastanza a mio agio da commentare il problema degli errori correlati automaticamente (né delle diverse implementazioni in lme4 vs. nlme), ma posso parlare con il resto.

Il modello m1è un modello di intercettazione casuale, in cui è stata inclusa l'interazione a livello incrociato tra il trattamento e il giorno (l'effetto del giorno può variare tra i gruppi di trattamento). Al fine di consentire che la modifica nel tempo differisca tra i partecipanti (ovvero per modellare esplicitamente le differenze individuali nella modifica nel tempo), è inoltre necessario consentire che l'effetto di Day sia casuale . Per fare ciò, dovresti specificare:

m2 <- lmer(Obs ~ Day + Treatment + Day:Treatment + (Day | Subject), mydata)

In questo modello:

  • L'intercettazione se il punteggio previsto per la categoria di riferimento del trattamento al Giorno = 0
  • Il coefficiente per Giorno è la variazione prevista nel tempo per ogni aumento di 1 unità in giorni per la categoria di riferimento del trattamento
  • I coefficienti per i due codici fittizi per i gruppi di trattamento (creati automaticamente da R) sono la differenza prevista tra ciascun gruppo di trattamento rimanente e la categoria di riferimento al Giorno = 0
  • I coefficienti per i due termini di interazione sono la differenza nell'effetto del tempo (Giorno) sui punteggi previsti tra la categoria di riferimento e i restanti gruppi di trattamento.

Sia le intercettazioni che l'effetto del Giorno sul punteggio sono casuali (a ciascun soggetto è consentito avere un punteggio previsto diverso al Giorno = 0 e un diverso cambiamento lineare nel tempo). Anche la covarianza tra intercetti e pendenze viene modellata (sono autorizzati a covary).

Come puoi vedere, l'interpretazione dei coefficienti per le due variabili fittizie è subordinata a Giorno = 0. Ti diranno se il punteggio previsto al Giorno = 0 per la categoria di riferimento è significativamente diverso dai due gruppi di trattamento rimanenti. Pertanto, dove decidi di centrare la tua variabile Day è importante. Se si centra al giorno 1, i coefficienti indicano se il punteggio previsto per la categoria di riferimento al giorno 1 è significativamente diverso dal punteggio previsto dei due gruppi rimanenti. In questo modo, potresti vedere se ci sono differenze preesistenti tra i gruppi . Se si centra al giorno 3, i coefficienti indicano se il punteggio previsto per la categoria di riferimento al giorno 3è significativamente diverso dal punteggio previsto dei due gruppi rimanenti. In questo modo, è possibile vedere se ci sono differenze tra i gruppi alla fine dell'intervento .

Infine, si noti che i soggetti non sono nidificati durante il trattamento. I tuoi tre trattamenti non sono livelli casuali di una popolazione di livelli a cui desideri generalizzare i tuoi risultati - piuttosto, come hai detto, i tuoi livelli sono fissi e vuoi generalizzare i tuoi risultati solo a questi livelli. (Per non parlare, non dovresti usare la modellazione multilivello se hai solo 3 unità di livello superiore; vedi Maas & Hox, 2005.) Invece, il trattamento è un predittore di livello 2, cioè un predittore che assume un singolo valore in Days (unità di livello 1) per ogni soggetto. Pertanto, è semplicemente incluso come predittore nel modello.

Riferimento:
Maas, CJM, & Hox, JJ (2005). Dimensioni del campione sufficienti per la modellazione multilivello. Metodologia: European Journal of Research Methods for the Behavioral and Social Sciences , 1 , 86-92.


1
Non è stimabile da lmer perché il numero di effetti casuali obs <= number e la varianza residua sono probabilmente non identificabili.
Shuguang,

La struttura della formula nella risposta è corretta. Per sovrascrivere l'errore citato da @Shuguang, è necessario aggiungere ...,control=lmerControl(check.nobs.vs.nRE="ignore"). vedere questo link per ulteriori spiegazioni di Ben Bolker.
NiuBiBang,

Belle spiegazioni. Potresti spiegare un po 'di più perché "I soggetti non sono nidificati all'interno del trattamento" e perché non crei un termine di errore + (Trattamento | Oggetto) e perché non solo (1 | Oggetto) o addirittura (1 | Trattamento * Giorno )?
skan

Tecnicamente si potrebbe soggetti nido all'interno di trattamento, se il predittore è uno che sarebbe lo stesso, non importa quante volte è stato eseguito l'esperimento, che dovrebbe essere un (non un casuale) effetti fissi. Fattori che sarebbero diversi ogni volta che si eseguiva l'esperimento, come le caratteristiche individuali del soggetto - ad esempio il loro valore iniziale o la loro risposta idiosincratica ai cambiamenti nel trattamento nel tempo - sono effetti casuali. (1 + Day|Subject)indica un modello di pendenze casuali, che consente di differenziare il valore iniziale di ciascun soggetto (intercetta) e la velocità di variazione del risultato.
Llewmills,
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.