假设您需要一个模型,形式为
y = b0 + b1*x1*x2 + b2*x3 + noise
,其中目标变量
y
和所有解释变量
x1、x2、x3
存储在同一数据帧中。...
编辑: 感谢@BenBolker提供关于model.matrix
的提示。
使用model.matrix
,以下代码提供了一种解决方案:
library(glmnet)
set.seed(23)
dat <- data.frame(y=runif(5), x1=runif(5), x2=runif(5), x3=runif(5))
f <- as.formula(y~x1:x2+x3+0)
x <- model.matrix(f, dat)
y <- as.matrix(dat$y, ncol=1)
g <- glmnet(x, y, lambda=0.001)
print(coef(g))
为了完整起见,这里是我原来的回答,不使用model.matrix
,需要一些手动干预:
library(glmnet)
set.seed(23)
dat <- data.frame(y=runif(5), x1=runif(5), x2=runif(5), x3=runif(5))
x <- with(dat, as.matrix(cbind("x1*x2"=x1*x2, "x3"=x3)))
y <- with(dat, as.matrix(y, ncol=1))
g <- glmnet(x, y, lambda=0.001)
print(coef(g))
?model.matrix
的内容... - Ben Bolker