## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

library(poissonsuperlearner)
library(riskRegression)

## -----------------------------------------------------------------------------
set.seed(42)
d <- simulateStenoT1(
  n = 150,
  scenario = "alpha",
  competing_risks = TRUE
)

head(d[, .(id, time, event, age, diabetes_duration, value_LDL, sex)])

## -----------------------------------------------------------------------------
lglmnet0 <- Learner_glmnet(
  covariates = c("sex", "diabetes_duration"),
  cross_validation = FALSE,
  lambda = 0,
  intercept = TRUE
)

lglmnet1 <- Learner_glmnet(
  covariates = c("value_Smoking", "value_LDL"),
  cross_validation = TRUE,
  alpha = 1,
  intercept = TRUE
)

learners_list <- list(
  glm = lglmnet0,
  lasso = lglmnet1
)

## ----eval = FALSE-------------------------------------------------------------
# l_glmnet <- Learner_glmnet(
#   covariates = c("sex", "diabetes_duration", "value_LDL"),
#   add_nodes = TRUE,
#   cross_validation = TRUE,
#   alpha = 1
# )
# 
# l_gam <- Learner_gam(
#   covariates = c("s(age)", "s(value_LDL)", "sex"),
#   add_nodes = TRUE,
#   method = "fREML",
#   discrete = TRUE
# )
# 
# l_hal <- Learner_hal(
#   covariates = c("age", "diabetes_duration", "value_LDL"),
#   add_nodes = TRUE,
#   cross_validation = TRUE,
#   num_knots = c(10L, 5L),
#   max_degree = 2L
# )

## -----------------------------------------------------------------------------
sl_model <- Superlearner(
  d,
  id = "id",
  status = "event",
  event_time = "time",
  learners = learners_list,
  number_of_nodes = 5,
  nfold = 3
)

l0_model <- fit_learner(
  d,
  id = "id",
  learner = lglmnet0,
  status = "event",
  event_time = "time",
  number_of_nodes = 5
)

l1_model <- fit_learner(
  d,
  id = "id",
  learner = lglmnet1,
  status = "event",
  event_time = "time",
  number_of_nodes = 5
)

## -----------------------------------------------------------------------------
print(sl_model, cause = 1)
print(sl_model, cause = 1, model = "glm")
print(l0_model, cause = 1)

## -----------------------------------------------------------------------------
summary(sl_model)

## -----------------------------------------------------------------------------
summary(sl_model, cause = 1, model = "glm")
summary(l0_model, cause = 1)

## -----------------------------------------------------------------------------
coef(sl_model, cause = 1)
coef(sl_model, cause = 1, model = "glm")
coef(l0_model, cause = 1)

## -----------------------------------------------------------------------------
pred_sl <- predict(
  sl_model,
  newdata = d[1:2],
  times = c(2, 5),
  cause = 1
)

pred_sl

## -----------------------------------------------------------------------------
cbind(
  glm_direct = predictRisk(l0_model, newdata = d[1, ], times = 5, cause = 1),
  lasso_direct = predictRisk(l1_model, newdata = d[1, ], times = 5, cause = 1)
)

## -----------------------------------------------------------------------------
cbind(
  sl = predictRisk(sl_model, newdata = d[1, ], times = 5, cause = 1, model = "sl"),
  glm_from_ensemble = predictRisk(sl_model, newdata = d[1, ], times = 5, cause = 1, model = "glm"),
  lasso_from_ensemble = predictRisk(sl_model, newdata = d[1, ], times = 5, cause = 1, model = "lasso")
)

