По двум комбинациям предикторов в линейной регрессии в R

Предположим, что у меня есть X1,...,X14 потенциальные предикторы.

Теперь для данного Y я хочу сделать схему OLS:

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

что в основном все две комбинации всех предикторов. После того, как все эти регрессии созданы, я хочу использовать их в predict функция (если возможно).

Мой вопрос: как мне сделать все эти регрессии со всеми двумя комбинациями регрессоров?

2 ответа

Решение

Вы также можете поместить их в формулы в одну строку следующим образом:

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

Ты можешь использовать 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).

Другие вопросы по тегам