Tính toán dự đoán hiệu ứng ngẫu nhiên theo cách thủ công cho mô hình hỗn hợp tuyến tính


10

Tôi đang cố gắng tính toán các dự đoán hiệu ứng ngẫu nhiên từ mô hình hỗn hợp tuyến tính bằng tay và sử dụng ký hiệu được cung cấp bởi Wood trong Mô hình phụ gia tổng quát: giới thiệu với R (pg 294 / pg 307 của pdf), tôi đang bối rối về từng tham số đại diện.

Dưới đây là một bản tóm tắt từ Gỗ.

Xác định mô hình hỗn hợp tuyến tính

Y=Xβ+Zb+ϵ

trong đó b N (0, ) và N (0, )ψϵσ2

Nếu b và y là các biến ngẫu nhiên có phân phối chuẩn khớp

[by]N[[0Xβ],[ψΣbyΣybΣθσ2]]

Dự đoán RE được tính bằng

E[by]=ΣbyΣyy1(yxβ)=ΣbyΣθ1(yxβ)/σ2=ψzTΣθ1(yxβ)/σ2

trong đóΣθ=ZψZT/σ2+In

Sử dụng một ví dụ mô hình chặn ngẫu nhiên từ lme4gói R tôi nhận được đầu ra

library(lme4)
m = lmer(angle ~ temp + (1 | replicate), data=cake)
summary(m)

% Linear mixed model fit by REML ['lmerMod']
% Formula: angle ~ temp + (1 | replicate)
%    Data: cake
% 
% REML criterion at convergence: 1671.7
% 
% Scaled residuals: 
%      Min       1Q   Median       3Q      Max 
% -2.83605 -0.56741 -0.02306  0.54519  2.95841 
% 
% Random effects:
%  Groups    Name        Variance Std.Dev.
%  replicate (Intercept) 39.19    6.260   
%  Residual              23.51    4.849   
% Number of obs: 270, groups:  replicate, 15
% 
% Fixed effects:
%             Estimate Std. Error t value
% (Intercept)  0.51587    3.82650   0.135
% temp         0.15803    0.01728   9.146
% 
% Correlation of Fixed Effects:
%      (Intr)
% temp -0.903

Vì vậy, từ điều này, tôi nghĩ = 23,51, có thể được ước tính từ và từ bình phương của phần dư dân số.ψ(yXβ)cake$angle - predict(m, re.form=NA)sigma

th = 23.51
zt = getME(m, "Zt") 
res = cake$angle - predict(m, re.form=NA)
sig = sum(res^2) / (length(res)-1)

Nhân các số này lại với nhau

th * zt %*% res / sig
         [,1]
1  103.524878
2   94.532914
3   33.934892
4    8.131864
---

không đúng khi so sánh với

> ranef(m)
$replicate
   (Intercept)
1   14.2365633
2   13.0000038
3    4.6666680
4    1.1182799
---

Tại sao?

Câu trả lời:


9

Hai vấn đề (tôi thú nhận rằng tôi mất 40 phút để phát hiện ra vấn đề thứ hai):

  1. Bạn không được tính với bình phương số dư, nó được ước tính bởi REML và không có gì đảm bảo rằng các BLUP sẽ có cùng phương sai.σ223.51

    sig <- 23.51

    Và đây không phải là ! Được ước tính làψ39.19

    psi <- 39.19
  2. Phần dư không thu được với cake$angle - predict(m, re.form=NA)nhưng với residuals(m).

Đặt nó lại với nhau:

> psi/sig * zt %*% residuals(m)
15 x 1 Matrix of class "dgeMatrix"
         [,1]
1  14.2388572
2  13.0020985
3   4.6674200
4   1.1184601
5   0.2581062
6  -3.2908537
7  -4.6351567
8  -4.5813846
9  -4.6351567
10 -3.1833095
11 -2.1616392
12 -1.1399689
13 -0.2258429
14 -4.0974355
15 -5.3341942

đó là tương tự như ranef(m).

Tôi thực sự không có được những gì predicttính toán.


Tái bút Để trả lời nhận xét cuối cùng của bạn, vấn đề là chúng tôi sử dụng "phần dư" như một cách để lấy vectơ trong đó . Ma trận này được tính toán trong thuật toán REML. Nó có liên quan đến BLUP của các thuật ngữ ngẫu nhiên bởi và ϵ^PYP=V1V1X(XV1X)1XV1

ϵ^=σ2PY
b^=ψZtPY.

Do đó .b^=ψ/σ2Ztϵ^


1
Cảm ơn Elvis. Tôi đang vật lộn một chút để sắp xếp các giá trị bạn đã sử dụng trở lại các phương trình trên, tuy nhiên, có vẻ như có nhiều cách để lột da một con mèo. Phần dư tôi thấy hơi ngạc nhiên vì tôi nghĩ nó có nghĩa là , (hiệu ứng cố định) trong khi phần dư được tính bằng các hiệu ứng ngẫu nhiên. (xem sự khác biệt giữa ). yxβplot(residuals(m), cake$angle-predict(m, re.form=NULL)) ; plot(residuals(m), cake$angle-predict(m, re.form=NA))
dùng2957945

1
Một cách sử dụng hiệu ứng cố định và phiên bản thứ ba của E [b | y] ở trên : z = getME(m, "Z") ; big_sig = solve(((z * psi) %*% zt ) / sig + diag(270)) ; psi/sig * zt %*% big_sig %*% (cake$angle-predict(m, re.form=NA)). Cảm ơn đã chỉ ra các mục chính xác.
dùng2957945

Nếu tôi có thể, một Q cuối cùng, tôi có thể lấy trực tiếp hoặc từ đầu ra không? ΣbyΣyy
dùng2957945

Không bằng ? ΣybψZ
Elvis

Elvis, tôi đã có một suy nghĩ khác về điều này (tôi biết tôi chậm). Tôi nghĩ rằng việc sử dụng các phần dư như thế này không thực sự hợp lý vì nó sử dụng các giá trị dự đoán (và phần dư) ở mức RE để tính toán, vì vậy chúng tôi đang sử dụng nó ở cả hai mặt của phương trình của bạn. (vì vậy, nó sử dụng dự đoán RE (E [b | y]) để đưa ra dự đoán về số dư mặc dù đây là những thuật ngữ chúng tôi đang cố gắng dự đoán))
user2957945
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.