Ben, R'ye daha aşina bir kullanıcıyım ve dört habitat değişkeni için 5 yaşın üzerindeki yaklaşık 35 kişi için rastgele eğimler (seçim katsayıları) tahmin etmeye çalışıyorum. Yanıt değişkeni, bir konumun "kullanıldı" (1) veya "kullanılabilir" (0) habitat (aşağıda "kullanım") olup olmadığıdır.
Windows 64 bit bilgisayar kullanıyorum.
R sürüm 3.1.0, aşağıdaki veri ve ifade kullanın. PS, TH, RS ve HW sabit etkilerdir (standartlaştırılmış, habitat tiplerine ölçülen mesafe). lme4 V 1.1-7.
str(dat)
'data.frame': 359756 obs. of 7 variables:
$ use : num 1 1 1 1 1 1 1 1 1 1 ...
$ Year : Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 4 4 4 3 4 ...
$ ID : num 306 306 306 306 306 306 306 306 162 306 ...
$ PS: num -0.32 -0.317 -0.317 -0.318 -0.317 ...
$ TH: num -0.211 -0.211 -0.211 -0.213 -0.22 ...
$ RS: num -0.337 -0.337 -0.337 -0.337 -0.337 ...
$ HW: num -0.0258 -0.19 -0.19 -0.19 -0.4561 ...
glmer(use ~ PS + TH + RS + HW +
(1 + PS + TH + RS + HW |ID/Year),
family = binomial, data = dat, control=glmerControl(optimizer="bobyqa"))
glmer bana mantıklı gelen sabit etkiler için parametre tahminleri verir ve rasgele eğimler (her bir habitat tipine seçim katsayıları olarak yorumladığım) verileri niteliksel olarak araştırdığımda da anlamlıdır. Model için günlük olasılığı -3050.8'dir.
Bununla birlikte, hayvan ekolojisi araştırmalarının çoğu R'yi kullanmaz, çünkü hayvan konum verileriyle, uzamsal otokorelasyon standart hataları tip I hatasına eğilimli hale getirebilir. R model tabanlı standart hatalar kullanırken, ampirik (Huber-beyaz veya sandviç) standart hatalar tercih edilir.
R şu anda bu seçeneği sunmasa da (bildiklerime göre - LÜTFEN, yanılıyorsam beni düzelt), SAS, - SAS'a erişimim olmamasına rağmen, bir meslektaşım standart hataların olup olmadığını belirlemek için bilgisayarını ödünç almamı kabul etti ampirik yöntem kullanıldığında önemli ölçüde değişir.
İlk olarak, model tabanlı standart hatalar kullanırken SAS'ın, modelin her iki programda da aynı şekilde belirtildiğinden emin olmak için R'ye benzer tahminler üretmesini sağlamak istedik. Tam olarak aynı olup olmadıkları umrumda değil - sadece benzer. Denedim (SAS V 9.2):
proc glimmix data=dat method=laplace;
class year id;
model use = PS TH RS HW / dist=bin solution ddfm=betwithin;
random intercept PS TH RS HW / subject = year(id) solution type=UN;
run;title;
Ayrıca satır ekleme gibi çeşitli diğer formları da denedim
random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;
Belirtmeden denedim
solution type = UN,
veya yorum yapma
ddfm=betwithin;
Modeli nasıl belirtirsek seçelim (ve birçok yol denedik), sabit etkiler yeterince benzer olsa da, SAS'taki rastgele eğimleri R'den bu çıktıya uzaktan benzetemiyorum. Farklı demek istediğimde, işaretlerin bile aynı olmadığı anlamına gelir. SAS'daki -2 Günlük Olasılığı 71344.94 idi.
Tam veri setimi yükleyemiyorum; bu yüzden sadece üç kişiden gelen kayıtları içeren bir oyuncak veri seti hazırladım. SAS bana birkaç dakika içinde çıktı veriyor; R'de bir saatten fazla sürer. Tuhaf. Bu oyuncak veri seti ile artık sabit etkiler için farklı tahminler alıyorum.
Benim sorum: Rastgele yamaç tahminlerinin R ve SAS arasında neden bu kadar farklı olabileceğine ışık tutabilir mi? Aramaları benzer sonuçlar üretecek şekilde kodumu değiştirmek için R veya SAS'ta yapabileceğim bir şey var mı? Ben R benim daha fazla tahmin "inanıyorum" çünkü SAS kodu değiştirmek istiyorum.
Bu farklılıklarla gerçekten ilgileniyorum ve bu sorunun en altına inmek istiyorum!
R ve SAS için tam veri kümesindeki 35 kişiden yalnızca üçünü kullanan bir oyuncak veri kümesinden çıktım jpeg olarak dahil edildi.
DÜZENLEME VE GÜNCELLEME:
@JakeWestfall keşfetmeye yardımcı olduğu için SAS'taki eğimler sabit efektleri içermez. Sabit efektler eklediğimde, sonuçlar - programlar arasında bir sabit efekt "PS" için R eğimlerini SAS eğimleriyle karşılaştırmak: (Seçim katsayısı = rastgele eğim). SAS'taki artan varyasyona dikkat edin.
0
s ve 1
s olarak etiketlenmiş binom verileriyle , R
"1" yanıtı olasılığını modellerken SAS, "0" yanıtı olasılığını modelleyecektir. SAS modelini "1" olasılığı yapmak için yanıt değişkeninizi olarak yazmanız gerekir use(event='1')
. Tabii ki, bunu yapmadan bile, rastgele etki varyanslarının aynı tahminlerinin yanı sıra işaretleri sabit olsa da aynı sabit etki tahminlerini beklememiz gerektiğine inanıyorum.
ranef()
işlevi yerine SAS'takilerle karşılaştırmanız gerektiğidir coef()
. Birincisi gerçek rastgele efektleri verirken ikincisi rastgele efektler artı sabit etkiler vektörü verir. Bu, yayınınızda gösterilen sayıların neden farklı olduğunu açıklıyor, ancak hala tam olarak açıklayamadığım önemli bir tutarsızlık var.
ID
R'de bir faktör olmadığını fark ettim ; kontrol edin ve bunun bir şey değiştirip değiştirmediğine bakın.