使用lmer()的预测变量矩阵

时间:2012-10-04 23:15:20

标签: 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()最好地复制矩阵预测方法的随机效果,您有什么建议吗?我非常愿意考虑&#34;实用的&#34;解决方案(即黑客),只要它们是&#34;程序化的,&#34;并且不要求我复制&amp;粘贴等等。

提前感谢您的时间。

1 个答案:

答案 0 :(得分:2)

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

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

应该可以工作(无论如何都可以在我的系统上运行...)