簡體   English   中英

如何為套索邏輯回歸生成所有一階交互項?

[英]How to generate all first-order interaction terms for Lasso Logistic Regression?

在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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM