使用glmnet进行变量选择

时间:2014-04-09 14:50:00

标签: glmnet

对于大学项目,我必须通过glmnet函数找到一个模型,它应该同时估计和选择变量。

对于我在互联网上找到的一个例子,我有以下R代码:

install.packages("glmnet")

library(glmnet)

n =sample.size=54

npar=16

x=matrix(rnorm(n*npar), n, npar)

y <- sample(1:2, n, replace=TRUE)

fit_lasso <- glmnet(x,y,family="poisson")

fit_lasso

coef(fit_lasso, s=c(0.01,0.1))

predict(fit_lasso,newx=x[1:10,], s=c(0.01,0.005))

我得到了一些输出,但我真的看不出这个程序选择哪个变量?

有人可以通过claryfying帮助我,我必须在输出中查看以获取所选变量吗?

非常感谢提前。

亲切的问候,

彼得 鲁汶天主教大学学生

1 个答案:

答案 0 :(得分:2)

我认为你的主要困难是你的例子没有给出可辨别的变量名称。如上所述,您的代码具有以下内容:

> coef(fit_lasso, s=c(0.01,0.1))
17 x 2 sparse Matrix of class "dgCMatrix"
                       1             2
(Intercept)  0.401355700  0.4418204837
V1           0.056974354  .           
V2          -0.084883137 -0.0005052818
V3           0.020746643  .           
V4           0.038719413  .           
V5           0.029015126  .           
V6          -0.002403163  .           
V7           0.015661047  .           
V8          -0.063540718  .           
V9           .            .           
V10         -0.005408579  .           
V11         -0.038804146  .           
V12          0.070699231  .           
V13          0.028897285  .           
V14          0.032890192  .          

因此,对于lambda = 0.01,所选变量是第1列中的非空值,对于lambda = 0.1,所选变量只是截距和V2。您可以通过分配列名来澄清示例:

colnames(x) <- letters[1:16]

> coef(fit_lasso, s=c(0.01,0.1))
17 x 2 sparse Matrix of class "dgCMatrix"
                       1             2
(Intercept)  0.401355700  0.4418204837
a            0.056974354  .           
b           -0.084883137 -0.0005052818
c            0.020746643  .           
d            0.038719413  .           
e            0.029015126  .           
f           -0.002403163  .           
g            0.015661047  .           
h           -0.063540718  .           
i            .            .           
j           -0.005408579  .           
k           -0.038804146  .           
l            0.070699231  .           
m            0.028897285  .           
n            0.032890192  .           
o            .            .           
p            0.026287805  .