2015-02-05 13 views
5

Đây có thể là báo cáo lỗi hơn câu hỏi, nhưng: tại sao sử dụng đối số newdata để dự đoán sử dụng cùng một tập dữ liệu như dữ liệu đào tạo đôi khi tạo ra các dự đoán khác nhau bỏ qua đối số newdata và sử dụng tập dữ liệu đào tạo một cách rõ ràng?predict.gifmer trên tập huấn luyện khác nhau và không có newdata

library(lme4) 
packageVersion("lme4") # 1.1.8 
m1 <- glmer(myformula, data=X, family="binomial") 
p1 <- predict(m1, type="response") 
p2 <- predict(m1, type="response", newdata=X) 
all(p1==p2) # FALSE 

Đây không chỉ là lỗi làm tròn. Tôi đang thấy số cor(p1,p2) trả lại 0,8.

Điều này dường như bị cô lập với các kiểu có sườn dốc. Trong ô sau, ẩn ngụ có nghĩa là predict(..., type="response") không có dữ liệu mới và rõ ràng có nghĩa là predict(..., type="response", newdata=X), trong đó X giống như đào tạo. Sự khác biệt duy nhất giữa mô hình 1 và các mô hình khác là mô hình 1 chỉ chứa (ngẫu nhiên) các chặn, và các mô hình khác có các chặn ngẫu nhiên và các sườn ngẫu nhiên.

enter image description here

+0

Nó sẽ rất hữu ích để cung cấp một [tái sản xuất ví dụ] (http://stackoverflow.com/questions/5963269/how-to- ví dụ tạo mẫu) với dữ liệu đầu vào mẫu sao cho chúng tôi cũng có thể chạy mã để xác minh. Hãy chắc chắn bao gồm cách bạn chỉ định công thức. – MrFlick

+1

@MrFlick; thử với 'm1 <- lmer (Reaction ~ Days + (Days || Subject), sleepstudy)' – user20650

+1

Hmm, các dự đoán bằng nhau bằng 'newX' thay vì' newdata' – user20650

Trả lời

4

Nó chỉ ra rằng đây là một lỗi trong predict.merMod đã được cố định trong phiên bản phát triển (trong tháng 11 năm 2014, như this Github issue). Nếu bạn đã cài đặt công cụ biên dịch, bạn có thể cài đặt các phiên bản phát triển trực tiếp từ Github qua

devtools::install_github("lme4/lme4") 
Các vấn đề liên quan