有没有一种方法可以使所有变量成为目标变量,并对照其他自变量检查回归结果。例如
df
Date Var1 Var2 Var3
27/9/2019 12 45 59
28/9/2019 34 43 54
29/9/2019 45 23 40
通常,如果要查看Var1和Var2之间的关系,我会使用以下代码
lm(Var1 ~ Var2, data = myData)
如果我想查看所有变量(Var1,Var2和Var3)的结果,例如,在一个实例中,Var1是因变量,而rest(Var2和Var3)是独立的。然后,在2个实例中,Var2是因变量,而rest(Var1和Var3)是独立的,依此类推。有办法吗?
答案 0 :(得分:2)
您可以使用类似的方法来获取所需的公式:
vars <- names(df)[-1] # we can eliminate the dates
forms <- lapply(1:length(vars),
function(i) formula(paste(vars[i], "~", paste(vars[-i], collapse = "+")))
)
输出:
[[1]]
Var1 ~ Var2 + Var3
<environment: 0x7fdaaa63abd0>
[[2]]
Var2 ~ Var1 + Var3
<environment: 0x7fdaaa63c508>
[[3]]
Var3 ~ Var1 + Var2
<environment: 0x7fdaaec0d2a8>
然后,您只需要将每个公式传递到lm
中的lapply
中:
mods <- lapply(forms, lm, data = df)
输出:
[[1]]
Call:
FUN(formula = X[[i]], data = ..1)
Coefficients:
(Intercept) Var2 Var3
196.403 3.514 -5.806
[[2]]
Call:
FUN(formula = X[[i]], data = ..1)
Coefficients:
(Intercept) Var1 Var3
-55.8933 0.2846 1.6522
[[3]]
Call:
FUN(formula = X[[i]], data = ..1)
Coefficients:
(Intercept) Var1 Var2
33.8301 -0.1722 0.6053
答案 1 :(得分:0)
如果要针对所有其他变量回归Var1,可以执行以下操作:
lm(Var1 ~. , data = myData)
如果您只想选择更多的选项卡变量,则还可以使用:
lm(Var1 ~ Var2 + Var3, data = myData)
答案 2 :(得分:0)
主要区别在于它在输入数据集的列中循环(lapply
)并构建完整模型,其中每个列向量均作为响应,而所有其他列向量均作为预测变量。然后疏通整个模型。
library(MuMIn)
model_list <- lapply(names(df1), function(resp){
fmla <- as.formula(paste(resp, "~ ."))
print(fmla)
full <- lm(fmla, data = df1, na.action = na.fail)
dredge(full)
})
model_list
测试数据创建代码。
set.seed(1234)
df1 <- replicate(3, sample(10:99, 100, TRUE))
df1 <- as.data.frame(df1)
names(df1) <- paste0("Var", 1:3)