Подтвердить что ты не робот

Как сделать все взаимодействия перед использованием glmnet

У меня есть x-матрица из 8 столбцов. Я хочу запустить glmnet, чтобы сделать регрессию лассо. Я знаю, что мне нужно позвонить:

glmnet(x, y, family = "binomial", ...). 

Однако, как мне получить x для рассмотрения всех односторонних взаимодействий? Должен ли я вручную переделать фрейм данных: если да, есть ли более простой способ? Полагаю, я надеялся что-то сделать с помощью формулы R.

4b9b3361

Ответ 1

Да, для этого есть удобный способ. Два шага в этом важны.

library(glmnet)
# Sample data
data <- data.frame(matrix(rnorm(9 * 10), ncol = 9))
names(data) <- c(paste0("x", 1:8), "y")
# First step: using .*. for all interactions
f <- as.formula(y ~ .*.)
y <- data$y
# Second step: using model.matrix to take advantage of f
x <- model.matrix(f, data)[, -1]
glmnet(x, y)

Ответ 2

f <- as.formula( ~ .^2) должен также работать для включения основных эффектов и всех парных взаимодействий