Fit a model-agnostic Cox-gradient boosting survival model

cox_gradient_boost(
  X,
  time,
  event,
  regr_fun,
  M = 100L,
  nu = 0.1,
  show_progress = TRUE,
  ...
)

Arguments

X

numeric matrix of covariates (n x p)

time

numeric vector of observed times

event

integer/logical vector (1 = event, 0 = censored)

regr_fun

function(X, y, ...) -> model with predict() method

M

number of boosting iterations (default 100)

nu

learning rate / shrinkage (default 0.1)

show_progress

logical; print a progress bar? (default TRUE)

...

extra arguments forwarded to regr_fun at every iteration

Value

object of class "CoxGradientBoost"

Examples


require(glmnet)
#> Loading required package: glmnet
#> Loading required package: Matrix
#> Loaded glmnet 4.1-10
require(survival)
#> Loading required package: survival

data(ovarian)
#> Warning: data set ‘ovarian’ not found

set.seed(42)
idx_train <- sample(nrow(ovarian), floor(0.75 * nrow(ovarian)))
df <- ovarian
train <- df[idx_train, ]; test <- df[-idx_train, ]

regr_lm <- function(X, y, ...) lm(y ~ ., data = data.frame(X, y = y))

fit_boost_lm <- survivalisttoo::cox_gradient_boost(train, train$futime, 
train$fustat, regr_lm)
#> 
Iter   1/100 [                                                  ]   1% ETA 1s
Iter   2/100 [=                                                 ]   2% ETA 1s
Iter   3/100 [==                                                ]   3% ETA 1s
Iter   4/100 [==                                                ]   4% ETA 1s
Iter   5/100 [==                                                ]   5% ETA 0s
Iter   6/100 [===                                               ]   6% ETA 0s
Iter   7/100 [====                                              ]   7% ETA 0s
Iter   8/100 [====                                              ]   8% ETA 0s
Iter   9/100 [====                                              ]   9% ETA 0s
Iter  10/100 [=====                                             ]  10% ETA 0s
Iter  11/100 [======                                            ]  11% ETA 0s
Iter  12/100 [======                                            ]  12% ETA 0s
Iter  13/100 [======                                            ]  13% ETA 0s
Iter  14/100 [=======                                           ]  14% ETA 0s
Iter  15/100 [========                                          ]  15% ETA 0s
Iter  16/100 [========                                          ]  16% ETA 0s
Iter  17/100 [========                                          ]  17% ETA 0s
Iter  18/100 [=========                                         ]  18% ETA 0s
Iter  19/100 [==========                                        ]  19% ETA 0s
Iter  20/100 [==========                                        ]  20% ETA 0s
Iter  21/100 [==========                                        ]  21% ETA 0s
Iter  22/100 [===========                                       ]  22% ETA 0s
Iter  23/100 [============                                      ]  23% ETA 0s
Iter  24/100 [============                                      ]  24% ETA 0s
Iter  25/100 [============                                      ]  25% ETA 0s
Iter  26/100 [=============                                     ]  26% ETA 0s
Iter  27/100 [==============                                    ]  27% ETA 0s
Iter  28/100 [==============                                    ]  28% ETA 0s
Iter  29/100 [==============                                    ]  29% ETA 0s
Iter  30/100 [===============                                   ]  30% ETA 0s
Iter  31/100 [================                                  ]  31% ETA 0s
Iter  32/100 [================                                  ]  32% ETA 0s
Iter  33/100 [================                                  ]  33% ETA 0s
Iter  34/100 [=================                                 ]  34% ETA 0s
Iter  35/100 [==================                                ]  35% ETA 0s
Iter  36/100 [==================                                ]  36% ETA 0s
Iter  37/100 [==================                                ]  37% ETA 0s
Iter  38/100 [===================                               ]  38% ETA 0s
Iter  39/100 [====================                              ]  39% ETA 0s
Iter  40/100 [====================                              ]  40% ETA 0s
Iter  41/100 [====================                              ]  41% ETA 0s
Iter  42/100 [=====================                             ]  42% ETA 0s
Iter  43/100 [======================                            ]  43% ETA 0s
Iter  44/100 [======================                            ]  44% ETA 0s
Iter  45/100 [======================                            ]  45% ETA 0s
Iter  46/100 [=======================                           ]  46% ETA 0s
Iter  47/100 [========================                          ]  47% ETA 0s
Iter  48/100 [========================                          ]  48% ETA 0s
Iter  49/100 [========================                          ]  49% ETA 0s
Iter  50/100 [=========================                         ]  50% ETA 0s
Iter  51/100 [==========================                        ]  51% ETA 0s
Iter  52/100 [==========================                        ]  52% ETA 0s
Iter  53/100 [==========================                        ]  53% ETA 0s
Iter  54/100 [===========================                       ]  54% ETA 0s
Iter  55/100 [============================                      ]  55% ETA 0s
Iter  56/100 [============================                      ]  56% ETA 0s
Iter  57/100 [============================                      ]  57% ETA 0s
Iter  58/100 [=============================                     ]  58% ETA 0s
Iter  59/100 [==============================                    ]  59% ETA 0s
Iter  60/100 [==============================                    ]  60% ETA 0s
Iter  61/100 [==============================                    ]  61% ETA 0s
Iter  62/100 [===============================                   ]  62% ETA 0s
Iter  63/100 [================================                  ]  63% ETA 0s
Iter  64/100 [================================                  ]  64% ETA 0s
Iter  65/100 [================================                  ]  65% ETA 0s
Iter  66/100 [=================================                 ]  66% ETA 0s
Iter  67/100 [==================================                ]  67% ETA 0s
Iter  68/100 [==================================                ]  68% ETA 0s
Iter  69/100 [==================================                ]  69% ETA 0s
Iter  70/100 [===================================               ]  70% ETA 0s
Iter  71/100 [====================================              ]  71% ETA 0s
Iter  72/100 [====================================              ]  72% ETA 0s
Iter  73/100 [====================================              ]  73% ETA 0s
Iter  74/100 [=====================================             ]  74% ETA 0s
Iter  75/100 [======================================            ]  75% ETA 0s
Iter  76/100 [======================================            ]  76% ETA 0s
Iter  77/100 [======================================            ]  77% ETA 0s
Iter  78/100 [=======================================           ]  78% ETA 0s
Iter  79/100 [========================================          ]  79% ETA 0s
Iter  80/100 [========================================          ]  80% ETA 0s
Iter  81/100 [========================================          ]  81% ETA 0s
Iter  82/100 [=========================================         ]  82% ETA 0s
Iter  83/100 [==========================================        ]  83% ETA 0s
Iter  84/100 [==========================================        ]  84% ETA 0s
Iter  85/100 [==========================================        ]  85% ETA 0s
Iter  86/100 [===========================================       ]  86% ETA 0s
Iter  87/100 [============================================      ]  87% ETA 0s
Iter  88/100 [============================================      ]  88% ETA 0s
Iter  89/100 [============================================      ]  89% ETA 0s
Iter  90/100 [=============================================     ]  90% ETA 0s
Iter  91/100 [==============================================    ]  91% ETA 0s
Iter  92/100 [==============================================    ]  92% ETA 0s
Iter  93/100 [==============================================    ]  93% ETA 0s
Iter  94/100 [===============================================   ]  94% ETA 0s
Iter  95/100 [================================================  ]  95% ETA 0s
Iter  96/100 [================================================  ]  96% ETA 0s
Iter  97/100 [================================================  ]  97% ETA 0s
Iter  98/100 [================================================= ]  98% ETA 0s
Iter  99/100 [==================================================]  99% ETA 0s
Iter 100/100 [==================================================] 100% ETA 0s

y_test   <- Surv(test$futime, test$fustat)
(ci_blm <- glmnet::Cindex(predict(fit_boost_lm, test), y_test)) # C-index
#> [1] 0.8888889