私は8列のx行列を持っています。 glmnet
を実行して、ラッソ回帰を実行したいと思います。私は電話する必要があることを知っています:
glmnet(x, y, family = "binomial", ...).
ただし、x
に一方向の相互作用もすべて考慮するようにするにはどうすればよいですか?データフレームを手動で作り直す必要がありますか?もしそうなら、もっと簡単な方法はありますか?私はR式を使って何かをしたいと思っていたと思います。
はい、そのための便利な方法があります。その中の2つのステップが重要です。
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)
f <- as.formula( ~ .^2)
は、主効果とすべてのペアワイズ交互作用を含めるためにも機能するはずです