R Линейная регрессия - итерация обеих переменных - PullRequest
0 голосов
/ 21 мая 2018

У меня проблемы с зацикливанием обеих переменных в линейной регрессии, и мне было интересно, может ли кто-нибудь помочь.

У меня есть несколько наборов данных, которые следуют этому общему шаблону

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 из них.

Самый близкий метод, который мне удалось найти, это упомянутый здесь , но он все еще не совсем то, что мне нужно.Я упускаю что-то очевидное?

Заранее спасибо.

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте следующее.Это проще чем с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...