lme4 中的提取器函数功能失常?
Extractor Functions in lme4 Misfunctioning?
我试图理解 R
中 lmer
函数背后的线性代数运算,我在 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
现在是孤儿和腐烂了吗?幻灯片中有错字吗?
您正在查看非常旧的幻灯片。
- 包的线性混合模型功能的完整描述,包括内部表示的详细信息,是 on arxiv, in press in J. Stat. Software (a reference to this information is also in the citation information for the package on CRAN)。 (我们仍在撰写描述 GLMM 功能的论文。)
getME()
函数是当前推荐的访问模型信息的方法。
lme4
仍在相当活跃的开发中 on github。
- Doug Bates确实对building mixed model frameworks in Julia now更感兴趣,但他还是会在一定程度上参与
lme4
维护
notation/internal 表示有些变化,但是从内部信息重建方差-协方差矩阵可以如下进行(内部 Lambdat
相当于旧的 t(T %*% S)
表示法)。
library("lme4")
fm1 <- lmer(Yield ~ 1 + (1 | Batch), Dyestuff)
crossprod(getME(fm1,"Lambdat"))
我试图理解 R
中 lmer
函数背后的线性代数运算,我在 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
现在是孤儿和腐烂了吗?幻灯片中有错字吗?
您正在查看非常旧的幻灯片。
- 包的线性混合模型功能的完整描述,包括内部表示的详细信息,是 on arxiv, in press in J. Stat. Software (a reference to this information is also in the citation information for the package on CRAN)。 (我们仍在撰写描述 GLMM 功能的论文。)
getME()
函数是当前推荐的访问模型信息的方法。lme4
仍在相当活跃的开发中 on github。- Doug Bates确实对building mixed model frameworks in Julia now更感兴趣,但他还是会在一定程度上参与
lme4
维护
notation/internal 表示有些变化,但是从内部信息重建方差-协方差矩阵可以如下进行(内部 Lambdat
相当于旧的 t(T %*% S)
表示法)。
library("lme4")
fm1 <- lmer(Yield ~ 1 + (1 | Batch), Dyestuff)
crossprod(getME(fm1,"Lambdat"))