Montaggio di un modello misto Poisson GLM con pendenza e intercettazione casuali


9

Attualmente sto lavorando a una serie di modelli di serie temporali di Poisson, cercando di stimare l'effetto di un cambiamento nel modo in cui i conteggi sono stati ottenuti (passando da un test diagnostico a un altro), controllando nel contempo altre tendenze nel tempo (diciamo un aumento generale del incidenza della malattia). Ho i dati per un numero di siti diversi.

Anche se ho armeggiato anche con i GAM, ho adattato una serie di GLM piuttosto semplici con tendenze temporali in essi, quindi unendo i risultati. Il codice per questo sarebbe simile a questo in SAS:

PROC GENMOD data=work.data descending;
  model counts = dependent_variable time time*time / link=log dist = poisson;
run;

o questo in R:

glm(counts ~ dependent_variable + time + time*time, family="poisson")

Quindi prendendo quelle stime e condividendole sui vari siti. È stato anche suggerito di provare a usare un modello misto Poisson con una pendenza casuale e intercettare per ogni sito, piuttosto che un pool. Quindi essenzialmente avresti l'effetto fisso di depend_variable, quindi un effetto casuale per l'intercettazione e il tempo (o idealmente tempo e tempo ^ 2 anche se capisco che diventa un po 'peloso).

Il mio problema è che non ho idea di come adattare uno di questi modelli, e sembra che i modelli misti siano dove la documentazione di tutti diventa improvvisamente molto opaca. Qualcuno ha una semplice spiegazione (o codice) su come adattare ciò che sto cercando di adattarsi e cosa cercare?

Risposte:


14

In R:

library(lme4)
lmer(counts ~ dependent_variable + (1+time|ID), family="poisson")

In questo caso e questo codice si adatta al modello YiPoisson(λi)

log(λi)=β0+β1Xi+ηi1+ηi2t

Xidependent_variablettimeiIDβ0,β1ηi1,ηi2

Poisson(1)t=1,...,10

x = rnorm(100)
t = rep(1:10,each=10)
ID = rep(1:10,10)
y = rpois(100,1)
g <- lmer(y ~ x + (1+t|ID), family="poisson")
summary(g)
Generalized linear mixed model fit by the Laplace approximation 
Formula: y ~ x + (1 + t | ID) 
   AIC   BIC logLik deviance
 108.8 121.9 -49.42    98.85
Random effects:
 Groups Name        Variance  Std.Dev. Corr   
 ID     (Intercept) 0.0285038 0.168831        
        t           0.0027741 0.052669 -1.000 
Number of obs: 100, groups: ID, 10

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.09078    0.11808  -0.769    0.442
x            0.13670    0.08845   1.546    0.122

Correlation of Fixed Effects:
  (Intr)
x -0.127

Un punto di cautela: la Std.Dev.colonna è solo la radice quadrata della Variancecolonna, NON l'errore standard della stima della varianza!


E il suo ηi1 che provoca l'intercettazione casuale?
Fomite,

ηi1

Grazie per la risposta - un'altra domanda. In alcuni GLM, alcuni dei siti traggono grandi benefici da ^ 2 termine. Sembra che la maggior parte delle persone tagga uno o due effetti casuali: quanto sarà cattivo un terzo in termini di calcolo?
Fomite,

Bene, nell'esempio simulato sopra, che aveva solo 100 osservazioni e 10 gruppi, aggiungendo il terzo effetto casuale (digitando g <- lmer(y ~ x + (1+t+I(t^2)|ID), family="poisson")), il tempo di calcolo aumentato da circa 0,75 secondi a circa 11 secondi. Con l'aumentare della dimensione del campione, probabilmente aumenta anche il tempo di elaborazione.
Macro,

1
t

2

In SAS:

proc glimmix data = yourdata ic = q;
    class id;
    model y = x / dist = poisson solution;
    random intercept t / subject = id;
run;

Ma ovviamente ci sono molte opzioni, più o meno utili, con cui giocare.


Grazie :) Purtroppo, mi sembra di essermi incagliato sui problemi di convergenza, ma mi occuperò di quelli.
Fomite,
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.