Ошибка при извлечении ненулевых коэффициентов glmnet с «который» - PullRequest
1 голос
/ 27 сентября 2019

Я установил модель Кокса с glmnet как:

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 (coef (fitL)! = 0) 

Ошибка в base :: which (x, arr.ind, useNames, ...):Аргумент 'which' должен иметь логический тип

Я также использовал extract.coef функцию предложенного пакета coefplot здесь .У меня была эта ошибка:

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

Ошибка в UseMethod (generic = "extract.coef", object = model): метод для extract.coef не применим для объекта класса "c('coxnet', 'glmnet') "

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Вместо этого используйте predict с аргументом type="nonzero".

1 голос
/ 27 сентября 2019

Объект (coef(fitL) != 0) имеет класс lgCMatrix.Попробуйте использовать as.vector

...