r - 如何为 Lasso Logistic 回归生成所有一阶交互项?

标签 r logistic-regression glmnet

glmnet 中有没有办法进行一阶交互?

例如,如果我的 X 矩阵是:

V1 V2 V3
0  1   0
1  0   1
1  0   0
...

有没有办法指定它在不手动创建列的情况下按照 `y~ V1 + V2 + V3 + V1*V2 + V2 *V3 + V1*V3' 执行某些操作?我的实际矩阵更大,手动创建所有一阶交叉产品会很痛苦。

最佳答案

此类公式的正确 R 语法是

y~(V1+V2+V3)^2

例如

set.seed(15)
dd <- data.frame(V1=runif(50), V2=runif(50), V3=runif(50), y=runif(50))
lm(y~(V1+V2+V3)^2, dd)

Call:
lm(formula = y ~ (V1 + V2 + V3)^2, data = dd)

Coefficients:
(Intercept)           V1           V2           V3        V1:V2        V1:V3        V2:V3  
    0.54169     -0.10030     -0.01226     -0.10150      0.38521     -0.03159      0.01200 

或者,如果要对 y 以外的所有变量进行建模,

lm(y~(.)^2, dd)

Call:
lm(formula = y ~ (.)^2, data = dd)

Coefficients:
(Intercept)           V1           V2           V3        V1:V2        V1:V3        V2:V3  
    0.54169     -0.10030     -0.01226     -0.10150      0.38521     -0.03159      0.01200 

两者都一样

lm(y~V1+V2+V3+V1:V2+V1:V3+V2:V3, dd)

Call:
lm(formula = y ~ V1 + V2 + V3 + V1:V2 + V1:V3 + V2:V3, data = dd)

Coefficients:
(Intercept)           V1           V2           V3        V1:V2        V1:V3        V2:V3  
    0.54169     -0.10030     -0.01226     -0.10150      0.38521     -0.03159      0.01200  

您可以将这些公式与 model.matrix 一起使用来创建矩阵

model.matrix(y~(V1+V2+V3)^2,dd)

关于r - 如何为 Lasso Logistic 回归生成所有一阶交互项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577420/

相关文章:

r - 将列表 append 到 R 中的数据框

r - 如何在ggplot中应用legend.key背景透明?

r - 根据日期键对多个 R 列表的值求和

python scikit学习逻辑回归错误

R glmnet 系列 = 0-1 以外的二项式预测值

r - 来自自定义 colorRampPalette 的颜色条

r - 如何在 R 的 "ivprobit"包中使用 "ivprobit"函数?

python - 机器学习 - 大数据集的问题

r - 使用 glm.fit 、 bigglm、 speedglm、 glmnet、 LiblineaR 对逻辑回归进行基准测试

r - S3 和类(class)顺序