lme4中的提取函数功能失调?

时间:2015-06-03 23:51:56

标签: r lme4

我试图理解lmerR函数背后的线性代数运算,我在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。

在网上搜索,我发现道格拉斯现在正在使用朱莉娅(下一个统计语言可以用一个不那么难以置信的名字吗?不,不是&#34; Pied Pier&#34;对不起,我离题了......)。

我做错了什么? lme4现在是孤儿还是腐烂?幻灯片中是否有拼写错误?

1 个答案:

答案 0 :(得分:3)

你正在看很旧的幻灯片。

符号/内部表示有所改变,但是可以按如下方式从内部信息重建方差 - 协方差矩阵(内部Lambdat等效于旧符号中的t(T %*% S))。 / p>

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