手动计算线性混合模型的随机效应预测

机器算法验证 混合模式 lme4-nlme
2022-03-16 07:31:15

我正在尝试手动计算线性混合模型的随机效应预测,并使用 Wood 在Generalized Additive Models: an Introduction with R (pg 294 / pg 307 of pdf) 中提供的符号,我对每个参数的含义感到困惑代表。

以下是伍德的摘要。

定义线性混合模型

Y=Xβ+Zb+ϵ

其中 b N(0, ) 和 N(0, )ψϵσ2

如果 b 和 y 是具有联合正态分布的随机变量

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

RE预测由下式计算

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

其中Σθ=ZψZT/σ2+In

使用lme4R 包中的随机截距模型示例,我得到输出

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

因此,据此,我认为 = 23.51,可以从从总体水平残差的平方进行估计。ψ(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)

将这些相乘得到

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

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

为什么?

1个回答

两个问题(我承认我花了 40 分钟才发现第二个问题):

  1. 您不能用残差的平方计算,它由 REML 估计为,并且不能保证 BLUP 将具有相同的方差。σ223.51

    sig <- 23.51
    

    这不是估计为ψ39.19

    psi <- 39.19
    
  2. 残差不是用cake$angle - predict(m, re.form=NA)而是用获得的residuals(m)

把它放在一起:

> 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

这类似于ranef(m)

我真的不明白什么predict计算。


PS。为了回答你的最后一句话,关键是我们使用“残差”作为获得向量的一种方式,其中该矩阵是在 REML 算法期间计算的。它通过 ϵ^PYP=V1V1X(XV1X)1XV1

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

因此b^=ψ/σ2Ztϵ^