Como acelerar o cálculo dos efeitos fixos em um GLMM?

9

Estou fazendo um estudo de simulação que requer estimativas de bootstrapping obtidas de um modelo misto linear generalizado (na verdade, o produto de duas estimativas para efeitos fixos, um de um GLMM e outro de um LMM). Para fazer o estudo, seria necessário cerca de 1000 simulações com 1000 ou 1500 replicações de autoinicialização por vez. Isso leva uma quantidade significativa de tempo no meu computador (muitos dias).

How can I speed up the computation of these fixed effects?

Para ser mais específico, tenho sujeitos que são medidos repetidamente de três maneiras, dando origem às variáveis ​​X, M e Y, onde X e M são contínuos e Y é binário. Temos duas equações de regressão que Y é a variável contínua latente subjacente para e os erros não são iid. A estatística que queremos inicializar é . Assim, cada replicação de autoinicialização requer o ajuste de um LMM e um GLMM. Meu código R é (usando lme4)Y * = β 0 + β 1 X + β 2 M + ε 2 * Y α 1 β 2

M=α0+α1X+ϵ1
Y=β0+β1X+β2M+ϵ2
Y
α1β2
    stat=function(dat){
        a=fixef(lmer(M~X+(X|person),data=dat))["X"]
        b=fixef(glmer(Y~X+M+(X+M|person),data=dat,family="binomial"))["M"]
        return(a*b)
    }

Percebo que obtenho a mesma estimativa para se apenas o ajustar como modelo linear, economizando tempo, mas o mesmo truque não funciona para .β 2α1β2

Eu só preciso comprar um computador mais rápido? :)

BR
fonte
11
@BR qual é o gargalo aqui? Basicamente, o que está demorando Rprof.
suncoolsu
11
Uma maneira é simplesmente ignorar a parte "mista" do GLMM. Apenas caber uma GLM comum, as estimativas não vai mudar muito, mas seus erros padrão provavelmente irá
probabilityislogic
@probabilityislogic. Além da sua observação, também acho que se a resposta diferiria muito depende do tamanho do grupo e do comportamento individual do grupo. Como Gelman e Hill dizem: os resultados do modelo de efeitos mistos estariam entre pool e sem pool. (. Obv isto é para modelos hierárquicos bayesianos, mas modelos mistos são uma maneira clássica de fazer o mesmo.)
suncoolsu
@probabilityislogic: Isso funciona para o LMM, mas parece falhar no GLMM (o que significa que eu executei modelos com e sem o M extra nos mesmos dados e acabei com resultados significativamente diferentes). A menos, é claro, que haja um erro na implementação do glmer.
BR
@ suncoolsu: o gargalo é a estimativa do GLMM, que pode demorar alguns segundos (especialmente com vários efeitos aleatórios). Mas faça isso 1000 * 1000 vezes, e são 280 horas de computação. A instalação de um GLM leva cerca de 1/100 do tempo.
BR

Respostas:

4

Deve ajudar a especificar valores iniciais, embora seja difícil saber quanto. Ao fazer a simulação e a inicialização, você deve conhecer os valores "verdadeiros" ou as estimativas sem inicialização ou ambas. Tente usar aqueles na start =opção de glmer.

Você também pode considerar se as tolerâncias para declarar convergência são mais rigorosas do que você precisa. Não estou claro como alterá-los da lme4documentação.

uma parada
fonte
4

Duas outras possibilidades também devem ser consideradas antes de comprar um novo computador.

  1. Computação paralela - a inicialização é fácil de executar em paralelo. Se o seu computador for razoavelmente novo, você provavelmente possui quatro núcleos. Dê uma olhada na biblioteca multicore em R.
  2. A computação em nuvem também é uma possibilidade e razoavelmente barata. Tenho colegas que usaram a nuvem amazon para executar scripts R. Eles descobriram que era bastante rentável.
csgillespie
fonte
11
Obrigado pela resposta. De alguma forma, eu negligenciei o fato de ter dois núcleos (meu computador não é muito novo). Eu deveria ter olhado multicore há muito tempo.
BR
2

Poderia ser um computador mais rápido. Mas aqui está um truque que pode funcionar.

YYY

g(.)Y=1Yg(z)=log(z1z)

YYBernoulli(p)pBeta(Yobs+12,1Yobs+12)Ys1niYi

psimYsim=g(psim)YsimN×SNS

gmler()lmer()Ylmer()b

a=
b=0
do s=1,,S
best=lmer(Ys)
b=b+1s(bestb)
end
return(ab)

Deixe-me saber se preciso explicar algo um pouco mais claro

probabilityislogic
fonte
Obrigado pela resposta, vou demorar um pouco para digeri-la (e eu já tenho planos para minha noite de sábado). É diferente o suficiente para que não esteja claro se ela dá a mesma resposta que a abordagem GLMM, mas preciso pensar mais sobre isso.
BR