通过R中线性回归的两个预测变量组合

时间:2017-02-12 19:40:23

标签: r regression combinations lm linear

假设我有X1,...,X14个潜在预测因子。

现在对于给定的Y我想制定OLS方案:

Y~X1+X2
Y~X1+X3
 ....
Y~X1+X14
....
Y~X14+X13

基本上是所有预测变量的两种组合。在创建所有这些回归之后,我想在predict函数中使用它们(如果可能)。

我的问题是:如何通过两种回归量组合来完成所有这些回归?

2 个答案:

答案 0 :(得分:3)

您可以对所有组合使用combn,然后使用apply创建所有公式:

#all the combinations
all_comb <- combn(letters, 2)

#create the formulas from the combinations above and paste
text_form <- apply(all_comb, 2, function(x) paste('Y ~', paste0(x, collapse = '+')))

输出

> text_form
  [1] "Y ~ a+b" "Y ~ a+c" "Y ~ a+d" "Y ~ a+e" "Y ~ a+f" "Y ~ a+g".....

然后,您可以使用as.formula将上述公式输入到回归中,将文本转换为公式(最有可能在另一个apply中)。

答案 1 :(得分:3)

您也可以将它们放在一行中,如下所示:

mySpecs <- combn(letters[1:3], 2, FUN=function(x) reformulate(x, "Y"),
                 simplify=FALSE)

返回可在lapply中使用以运行回归的列表:

mySpecs
[[1]]
Y ~ a + b
<environment: 0x4474ca0>

[[2]]
Y ~ a + c
<environment: 0x4477e68>

[[3]]
Y ~ b + c
<environment: 0x447ae38>

然后,您将执行以下操作以获取回归结果列表。

myRegs <- lapply(mySpecs, function(i) lm(i, data=df))