Calcular predicciones de efectos aleatorios manualmente para un modelo mixto lineal

10

Estoy tratando de calcular las predicciones de efectos aleatorios de un modelo mixto lineal a mano, y usando la notación proporcionada por Wood en modelos aditivos generalizados: una introducción con R (pg 294 / pg 307 de pdf), me estoy confundiendo sobre cada parámetro representa.

A continuación se muestra un resumen de Wood.

Definir un modelo mixto lineal.

Y=Xβ+Zsi+ϵ

donde b N (0, ψ ) y ϵ N (0, σ2 )

Si bye son variables aleatorias con distribución normal conjunta

[siy]norte[[0 0Xβ],[ψΣsiyΣysiΣθσ2]]

Las predicciones de RE se calculan por

mi[siy]=ΣsiyΣyy-1(y-Xβ)=ΣsiyΣθ-1(y-Xβ)/ /σ2=ψzTΣθ-1(y-Xβ)/ /σ2

donde Σθ=ZψZT/ /σ2+yonorte

Usando un ejemplo de modelo de intercepción aleatoria del lme4paquete R obtengo salida

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

Así que a partir de esto, creo que = 23.51, ( Y - X β ) puede estimarse a partir y desde la plaza de los residuos a nivel de población.ψ(y-Xβ)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)

Multiplicar estos juntos da

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

que no es correcto en comparación con

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

¿Por qué?

usuario2957945
fuente

Respuestas:

9

Dos problemas (confieso que me tomó como 40 minutos detectar el segundo):

  1. σ223.51

    sig <- 23.51

    ψ39.19

    psi <- 39.19
  2. Los residuos no se obtienen con cake$angle - predict(m, re.form=NA)sino con residuals(m).

Poniendo todo junto:

> 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

que es similar al ranef(m).

Realmente no entiendo lo que predictcomputa.


PD. Para responder a su última observación, el punto es que utilizamos los como una manera de obtener el vector P Y donde P = V - 1 - V - 1 X (ϵ^PAGYPAG=V-1-V-1X(XV-1X)-1XV-1

ϵ^=σ2PAGY
si^=ψZtPAGY.

si^=ψ/ /σ2Ztϵ^

Elvis
fuente
1
y-Xβplot(residuals(m), cake$angle-predict(m, re.form=NULL)) ; plot(residuals(m), cake$angle-predict(m, re.form=NA))
1
Una manera de utilizar el efecto fijo, y la tercera versión de la E [b | y] anterior: 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)). Gracias por señalar los artículos correctos.
user2957945
ΣsiyΣyy
ΣysiψZ
Elvis, tuve otro pequeño pensamiento sobre esto (sé que soy lento). Creo que usar los residuos como este no es realmente sensato, ya que usa los valores pronosticados (y, por lo tanto, los residuos) en el nivel RE para calcular, por lo que lo estamos usando en ambos lados de su ecuación. (por lo que utiliza las predicciones RE (E [b | y]) para hacer las predicciones de los residuos a pesar de que estos son los términos que estamos tratando de predecir))
user2957945