Nhận dự đoán chỉ có hiệu lực cố định từ mô hình hỗn hợp trên dữ liệu mới trong R


8

Tôi muốn xây dựng dự đoán cho một mô hình hỗn hợp (logistic qua glmer) trên một tập dữ liệu mới chỉ sử dụng các hiệu ứng cố định, giữ các hiệu ứng ngẫu nhiên thành 0. Nhưng tôi gặp khó khăn khi thiết lập ma trận mô hình để có thể tính toán chúng.

Vì lớp mer không có phương thức dự đoán và vì tôi muốn bỏ qua các hiệu ứng ngẫu nhiên cho các dự đoán trên tập dữ liệu mới, tôi nghĩ rằng tôi cần xây dựng một ma trận mô hình cho các hiệu ứng cố định của cùng một cấu trúc được sử dụng trong bản gốc mô hình, nhưng sử dụng dữ liệu mới. Sau đó nhân với các hệ số hiệu ứng cố định trong mô hình.

Phần hiệu ứng cố định trong công thức mô hình của tôi chứa các yếu tố và thuật ngữ tương tác giữa các hiệu ứng cố định số, do đó, nó phức tạp hơn một chút so với việc chỉ trích xuất các biến cố định từ ma trận. ví dụ: tôi cần đảm bảo mở rộng độ tương phản của yếu tố giống với nguyên bản, các điều khoản tương tác được liệt kê đúng, v.v.

Vì vậy, câu hỏi của tôi là: cách tiếp cận chung đơn giản hơn để xây dựng một ma trận mô hình mới bắt chước cấu trúc của ma trận mô hình ban đầu được sử dụng trong việc tạo mô hình là gì?

Tôi đã thử model.matrix (my.model, data = newdata) nhưng dường như điều đó trả về ma trận mô hình ban đầu, không phải là ma trận dựa trên newdata.

Mã mẫu:

library(lme4)

cake2 <- head(cake) # cake2 is "new" data frame for future predictions

# recipe is a fixed effect factor, temp is fixed effect numeric, replicate is random effect
m <- lmer(angle ~ temp + recipe + (1 | replicate), data=cake)
summary(m)

nrow(cake2)         # but new data frame has 6 rows
nrow(cake)          # original data frame has 270 rows

# attempt to make new model matrix using different data frame
mod.mat.cake2 <- model.matrix(m, data=cake2)
nrow(mod.mat.cake2) # 270 rows, same as orig data frame

Tôi đã thử các phương pháp khác như trích xuất các thuật ngữ từ công thức và xây dựng một công thức mới từ đó, nhưng nó có vẻ quá phức tạp và dễ vỡ trong việc xử lý các yếu tố và thuật ngữ tương tác.

Làm cách nào tôi có thể nhận mod.mat.cake2 trở thành ma trận mô hình hiệu ứng cố định dựa trên công thức tính bằng m, nhưng sử dụng các giá trị từ cake2? Hoặc có một cách dễ dàng hơn để có được các dự đoán chỉ có hiệu lực cố định từ một mô hình lmer?

Tất cả sự giúp đỡ được đánh giá cao. Cảm ơn bạn.


Cách tiếp cận rất đơn giản nhưng đơn giản: nếu thời gian tính toán không phải là yếu tố chính (nghĩa là bạn không phải làm điều này rất nhiều lần), bạn có thể điều chỉnh dữ liệu mới lm()và trích xuất ma trận mô hình từ sự phù hợp và áp dụng nó vào hệ số mô hình từ sự phù hợp trước đó.
Macro

Câu trả lời:


13

Có lẽ đây là gian lận, nhưng

fixedformula <- as.formula(lme4.0:::nobars(formula(m))[-2])
model.matrix(fixedformula,newdata=cake2)

Ghi chú:

  • Tôi đang sử dụng lme4.0ở đây, đó là phiên bản r-rèn của "cũ" (Cran) lme4: bạn có thể thay thế lme4cho lme4.0trong đoạn mã trên
  • phiên bản mới (r-forge / Development) lme4có một predictphương thức: trong trường hợp đó

    predict(m,re.form=NA,newdata=cake2)

hoạt động tốt ( re.form=NAđặt tất cả các hiệu ứng ngẫu nhiên về 0, tương đương với level=0predict.lme)


1
Cảm ơn anh Ben. Tôi gặp khó khăn để có được giải pháp đầu tiên để làm việc đúng. Nhưng việc chuyển sang phiên bản dev của lme4 và sử dụng hàm dự đoán / REform = NA sẽ thực hiện thủ thuật mà không phải lộn xộn với các chi tiết của ma trận mô hình. Có một số tính năng dường như chưa được triển khai trong phiên bản dev mà tôi đang sử dụng trong mã của mình (đặc biệt, tôi dường như không thể trích xuất các postVars hiệu ứng ngẫu nhiên một cách dễ dàng), nhưng tôi thích có thể sử dụng chức năng dự đoán và đợi cho đến khi lme4 mới hoàn thành cho các phần khác.
đại tá.triq

Điều này có thể rõ ràng, nhưng nếu bạn có thể viết ra một ví dụ (rất) nhỏ, khép kín về những gì bạn muốn làm mà không hoạt động trong phiên bản dev và gửi nó cho tôi, điều đó sẽ hữu ích
Ben Bolker
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.