Я управляю внутренней кодовой базой, которая сильно зависит от пакета glmnet
. После обновления до новейшей версии (v3.0.2
) мои модульные тесты начали давать сбои для коэффициентов модели Кокса. Предыдущая версия glmnet
была v2.0.16 (R 3.5.2)
. Я сейчас использую R v3.6.2
.
Я заметил, что есть новый аргумент relax =
, который, кажется, использует нерегулярные подгонки в пути, и я бы предположил, что может вызывает небольшую разницу в подгонках, однако по умолчанию используется relax = FALSE
, поэтому я сомневаюсь, что это проблема.
Ниже приведен reprex
на основе набора данных mtcars
, в котором установлены 2 случайно выбранных объекта и переименование двух переменных в time
и status
, чтобы обеспечить возможность подгонки модели Кокса. Правильное сравнение по представлению сложно, так как для этого потребуются другие установки R, но это должно позволить любому воспроизвести проблему.
library(magrittr)
library(dplyr)
library(glmnet)
dat <- mtcars %>%
select(mpg, disp, status = vs, time = hp) %>% # select 2 features; assign time & status
mutate_at(1:2, ~ {
log10(.x) %>% subtract(mean(.)) %>% divide_by(sd(.)) # center & scale
}) %>% as.matrix()
glmnet(dat[, 1:2], dat[, 3:4], family = "cox", lambda = 0)$beta # fit model
Результат для v3.0.2
:
#> 2 x 1 sparse Matrix of class "dgCMatrix"
#> s0
#> mpg 0.2293535
#> disp -1.8160387
Результат для v2.0.16
:
#> 2 x 1 sparse Matrix of class "dgCMatrix"
#> s0
#> mpg 0.2154324
#> disp -1.8172714
Заметили ли другие аналогичные расхождения? Я несколько удивлен, что не нашел кого-то еще, сталкивающегося с той же самой проблемой. Должен ли я обновить все мои юнит-тесты: (
Советы и / или объяснения очень важны. Заранее спасибо.