groupedData() 的问题

issues with groupedData()

我正在学习有关混合效果模型的教程。本教程使用来自 mlmRev 包的 egsingle 数据集。作为教程的一部分,作者使用 groupedData() 作为:

egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle)

谁能帮我理解 "schoolid/childid" 指的是什么?

请注意,schoolid 和 childid 都是因素!

此外,在本教程的后面部分,作者采用了 50 大小的样本,并使用 lmList() 为每个受试者拟合 OLS 回归:

egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle)
samp <- sample(levels(egsingle$childid), 50)
level2.subgroup <- subset(egsingle, childid %in% samp)

# fitting a separate OLS regression line to each student
level2 <- lmList(math ~ year | childid, data = level2.subgroup)
plot(augPred(level2))

当我在上面执行 运行 lmList 命令时,出现以下错误:

Error in eval(expr, envir, enclos) : object 'childid' not found
In addition: Warning messages:
1: In lmList(math ~ year | childid, data = level2.subgroup) :
lmList does not (yet) work correctly on groupedData objects
2: In Ops.factor(schoolid, childid) : ‘/’ not meaningful for factors

谁能帮我弄清楚为什么会出现这些错误?

  1. 正如 Roman Luštrik 评论的那样,schoolid/chilidid 意味着 "school ID" 和 "child ID nested within school ID" 都是分组变量。嵌套形式正式构建了上下层的交互;启发式地,它让计算机知道 "child 1 in school 1" 和 "child 1 in school 2" 是不同的个体。

  2. 您遇到了 nlmelme4 包中 lmList 版本之间的冲突问题。如果您 运行 完全 来自干净 R 会话的这些行:

## load data without loading package & dependencies
data(egsingle, package="mlmRev")
library("nlme")

egsingle <- groupedData(math ~ year | schoolid/childid, data = egsingle)
samp <- sample(levels(egsingle$childid), 50)
level2.subgroup <- subset(egsingle, childid %in% samp)

# fitting a separate OLS regression line to each student
level2 <- lmList(math ~ year | childid, data = level2.subgroup)
plot(augPred(level2))

它应该可以正常工作。如果您 library("mlmRev") 之前加载 nlme (因此 nlme 在搜索路径中 lme4 之前),它也应该有效,或者如果您明确指定 nlme::lmList 这样您就不会不小心选择 lme4::lmList.