r formula interaction glmnet

Como hacer todas las interacciones antes de usar glmnet.



formula interaction (2)

Sí, hay una manera conveniente para eso. Dos pasos son importantes.

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)

Tengo una matriz x de 8 columnas. Quiero ejecutar glmnet para hacer una regresión de lazo. Sé que necesito llamar:

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

Sin embargo, ¿cómo consigo x para considerar todas las interacciones unidireccionales también? ¿Tengo que rehacer manualmente el marco de datos? Si es así, ¿hay alguna forma más fácil? Supongo que esperaba hacer algo usando una fórmula R.


f <- as.formula( ~ .^2) también debería funcionar para incluir los efectos principales y todas las interacciones por pares