Lỗi tiêu chuẩn của hiệu ứng ngẫu nhiên trong R (lme4) so ​​với Stata (xtmixed)


19

Vui lòng xem xét dữ liệu này:

dt.m <- structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), occasion = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("g1", "g2"), class = "factor"),     g = c(12, 8, 22, 10, 10, 6, 8, 4, 14, 6, 2, 22, 12, 7, 24, 14, 8, 4, 5, 6, 14, 5, 5, 16)), .Names = c("id", "occasion", "g"), row.names = c(NA, -24L), class = "data.frame")

Chúng tôi phù hợp với một mô hình thành phần phương sai đơn giản. Trong R chúng ta có:

require(lme4)
fit.vc <- lmer( g ~ (1|id), data=dt.m )

Sau đó, chúng tôi sản xuất một âm mưu sâu bướm:

rr1 <- ranef(fit.vc, postVar = TRUE)
dotplot(rr1, scales = list(x = list(relation = 'free')))[["id"]]

Âm mưu sâu bướm từ R

Bây giờ chúng tôi phù hợp với mô hình tương tự trong Stata. Đầu tiên ghi vào định dạng Stata từ R:

require(foreign)
write.dta(dt.m, "dt.m.dta")

Ở Stata

use "dt.m.dta"
xtmixed g || id:, reml variance

Đầu ra đồng ý với đầu ra R (không hiển thị) và chúng tôi cố gắng tạo ra cùng một lô sâu bướm:

predict u_plus_e, residuals
predict u, reffects
gen e = u_plus_e – u
predict u_se, reses

egen tag = tag(id)
sort u
gen u_rank = sum(tag)

serrbar u u_se u_rank if tag==1, scale(1.96) yline(0)

nhập mô tả hình ảnh ở đây

Clearty Stata đang sử dụng một lỗi tiêu chuẩn khác với R. Trên thực tế, Stata đang sử dụng 2.13 trong khi R đang sử dụng 1.32.

Từ những gì tôi có thể nói, 1.32 trong R đến từ

> sqrt(attr(ranef(fit.vc, postVar = TRUE)[[1]], "postVar")[1, , ])
 [1] 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977

mặc dù tôi không thể nói rằng tôi thực sự hiểu những gì nó đang làm. Ai đó có thể giải thích?

Và tôi không biết 2,13 từ Stata đến từ đâu, ngoại trừ điều đó, nếu tôi thay đổi phương pháp ước tính thành khả năng tối đa:

xtmixed g || id:, ml variance

.... sau đó nó dường như sử dụng 1.32 làm lỗi tiêu chuẩn và tạo ra kết quả tương tự như R ....

nhập mô tả hình ảnh ở đây

.... nhưng sau đó ước tính cho phương sai hiệu ứng ngẫu nhiên không còn đồng ý với R (35.04 so với 31.97).

Vì vậy, nó dường như có liên quan đến ML vs REML: Nếu tôi chạy REML trong cả hai hệ thống, đầu ra mô hình đồng ý nhưng các lỗi tiêu chuẩn được sử dụng trong các lô của sâu bướm không đồng ý, trong khi đó nếu tôi chạy REML ở R và ML ở Stata , các lô sâu bướm đồng ý, nhưng các ước tính mô hình thì không.

Bất cứ ai có thể giải thích những gì đang xảy ra?


Robert, bạn đã xem xét Phương pháp và Công thức của Stata [XT] xtmixedvà / hoặc [XT] xtmixed postestimationchưa? Họ đề cập đến Pinheiro và Bates (2000), vì vậy ít nhất một số phần của toán học phải giống nhau.
StasK

@StasK Tôi đã thấy một tài liệu tham khảo về Pinheiro và Bates trước đó, nhưng vì một số lý do tôi không thể tìm thấy nó ngay bây giờ! Tôi đã thấy Lưu ý kỹ thuật về dự đoán hiệu ứng ngẫu nhiên; rằng nó sử dụng "lý thuyết chuẩn về khả năng tối đa" và kết quả đã cho rằng ma trận phương sai tiệm cận đối với việc trở thành nghịch đảo âm của Hessian. nhưng thành thật mà nói điều này không thực sự giúp tôi! [có thể do tôi thiếu hiểu biết]
Robert Long

Đây có thể là bất kỳ mức độ điều chỉnh tự do nào được thực hiện khác nhau trong Stata vs R không? Tôi chỉ đang suy nghĩ lớn.
StasK

@StasK Tôi cũng nghĩ về điều đó, nhưng tôi đã kết luận rằng sự khác biệt - 1.32 vc 2.13 - là quá lớn. Tất nhiên, đây là cỡ mẫu nhỏ - số lượng cụm nhỏ và số lượng quan sát nhỏ trên mỗi cụm, vì vậy tôi sẽ không ngạc nhiên khi biết rằng bất cứ điều gì gây ra nó, đều được khuếch đại bởi kích thước mẫu.
Robert Long

Câu trả lời:


6

Theo [XT]hướng dẫn cho Stata 11:

Các lỗi tiêu chuẩn cho BLUP được tính toán dựa trên kỹ thuật lặp của Bates và Pinheiro (1998, giây 3.3) để ước tính chính các BLUP. Nếu ước tính được thực hiện bởi REML, các lỗi tiêu chuẩn này sẽ gây ra sự không chắc chắn trong ước tính , trong khi đối với ML, các lỗi tiêu chuẩn xử lý như đã biết. Do đó, các lỗi tiêu chuẩn của BLUP dựa trên REML thường sẽ lớn hơn.ββ

Vì các lỗi tiêu chuẩn Stata ML khớp với các lỗi tiêu chuẩn từ R trong ví dụ của bạn, có vẻ như R không tính đến sự không chắc chắn trong việc ước tính . Cho dù nó nên, tôi không biết.β

Từ câu hỏi của bạn, bạn đã thử REML ở cả Stata và R và ML ở Stata với REML ở R. Nếu bạn thử ML ở cả hai, bạn sẽ nhận được kết quả giống nhau ở cả hai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.