Tôi là người dùng quen thuộc hơn với R và đã cố gắng ước tính độ dốc ngẫu nhiên (hệ số lựa chọn) cho khoảng 35 cá nhân trong 5 năm cho bốn biến môi trường sống. Biến trả lời là liệu một vị trí đã được sử dụng "(1) hay" có sẵn "(0) môi trường sống (" sử dụng "bên dưới).
Tôi đang sử dụng máy tính Windows 64 bit.
Trong phiên bản R 3.1.0, tôi sử dụng dữ liệu và biểu thức bên dưới. PS, TH, RS và CTNH là các hiệu ứng cố định (tiêu chuẩn hóa, khoảng cách đo được với các loại môi trường sống). 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 cho tôi ước tính tham số cho các hiệu ứng cố định có ý nghĩa với tôi và độ dốc ngẫu nhiên (mà tôi hiểu là hệ số lựa chọn cho từng loại môi trường sống) cũng có ý nghĩa khi tôi điều tra dữ liệu một cách định tính. Khả năng đăng nhập của mô hình là -3050,8.
Tuy nhiên, hầu hết các nghiên cứu về sinh thái động vật không sử dụng R vì với dữ liệu vị trí của động vật, tự động tương quan không gian có thể làm cho các lỗi tiêu chuẩn dễ bị lỗi loại I. Trong khi R sử dụng các lỗi tiêu chuẩn dựa trên mô hình, các lỗi tiêu chuẩn theo kinh nghiệm (cũng như Huber trắng hoặc sandwich) được ưu tiên.
Mặc dù R hiện không cung cấp tùy chọn này (theo hiểu biết của tôi - XIN, hãy sửa tôi nếu tôi sai), nhưng tôi không có quyền truy cập vào SAS, một đồng nghiệp đã đồng ý cho tôi mượn máy tính của anh ấy để xác định xem có phải lỗi tiêu chuẩn không thay đổi đáng kể khi phương pháp thực nghiệm được sử dụng.
Trước tiên, chúng tôi muốn đảm bảo rằng khi sử dụng các lỗi tiêu chuẩn dựa trên mô hình, SAS sẽ tạo ra các ước tính tương tự với R - để chắc chắn rằng mô hình được chỉ định theo cùng một cách trong cả hai chương trình. Tôi không quan tâm nếu chúng giống hệt nhau - giống nhau. Tôi đã thử (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;
Tôi cũng đã thử nhiều hình thức khác, chẳng hạn như thêm dòng
random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;
Tôi đã thử mà không chỉ định
solution type = UN,
hoặc bình luận
ddfm=betwithin;
Cho dù chúng tôi chỉ định mô hình như thế nào (và chúng tôi đã thử nhiều cách), tôi không thể lấy các độ dốc ngẫu nhiên trong SAS để giống với các đầu ra từ R - mặc dù các hiệu ứng cố định là tương tự nhau. Và khi tôi có ý khác nhau, tôi có nghĩa là ngay cả các dấu hiệu đều giống nhau. Khả năng đăng nhập -2 trong SAS là 71344,94.
Tôi không thể tải lên tập dữ liệu đầy đủ của mình; Vì vậy, tôi đã làm một bộ dữ liệu đồ chơi chỉ với các hồ sơ từ ba cá nhân. SAS cho tôi đầu ra trong vài phút; Trong R phải mất hơn một giờ. Kỳ dị. Với bộ dữ liệu đồ chơi này, giờ đây tôi nhận được các ước tính khác nhau cho các hiệu ứng cố định.
Câu hỏi của tôi: Bất cứ ai cũng có thể làm sáng tỏ lý do tại sao các ước tính độ dốc ngẫu nhiên có thể rất khác nhau giữa R và SAS? Có bất cứ điều gì tôi có thể làm trong R, hoặc SAS, để sửa đổi mã của mình để các cuộc gọi tạo ra kết quả tương tự không? Tôi muốn thay đổi mã trong SAS, vì tôi "tin" ước tính R của mình nhiều hơn.
Tôi thực sự quan tâm đến những khác biệt này và muốn đi đến tận cùng của vấn đề này!
Đầu ra của tôi từ bộ dữ liệu đồ chơi chỉ sử dụng ba trong số 35 cá nhân trong bộ dữ liệu đầy đủ cho R và SAS được bao gồm dưới dạng jpeg.
CHỈNH SỬA VÀ CẬP NHẬT:
Như @JakeWestfall đã giúp khám phá, các sườn dốc trong SAS không bao gồm các hiệu ứng cố định. Khi tôi thêm các hiệu ứng cố định, đây là kết quả - so sánh độ dốc R với độ dốc SAS cho một hiệu ứng cố định, "PS", giữa các chương trình: (Hệ số lựa chọn = độ dốc ngẫu nhiên). Lưu ý sự thay đổi tăng lên trong SAS.
0
s và 1
s, R
sẽ mô hình xác suất của phản hồi "1" trong khi SAS sẽ mô hình xác suất của phản hồi "0". Để biến mô hình SAS thành xác suất "1", bạn cần viết biến phản hồi của mình là use(event='1')
. Tất nhiên, ngay cả khi không làm điều này, tôi tin rằng chúng ta vẫn nên mong đợi các ước tính tương tự về phương sai hiệu ứng ngẫu nhiên, cũng như các ước tính hiệu ứng cố định tương tự mặc dù có dấu hiệu đảo ngược.
ranef()
hàm chứ không phải coef()
. Cái trước cho hiệu ứng ngẫu nhiên thực tế, trong khi cái sau cho hiệu ứng ngẫu nhiên cộng với vector hiệu ứng cố định. Vì vậy, điều này giải thích rất nhiều lý do tại sao các con số được minh họa trong bài viết của bạn khác nhau, nhưng vẫn còn một sự khác biệt đáng kể mà tôi không thể giải thích hoàn toàn.
ID
không phải là một yếu tố trong R; kiểm tra và xem nếu điều đó thay đổi bất cứ điều gì.