2017-06-21 9 views
7

Son zamanlarda nispeten büyük veri kümelerine çok sayıda rastgele efekt modeli sığdırmaya çalışıyorum. En fazla 25 zaman noktasında gözlemlenen yaklaşık 50.000 kişi (ya da daha fazla) diyelim. Böylesine büyük bir örneklem büyüklüğünde, ayarlayabileceğimiz çok fazla tahminci ekliyoruz - belki 50 ya da çok sabit etki. R'de lme4::glmer'u kullanarak her bir konu için rastgele kesişme ile modeli ikili bir sonuca uygun hale getiriyorum. Ben verilere ayrıntılarına girmeyeceğim, ama kullandığım glmer komutunun temel biçim oldu: Her iki study_quarter ve dd_quarter yaklaşık 20 seviyesi her faktörlerlme4 :: glimer vs. Stata'nın melogit komutu

fit <- glmer(outcome ~ treatment + study_quarter + dd_quarter + (1|id), 
       family = "binomial", data = dat) 

nerede.

Bu modeli R'ye sığdırmaya çalıştığımda, yaklaşık 12-15 saat çalışır ve yakınsamayacağı bir hata döndürür. İyileştirmeyle ilgili bir dizi sorun giderme (örneğin, these yönergelerini takip ederek) yaptım. Ve yakınsaklık sonunda bile yakın değildir (5-10 civarında maksimum gradyan, yakınsama kriteri ise 0.001'dir).

Daha sonra modele, melogit komutunu kullanarak Stata'ya yerleştirmeye çalıştım. Model, yakınsama sorunu olmaksızın 2 dakikadan daha kısa bir süreye sığmaktadır. Karşılık gelen Stata komutu,

Ne verir? Stata'nın daha iyi bir uydurma algoritması var mı, yoksa büyük modeller ve büyük veri setleri için optimize edilmiş bir tanesi var mı? Çalışma sürelerinin ne kadar farklı olduğu gerçekten şaşırtıcı.

+0

[Burada] (https://www.statalist.org/forums/forum/general-stata-discussion/general/1371838-gsem-not-estimating) ters durumun bir örneğidir - R görünüşe göre hızla ilgilenir aynı SEM modelini tahmin etmek imkansız Stata .. – radek

+0

Emin değilim, ama binomial ailesi için glmer varsayılan seçeneği probit ve logit değil mi? Belki 'aile = binomial (link =" logit ")' ı ekleyebilir ve sonra deneyebilirsiniz? – eborbath

+0

@radek - Paylaştığınız için teşekkürler, ancak SEM'lere değil, özellikle karışık efekt modellemesine atıfta bulunuyorum. R "nin" Stata "yı attığı birçok durum olduğunu biliyorum. –

cevap

6

glmer uyum muhtemelen çok daha hızlı opsiyonel argümanı nAGQ=0L beraber olacak. Birçok sabit efekt parametreniz vardır (study_quarter ve dd_quarter için toplam 20 kontrast oluşturmak üzere 20 seviye) ve varsayılan optimizasyon yöntemi (nAGQ=1L'a karşılık gelir), tüm bu katsayıları genel doğrusal olmayan optimizasyon çağrısı içine koyar. nAGQ=0L ile bu katsayılar daha hızlı cezalandırılmış yinelemeli olarak yeniden en küçük kareler (PIRLS) algoritması içinde optimize edilmiştir. Varsayılan olarak, tahmindeki sapmanın daha düşük olduğu anlamında genellikle daha iyi bir tahminde bulunulur, ancak fark genellikle çok küçüktür ve zaman farkı çok büyüktür.

Bu algoritmalardaki farklılıkların bir Jupyter dizüstü bilgisayar nAGQ.ipynb olarak bir yazım var. Bu yazma işlemi, lme4 yerine Julia için MixedModels paketini kullanır, ancak yöntemler benzerdir. (Ben lme4 ve MixedModels yazarı yazarlarından biri duyuyorum.

Çok fazla GLMM uyuyorsanız, numaralı telefondan MixedModels numaralı telefonu kullanabilirsiniz. lme4'daki tüm karmaşık kodlarda bile R'dan çok daha hızlıdır.

+1

"nAGQ" değerini 0 olarak ayarlamayı denedim ve model yakınsama sorunu olmadan yaklaşık 5 dakika içinde sığdı. Hala Stata'dan biraz daha yavaş, ama kabul edilebilirden daha yavaş. –

+0

Varsayılan 'nAGQ = 1L' olan bir modelin daha iyi başlangıç ​​değerleri elde etmek için modele ilk önce PIRLS (' nAGQ = 0' değerine karşılık gelen) ile uyması ve daha sonra modelin Laplace ile rafine edilmesi durumunda daha hızlı bir şekilde yakınlaşıp kavramayacağını merak ediyorum. yaklaşık ('nAGQ = 1')? Belki de bu zaten dahili olarak yapılıyor, ancak eğer öyleyse, 15 saatlik çalışma süresinden sonra, model yakınsamaya yakın bir yerde hiç şaşırmadım (5-10 civarında maksimum gradyan). –

+0

'nAGQ = 1L' için bir başlangıç' nAGQ = 0L' uyumu başlangıç ​​tahminleri oluşturmak için kullanılır. Bazılarına yardımcı olur ama beklenmeyebilir. Sorun, doğrusal olmayan optimizasyon rutininde optimize edilecek parametrelerin sayısıdır. Optimize ediciyi 'nloptr' paketinden' NLOPT_LN_BOBYQA' olarak değiştirmeyi de deneyebilirsiniz. –

0

Stata'nın tüm dosyada okuduğundan emin misiniz? Eğer 50k kişi 25 kere (1.250.000 satır) gözlemlenen var gibi bana geliyor çünkü

http://www.stata.com/manuals13/rlimits.pdf

sormak nedenidir; Kullandığınız Stata sürümüne bağlı olarak, kesilmiş sonuçlar alabilirsiniz.

EDIT Dosya uzunluğu sorunu olmadığından, nlme gibi karışık efektler için diğer paketleri denediniz mi? Doğrusal olmayan karışık efekt modelinin verilerinizi biraz daha hızlı alacağından şüpheleniyorum.

DÜZENLEME Bu kaynak farklı modelleri hakkında şeyden daha faydalı olabilir: https://stats.stackexchange.com/questions/173813/r-mixed-models-lme-lmer-or-both-which-one-is-relevant-for-my-data-and-why

+0

Kaynak 2 versiyon güncel değil. Http://www.stata.com/manuals/rlimits.pdf adresindeki Stata 15 belgesi Her iki durumda da 1 milyon gözlem (sizin şartlarınızda satırlar) herhangi bir ciddi Stata'da bir sorun değildir. –

+0

Ben nlme denemedim, ve bir atışa değer katılıyorum. Ama "biraz daha hızlı" 15 saat (yakınsama olmadan) ve 2 dakika (yakınsama ile) arasındaki fark olacağını sanmıyorum. Fitting algoritmalarının, yazarların üst üste gelmesi nedeniyle ortak birçok şeyi paylaşacağını hayal ediyorum ama bu sadece bir varsayımdır. –

+0

@NickCox'un ne dediğini doğrulamak için, model çıktısı veri kümesindeki tüm gözlemleri kullandığını söylüyor, bu yüzden bunun bir sorun olduğunu düşünmüyorum. –