有没有一种方法可以检查数据中所有变量(因变量)的回归

时间:2019-10-13 14:31:51

标签: r statistics regression

有没有一种方法可以使所有变量成为目标变量,并对照其他自变量检查回归结果。例如

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)是独立的,依此类推。有办法吗?

3 个答案:

答案 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)

以下内容基于以下问题的答案:123。请参阅其中的说明。

主要区别在于它在输入数据集的列中循环(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)