r - 通过 lmer() 使用预测变量矩阵

标签 r lme4

我正在尝试使用大量预测变量来拟合模型,因此在模型公式中枚举它们会很乏味。使用 lm() 可以很简单地做到这一点:

indicatorMatrix <- data.frame(matrix(rbinom(26000, 1, 1/3), ncol = 26))
colnames(indicatorMatrix) <- LETTERS
someDV <- rnorm(nrow(indicatorMatrix))

head(indicatorMatrix) 

# One method, enumerating variables by name:
olsModel1 <- lm(someDV ~ A + B + C + D,  # ...etc.
               data = indicatorMatrix)

# Preferred method, including the matrix of predictors:
olsModel2 <- lm(someDV ~ as.matrix(indicatorMatrix))
summary(olsModel2)

由于我有大量的预测变量(超过本发明示例中的 26 个),因此我不想像第一个示例那样单独列出它们(someDV ~ A + B + C + D ...),我可以通过仅包含预测变量 as.matrix 来避免这种情况。

但是,我想拟合混合效果模型,如下所示:

library(lme4)
meModel1 <- lmer(someDV ~ (1 | A) + (1 | B) + (1 | C),  # ...etc.
                 data = indicatorMatrix)
summary(meModel1)

除了我想包含大量随机效应项。我不想输入 (1 | A) ... (1 | ZZZ),而是希望以类似于用于 olsModel2 的矩阵方法的方式包含每个预测变量> 如上所述。显然,以下内容不起作用:

meModel2 <- lmer(someDV ~ (1 | as.matrix(indicatorMatrix)))

对于如何使用 lmer() 最好地复制随机效应的矩阵预测器方法,您有什么建议吗?我非常愿意考虑“实用”的解决方案(即黑客),只要它们是“程序化的”,并且不需要我复制和粘贴等。

预先感谢您的宝贵时间。

最佳答案

认为将公式构建为字符串,然后使用as.formula,类似于

restring1 <- paste0("(1 | ",colnames(indicatorMatrix),")",collapse="+")
form <- as.formula(paste0("someDV ~",restring1))
meModel1 <- lmer(form, data = data.frame(someDV,indicatorMatrix))

应该可以工作(无论如何,它在我的系统上运行时不会提示......)

关于r - 通过 lmer() 使用预测变量矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737353/

相关文章:

r - 将日期分为年,月和日的不同列

r - 临时连接周围的r.data.table函数包装器(链中聚合)

r - 无法基于 ranef(lmerMod) 更改 dotplot() (格子包)的布局

r - 混合模型的 R 和 SAS 中的 AIC 计算不匹配

r - 将lmer的预测值绘制为单个图

r 用未知的列数将数据从长到宽重新整形

r - 推特:一次获得多个用户的关注者

r - 在ggplot中创建多列图例

R 3.3.2 : lme4 + lmerTest problems under Mac OS Sierra

r - 在 R 2.15.2 上安装 Ime4 和 ggplot2 时出现问题