inst/doc/advanced-models.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----setup--------------------------------------------------------------------
#  library(OdysseusSurvivalModule)
#  
#  survivalData <- data.frame(
#    subject_id = 1:8,
#    time = c(15, 21, 40, 55, 60, 74, 90, 120),
#    status = c(1, 0, 1, 0, 1, 0, 1, 0),
#    age_years = c(44, 51, 67, 39, 73, 58, 62, 47),
#    gender = c("Female", "Male", "Female", "Male", "Female", "Male", "Female", "Male")
#  )

## ----cox-model----------------------------------------------------------------
#  coxFit <- singleEventSurvival(
#    survivalData = survivalData,
#    timeScale = "days",
#    model = "cox",
#    covariates = c("age_years")
#  )
#  
#  coxFit[["overall"]]$summary
#  head(coxFit[["overall"]]$data)

## ----parametric-models--------------------------------------------------------
#  weibullFit <- singleEventSurvival(
#    survivalData = survivalData,
#    timeScale = "days",
#    model = "weibull",
#    covariates = c("age_years")
#  )
#  
#  lognormalFit <- singleEventSurvival(
#    survivalData = survivalData,
#    timeScale = "days",
#    model = "lognormal",
#    covariates = c("age_years")
#  )
#  
#  weibullFit[["overall"]]$summary
#  lognormalFit[["overall"]]$summary

## ----model-comparison---------------------------------------------------------
#  modelNames <- c("km", "cox", "weibull", "lognormal")
#  
#  fits <- lapply(modelNames, function(modelName) {
#    singleEventSurvival(
#      survivalData = survivalData,
#      timeScale = "days",
#      model = modelName,
#      covariates = if (modelName == "km") NULL else c("age_years")
#    )
#  })
#  names(fits) <- modelNames
#  
#  comparison <- data.frame(
#    model = names(fits),
#    medianSurvival = vapply(fits, function(x) x[["overall"]]$summary$medianSurvival, numeric(1)),
#    meanSurvival = vapply(fits, function(x) x[["overall"]]$summary$meanSurvival, numeric(1)),
#    stringsAsFactors = FALSE
#  )
#  
#  comparison

## ----stratified-models--------------------------------------------------------
#  stratifiedFit <- singleEventSurvival(
#    survivalData = survivalData,
#    timeScale = "days",
#    model = "weibull",
#    covariates = c("age_years"),
#    strata = c("gender", "age_group"),
#    ageBreaks = list(c(18, 49), c(50, 64), c(65, Inf))
#  )
#  
#  names(stratifiedFit)
#  stratifiedFit[["gender=Female"]]$summary
#  stratifiedFit[["age_group=65+"]]$summary
#  stratifiedFit$logrank_test_gender
#  stratifiedFit$logrank_test_age_group

## ----curve-plot---------------------------------------------------------------
#  curveData <- weibullFit[["overall"]]$data
#  
#  plot(
#    curveData$time,
#    curveData$survival,
#    type = "l",
#    xlab = "Time (days)",
#    ylab = "Survival probability",
#    main = "Weibull survival curve"
#  )

Try the OdysseusSurvivalModule package in your browser

Any scripts or data that you put into this service are public.

OdysseusSurvivalModule documentation built on April 3, 2026, 5:06 p.m.