R线性回归 - 迭代变量

时间:2018-05-21 14:04:03

标签: r loops linear-regression

我无法在线性回归中循环这两个变量,并且想知道是否有人可以提供帮助。

我有多个遵循这种一般模式的数据集

Probe   Test1 Test2 Test-n Control1 Control2 Control-n
Gene1     21    6    97      34      47        34
Gene2     49    32   49      23      12        90
Gene3     23    9    78      58      48        6 
Gene4     19    65   2       42      56        24
Gene5     34    39   28      28      8         94
Gene6     79    26   94      47      31        76
Gene7     33    33   22      78      64        51
Gene8     1     61   26      63      85        83
Gene9     54    84   34      23      32        1
Gene-n    89    65   13      2       84        65

我试图以成对方式运行一系列线性回归,以便计算所有可能的组合,即Test1-Test2,Test1-Test-n等

到目前为止,我只能使用以下代码循环方程式的第二部分。

df <- read.csv("test.csv")
names(df)

varlist <- names(df)[3:7]

models <- lapply(varlist, function(x) {
  lm(substitute(Test1 ~ i, list(i = as.name(x))), data = df)
})

models[[1]]
lapply(models, summary)

但是除了用下一个变量手动替换它之外,我还没有找到关于如何循环Test1的任何信息,考虑到其中一些变量超过1000个,这是不切实际的。

我能找到的最接近的方法是here,但它仍然不是我需要的。我错过了一些明显的东西吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

尝试以下方法。它比使用substitute更简单。

varlist <- names(df)[-1]

models <- apply(combn(varlist, 2), 2, function(v)
    lm(as.formula(paste(v[1], v[2], sep = "~")), data = df)
)

models[[1]]
lapply(models, summary)