GLMM'deki sabit efektlerin hesaplanmasını nasıl hızlandırabilirim?


9

Genelleştirilmiş doğrusal karışık modelden elde edilen önyükleme tahminleri gerektiren bir simülasyon çalışması yapıyorum (aslında, bir GLMM'den ve bir LMM'den biri için sabit etkiler için iki tahminin ürünü). Çalışmayı iyi yapmak için her seferinde 1000 veya 1500 bootstrap replikasyonu ile yaklaşık 1000 simülasyon gerekir. Bu, bilgisayarımda önemli miktarda zaman alıyor (birçok gün).

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

Daha spesifik olmak gerekirse, X, M ve Y değişkenlerine yol açan, X ve M'nin sürekli olduğu ve Y'nin ikili olduğu üç şekilde tekrar tekrar ölçülen deneklerim var. Biz iki regresyon denklemleri var Y için altta yatan gizli sürekli değişken olan ve hatalar IID değildir. Önyükleme yapmak istediğimiz istatistik . Bu nedenle, her bootstrap replikasyonu bir LMM ve bir GLMM takmayı gerektirir. R kodum (lme4 kullanarak)

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)
    }

için doğrusal bir model olarak aynı tahminde olduğumu fark ettim , bu da biraz zaman kazandırır, ancak aynı numara için .α1β2

Sadece daha hızlı bir bilgisayar almam gerekiyor mu? :)


1
@BR şişe boynu ne? Temelde ne zaman alıyor Rprof.
suncoolsu

1
Bunun bir yolu GLMM'nin "karışık" kısmını görmezden gelmektir. Sadece sıradan bir GLM sığdırmak, tahminler pek değişmez, ancak kendi standart hatalar muhtemelen olacak
probabilityislogic

@probabilityislogic. Yorumunuza ek olarak, cevabın çok farklı olup olmayacağını da düşünüyorum, grup büyüklüğüne ve gruptaki bireysel davranışlara bağlıdır. Gelman ve Hill'in dediği gibi: karma efektler model sonuçları havuz oluşturma ile havuz oluşturma arasında olmaz. (Obv. Bu Bayesian hiyerarşik modelleri içindir, ancak karışık modeller aynı şeyi yapmanın klasik bir yoludur.)
suncoolsu

@probabilityislogic: Bu LMM için işe yarıyor, ancak GLMM için başarısız gibi görünüyor (yani ekstra M olan ve olmayan modelleri aynı veri üzerinde çalıştırdım ve önemli ölçüde farklı sonuçlarla sonuçlandım). Tabii ki, glmer uygulamasında bir hata olmadığı sürece.
BR

@ suncoolsu: darboğaz GLMM'nin tahminidir, birkaç saniye sürebilir (özellikle birkaç rastgele efektle). Ama bunu 1000 * 1000 kez yapın ve bu 280 saatlik hesaplamadır. Bir GLM takmak yaklaşık 1/100 zaman alır.
BR

Yanıtlar:


4

Başlangıç ​​değerlerinin belirlenmesine yardımcı olmalıdır, ancak ne kadar olduğunu bilmek zor. Simülasyon ve önyükleme yaparken, 'gerçek' değerleri veya önyüklenmemiş tahminleri veya her ikisini de bilmelisiniz. Bunları start =seçeneğini kullanarak deneyin glmer.

Yakınsama bildirme toleranslarının ihtiyacınızdan daha katı olup olmadığını da düşünebilirsiniz. lme4Yine de onları dokümantasyondan nasıl değiştireceğimi bilmiyorum .


4

Yeni bir bilgisayar almadan önce diğer iki olasılık da göz önünde bulundurulur.

  1. Paralel hesaplama - önyüklemenin paralel olarak çalıştırılması kolaydır. Bilgisayarınız yeniyse, muhtemelen dört çekirdeğiniz vardır. R'deki çok çekirdekli kütüphaneye bir göz atın .
  2. Bulut bilişim de bir olasılık ve oldukça ucuz. R komut dosyalarını çalıştırmak için amazon bulutunu kullanan meslektaşlarım var. Bunun oldukça uygun maliyetli olduğunu gördüler.

1
Cevap için teşekkürler. Her nasılsa, iki çekirdeğimin olduğu gerçeğini göz ardı ettim (bilgisayarım çok yeni değil). Uzun zaman önce çok çekirdekli bir yere bakmalıydım.
BR

2

Muhtemelen daha hızlı bir bilgisayar olabilir. Ama burada işe yarayabilecek bir numara var.

Bir simülasyon oluşturun Y, ancak yalnızca Y, sonra simüle üzerinde OLS veya LMM yapın Y değerler.

Diyelim ki bağlantı fonksiyonunuz g(.). Bu, olasılığından nasılY=1için değeri ve en olası lojistik fonksiyon .Yg(z)=log(z1z)

Dolayısıyla, için bir bernouli örnekleme dağılımı varsayarsanız ve olasılıktan önce , için bir beta . Bundan benzetmek ışıklandırma gibi olmalı ve eğer değilse, daha hızlı bir bilgisayara ihtiyacınız var. Ayrıca, numuneler bağımsızdır, bu nedenle MCMC gibi herhangi bir "yakınsama" teşhisini kontrol etmenize gerek yoktur ve muhtemelen çok sayıda örneğe ihtiyacınız yoktur - 100 durumunuz için iyi çalışabilir. Eğer binom varsa , o zaman sadece yerine ile yukarıdaki posterior , her biri için binom ait çalışmaların sayısı .YYBernoulli(p)pBeta(Yobs+12,1Yobs+12)Ys1niYi

Yani bir dizi benzetilmiş değeriniz var . Daha sonra, elde etmek için bu değerlerin her birine link işlevini uygularsınız . Muhtemelen GLMM programından daha hızlı olan ye bir takın. Temel olarak orijinal ikili değerleri yok sayabilirsiniz (ancak bunları silmeyin!) Ve sadece "simülasyon matrisi" ile çalışabilirsiniz ( , burada örneklem büyüklüğü ve simülasyon sayısıdır).psimYsim=g(psim)YsimN×SNS

Yani programda, ben yerini alacak ile işlevini fonksiyonu ve tek simultation ile Ardından geçerlidir döngü çeşit yaratacak Her simülasyon fonksiyonu ve daha sonra alır tahmini olarak ortalama . Böyle bir şey gmler()lmer()Ylmer()b

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

Biraz daha net bir şey açıklamam gerekirse bana bildirin


Cevabınız için teşekkürler, sindirmem biraz zaman alacaktır (ve Cumartesi gecem için zaten planlarım var). GLMM yaklaşımı ile aynı cevabı verip vermemenin benim için net olmadığı yeterince farklı, ama daha çok düşünmem gerekiyor.
BR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.