Có thể chỉ định một mô hình lmer mà không có bất kỳ hiệu ứng cố định?


9

Trong R, làm cách nào để chỉ định mô hình lmer mà không có hiệu ứng cố định toàn cầu? Ví dụ, nếu tôi nói một cái gì đó như

lmer(y ~ (1 | group) + (0 + x | group), data = my_df)

mô hình được trang bị sẽ là

yij=a+αi+βixij

Làm thế nào để tôi phù hợp với mô hình

yij=αi+βixij ?


Câu trả lời đầu gối của tôi là nó lmer(y~0+(1|group)+(0+x|group))sẽ hoạt động, nhưng điều này dẫn đến một lỗi.
Mike Lawrence

4
Tôi không nghĩ có thể chỉ định một mô hình mà không có hiệu ứng cố định với lmer vì gói lme4 chỉ dành riêng cho các mô hình hỗn hợp (với ít nhất một hiệu ứng cố định và một hiệu ứng ngẫu nhiên). Tôi không nhớ đã nhìn thấy các mô hình hiệu ứng ngẫu nhiên trong tài liệu, trong mọi trường hợp. Có thể hữu ích khi yêu cầu nó trong danh sách mô hình hỗn hợp R-sig ( stat.ethz.ch/mailman/listinfo/r-sig-mixed-models )
maxTC

1
Vì tò mò, tại sao bạn lại muốn làm như vậy? Có lẽ có một cách khác để tiếp cận mục tiêu cơ bản của bạn.
jbowman

2
trung tâm yđầu tiên :)
Macro

Câu trả lời:


8

Như @Mike Lawrence đã đề cập đến điều rõ ràng phải làm khi xác định một mô hình không có hiệu ứng cố định là một cái gì đó dưới dạng:

lmer(y ~ -1 + (1|GroupIndicator))

điều này thực sự khá đơn giản; người ta định nghĩa không có đánh chặn hoặc ma trận X. Lý do cơ bản mà điều này không giải quyết được là vì @maxTC đã chỉ ra " gói lme4 chỉ dành riêng cho các mô hình hỗn hợp ".

Cụ thể, những gì phù hợp lmer () thực hiện là tính toán độ lệch được định hình bằng cách giải hồi quy bình phương tối thiểu bị phạt giữa và cũng như các hiệu ứng ngẫu nhiên hình cầu và (Phương trình (11), Tham chiếu. (2)). Tính toán quy trình tối ưu hóa này tính toán phân tách Cholesky của hệ thống tương ứng khai thác cấu trúc khối của hệ thống (Phương trình (5), Tham chiếu (1)). Thiết lập không có hiệu ứng cố định toàn cầu thực tế làm biến dạng cấu trúc khối theo cách mà mã của lmer () không thể đối phó. Trong số những thứ khác, giá trị mong đợi có điều kiện của dựa trên nhưng giải quyết cho yu0u beta beta RXXLXy^yu0uβ^β^hỏi giải pháp của một hệ thống ma trận chưa từng tồn tại (ma trận trong Tham chiếu (1) hoặc trong Tham chiếu (2)). Vì vậy, bạn nhận được một lỗi như:RXXLX

Error in mer_finalize(ans) : 
  Cholmod error 'invalid xtype' at file:../Cholesky/cholmod_solve.c, line 970

nguyên nhân sau tất cả không có gì để giải quyết ngay từ đầu.

Giả sử bạn không muốn viết lại hàm chi phí sai lệch được mô tả bằng lmer (), giải pháp đơn giản nhất dựa trên tiên đề CS-101: rác vào, rác ra .

 N = length(y); Garbage <- rnorm(N); 
 lmer(y ~ -1 + Garbage + (1|GroupIndicator));

