对于大学项目,我必须通过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帮助我,我必须在输出中查看以获取所选变量吗?
非常感谢提前。
亲切的问候,
彼得 鲁汶天主教大学学生
答案 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 .