使用“哪个”提取非零的glmnet系数时出错

时间:2019-09-27 08:47:13

标签: r glmnet which coefficients cox

我用 glmnet 拟合了一个Cox模型,例如:

fitL <- glmnet(
  X,
  Y,
  family = "cox",
  alpha = 1,
  lambda = cvL$lambda.min, #cvL obteined with cv.glmnet
  standardize = FALSE,
  thresh = thresh
)

我获得了:

str(coef(fitL) != 0)
Formal class 'lgCMatrix' [package "Matrix"] with 6 slots
  ..@ i       : int [1:24] 0 76 81 96 125 149 213 266 277 415 ...
  ..@ p       : int [1:2] 0 24
  ..@ Dim     : int [1:2] 1000 1
  ..@ Dimnames:List of 2
  .. ..$ : chr [1:1000] "001" "002" "003" "004" ...
  .. ..$ : chr "s0"
  ..@ x       : logi [1:24] TRUE TRUE TRUE TRUE TRUE TRUE ...
  ..@ factors : list()

我想提取非零系数(即选定的变量),我使用“ which”,但是出现了这个错误:

> which (coef (fitL)! = 0) 
  

base ::中的错误:其中(x,arr.ind,useNames,   ...):“哪”自变量必须为逻辑类型

我还使用了here建议的extract.coef软件包的coefplot函数。我遇到了这个错误:

> library (coefplot)
> coefplot :: extract.coef (fitL)
  

UseMethod中的错误(通用=“ extract.coef”,object =模型):否   适用于“ c”类对象的“ extract.coef”方法   (“ coxnet”,“ glmnet”)”

2 个答案:

答案 0 :(得分:2)

使用predict代替参数type="nonzero"

答案 1 :(得分:1)

对象(coef(fitL) != 0)具有类lgCMatrix。尝试使用as.vector