Vì vậy, những gì chúng ta làm là xác định một biến đổi chỉ là tiếng ồn; như trước lmer () được hướng dẫn không sử dụng chặn cố định mà chỉ có ma trận X xác định chúng tôi (trong trường hợp này là Rác ma trận cột đơn). Biến nhiễu Gaussian bổ sung này sẽ được mong đợi không tương thích với các lỗi đo mẫu của chúng tôi cũng như với phương sai hiệu ứng ngẫu nhiên của bạn. Không cần phải nói cấu trúc càng nhiều mô hình của bạn có xác suất nhận được các mối tương quan ngẫu nhiên không mong muốn nhưng có ý nghĩa thống kê càng nhỏ.Garbage

Vì vậy, lmer () có biến giả dược (ma trận) để chơi, bạn dự kiến ​​sẽ có liên kết bằng 0 và bạn không phải bình thường hóa dữ liệu của mình theo bất kỳ cách nào (tập trung vào chúng, làm trắng chúng, v.v.) . Có lẽ việc thử một vài khởi tạo ngẫu nhiên của ma trận giả dược cũng sẽ không gây hại. Một lưu ý cuối cùng cho "Rác": sử dụng tiếng ồn Gaussian không phải là "tình cờ"; nó có entropy lớn nhất trong số tất cả các biến ngẫu nhiên có phương sai bằng nhau nên cơ hội cung cấp thông tin ít nhất.β XXβX

Rõ ràng, đây là một thủ thuật tính toán hơn là một giải pháp, nhưng nó cho phép người dùng chỉ định một cách hiệu quả một mô hình lmer mà không có hiệu ứng cố định toàn cầu. Xin lỗi vì hy vọng xung quanh hai tài liệu tham khảo. Nói chung, tôi nghĩ rằng Ref. (1) là đặt cược tốt nhất cho bất cứ ai để nhận ra những gì lmer () đang làm, nhưng Ref. (2) gần với tinh thần của mã thực tế.

Đây là một chút mã trình bày ý tưởng ở trên:

library(lme4)
N= 500;                 #Number of Samples
nlevA = 25;             #Number of levels in the random effect 
set.seed(0)             #Set the seed
e = rnorm(N); e = 1*(e - mean(e) )/sd(e); #Some errors

GroupIndicator =  sample(nlevA, N, replace=T)   #Random Nvel Classes 

Q = lmer( rnorm(N) ~ (1| GroupIndicator ));      #Dummy regression to get the matrix Zt easily
Z = t(Q@Zt);            #Z matrix

RA <-  rnorm(nlevA )                        #Random Normal Matrix
gammas =c(3*RA/sd(RA))                      #Colour this a bit

y = as.vector(  Z %*% gammas +  e )         #Our measurements are the sum of measurement error (e) and Group specific variance

lmer_native <- lmer(y ~ -1 +(1| GroupIndicator)) #No luck here.
Garbage <- rnorm(N)                              #Prepare the garbage

lmer_fooled <- lmer(y ~ -1 + Garbage+(1| GroupIndicator)) #OK...
summary(lmer_fooled)                             #Hey, it sort of works!

Người giới thiệu:

  1. Các mô hình hỗn hợp tuyến tính và bình phương tối thiểu bị phạt bởi DM Bates và S. DebRoy, Tạp chí Phân tích đa biến, Tập 91 Số 1, tháng 10 năm 2004 ( Liên kết đến bản in trước )
  2. Phương pháp tính toán cho các mô hình hỗn hợp của Douglas Bates, tháng 6 năm 2012. ( Liên kết với nguồn )

Có bất kỳ lý do nào để thích cách tiếp cận mà bạn đưa ra so với phương pháp được Marco đề cập trong các bình luận không?
russellpierce

2
Đúng; bạn không thay đổi dữ liệu để không cần chuyển đổi ngược. Kết quả là tất cả các chẩn đoán và goodies chuẩn của lmer (), vd. các biến được trang bị, phần dư, mức hiệu ứng ngẫu nhiên, v.v ... có thể hiểu trực tiếp vì chúng tương ứng với tập dữ liệu "thật" của bạn chứ không phải là "thay đổi".
usεr11852
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.