2

モデル式でそれらを列挙するのが面倒になるように、多数の予測子を使用してモデルを適合させようとしています。これは、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() を使用したランダム効果の行列予測アプローチを最もよく再現する方法について何か提案はありますか? 私は、「実用的な」解決策 (つまり、ハック) を喜んで検討します。ただし、それらが「プログラム的」であり、コピー & ペーストなどを必要としない限りは。

お時間をいただきありがとうございます。

4

1 に答える 1

2

式を文字列として構築し、次の行に沿って何かを使用すると思いますas.formula

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

動作するはずです(とにかく、システムに文句を言わずに実行されます...)

于 2012-10-04T23:20:49.510 に答える