lme4 中的提取器函数功能失常?

Extractor Functions in lme4 Misfunctioning?

我试图理解 Rlmer 函数背后的线性代数运算,我在 lecture 上找到了一个看起来很棒的在线资源由 lme4 软件包的创建者 Douglas Bates 提供。

该示例处理数据集 Dyestuff 并调用混合效应模型如下:

fm1 <- lmer(Yield ~ 1 + (1 | Batch), Dyestuff)

以下幻灯片包含用于提取随机效应的基础矩阵的代码行,例如:

efm1 <- expand(fm1)
efm1$S
6 x 6 diagonal matrix of class "ddiMatrix"

#       [,1]      [,2]    [,3]    [,4]    [,5]    [,6]
[1,]  0.84823       .       .       .       .       .
[2,]       .  0.84823       .       .       .       .
[3,]       .       .  0.84823       .       .       .
[4,]       .       .       .  0.84823       .       .
[5,]       .       .       .       .  0.84823       .
[6,]       .       .       .       .       .  0.84823

并且,

efm1$T6 x 6 sparse Matrix of class "dtCMatrix"
[1,] 1 . . . . .
[2,] . 1 . . . .
[3,] . . 1 . . .
[4,] . . . 1 . .
[5,] . . . . 1 .
[6,] . . . . . 1

或者,

(fm1S <- tcrossprod(efm1$T %*% efm1$S))

6 x 6 sparse Matrix of class "dsCMatrix"

[1,] 0.71949 .       .       .       .       .
[2,] .       0.71949 .       .       .       .
[3,] .       .       0.71949 .       .       .
[4,] .       .       .       0.71949 .       .
[5,] .       .       .       .       0.71949 .
[6,] .       .       .       .       .       0.71949

然而,当我尝试 运行 R 上的同一行代码时,我收到以下错误消息:

efm1 <- expand(fm1)

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘expand’ for signature ‘"lmerMod"’

不足为奇,

efm1$S
Error: object 'efm1' not found

执行 ?expand 将此函数标识为仍然存在,并且似乎意味着生成矩阵分解,例如 LU 或 RQ。

上网一搜,发现Douglas现在用的是Julia(下一个统计语言能不能有个不太靠谱的名字?不,不是"Pied Pier"!对不起,我跑题了...)。

我做错了什么? lme4 现在是孤儿和腐烂了吗?幻灯片中有错字吗?

您正在查看非常旧的幻灯片。

notation/internal 表示有些变化,但是从内部信息重建方差-协方差矩阵可以如下进行(内部 Lambdat 相当于旧的 t(T %*% S)表示法)。

library("lme4")
fm1 <- lmer(Yield ~ 1 + (1 | Batch), Dyestuff)
crossprod(getME(fm1,"Lambdat"))