【发布时间】:2015-02-24 05:23:15
【问题描述】:
我有一个包含 1-3 个版本的因变量和 10-15 个自变量的数据集。我想为模型运行 glm 命令,但希望它循环所有可能的自变量组合。我从来没有为循环写过代码,我想确保我设置正确。
下面是我的数据框的一小部分。实际的数据框对每个变量都有一个明确的名称;不仅仅是“DepVar1”或“IndVar1”。
dfPRAC <- structure(list(DepVar1 = c(0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1), DepVar2 = c(0, 1, 0, 0,
1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1),
IndVar1 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
0, 0, 0, 1, 0, 0, 0, 1, 0), IndVar2 = c(1, 3, 9, 1, 5, 1,
1, 8, 4, 6, 3, 15, 4, 1, 1, 3, 2, 1, 10, 1, 9, 9, 11, 5),
IndVar3 = c(0.500100322564443, 1.64241601558441, 0.622735778490702,
2.42429812749226, 5.10055213237027, 1.38479786027561, 7.24663629203007,
0.5102348706939, 2.91566510995229, 3.73356170379198, 5.42003495939846,
1.29312896116503, 3.33753833987496, 0.91783513806083, 4.7735736131668,
1.17609362602233, 5.58010703426296, 5.6668754863739, 1.4377813063642,
5.07724130837643, 2.4791994535923, 2.55100067348583, 2.41043629522981,
2.14411703944206)), .Names = c("DepVar1", "DepVar2", "IndVar1",
"IndVar2", "IndVar3"), row.names = c(NA, 24L), class = "data.frame")
我当前运行单个 glm 模型的代码是:
RegPRAC <- glm(DepVar1 ~ IndVar1, data=dfPRAC, family=binomial("logit"))
summary(RegPRAC)
我想为所有可能的自变量组合以及因变量的所有组合运行模型,但我不确定从哪里开始。我在想这样的事情:
for (i in dfPRAC$IndVar1:dfPRAC$IndVar3) {glm(DepVar1 ~ i, data=dfPRAC, family=binomial("logit")) }
我尝试运行它,但出现了几个错误。任何建议将不胜感激。
【问题讨论】:
-
你得到什么错误?
-
model.frame.default(formula = DepVar1 ~ i, data = dfPRAC, drop.unused.levels = TRUE) 中的错误:可变长度不同(为“i”找到)另外:警告消息: 1: 在 dfPRAC$IndVar1:dfPRAC$IndVar3 : 数值表达式有 24 个元素: 只使用第一个 2: 在 dfPRAC$IndVar1:dfPRAC$IndVar3 : 数值表达式有 24 个元素: 只使用第一个