r语言 - 有没有办法检查数据中所有变量(依赖)的回归



有没有办法使所有变量都成为目标变量,并对照其他自变量检查回归结果。例如

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 是因变量,其余变量(Var2 和 Var3(是独立的。然后是 2 个实例,Var2 是因变量,rest(Var1 和 Var3(是独立的,依此类推。有没有办法做到这一点?

您可以使用这样的东西来获取所需的公式:

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>

然后,您只需要将每个公式传递到lapply中的lm

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 

如果要针对所有其他变量回归 Var1,可以执行以下操作:

lm(Var1 ~. , data = myData)

如果您只想选择多个选项卡一个变量,您还可以使用:

lm(Var1 ~ Var2 + Var3, data = myData)

以下是基于这些问题的答案:1、2 和 3。请参阅其中的解释。

主要区别在于它循环(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)

最新更新