【发布时间】:2019-08-28 20:05:07
【问题描述】:
我正在尝试运行回归并在虚拟/二元变量取值为 1 时运行它。我有一组 5 个虚拟变量并想要 5 个回归,它们都具有相同的因变量:Y|d1== 1 ~ x1 + x2,Y|d2==1 ~ x1 + x2。我有以下最小的工作示例:
set.seed(123)
df <- data.frame(
x1 = rnorm(10, mean=0, sd=1),
x2 = rnorm(10, mean=0, sd=1),
Y = rnorm(10, mean=0, sd=1),
d1 = sample(0:1, 10000, replace=T),
d2 = sample(0:1, 10000, replace=T)
)
n <- 2
regList <- vector(mode = "list", length = n)
names(regList) <- c("first", "second")
for(i in seq_along(regList)){
regList[[i]] <- lm(Y ~ x1 + x2, df)
}
我不确定如何“更新”因变量。我正在考虑使用:
form <- update(form, ...)
在 -lm- 部分之前的循环中,但不确定如何正确使用它。 我对此很陌生。任何事情都会有所帮助,我找不到足够相似的问题,如果我错过了,请告诉我。我在 -lm- 的开头只有“Y”,但很明显,这只是给了我 n 次相同的输出。不确定如何实现 if 函数或对其进行分层的方法。我想在数据框中使用相同的 Y,但前提是该特定虚拟变量包含 1,或者如果我可以使用原始字符串变量并在 X* 上回归 Y(如果 string=="name")。
【问题讨论】:
-
我已经相应更新了,感谢您指出这一点。
-
有一点要提一下,在我的真实数据集中,d1 和 d2 是互斥的——我不知道如何在我的工作示例中包含这个,因为我生成了随机虚拟变量
标签: r for-loop regression