Skip to contents

🔬 FLEXIBLE PARAMETRIC SURVIVAL MODELS (Royston-Parmar) ⚕️ CLINICAL USE: Model survival data with smooth, flexible hazard functions that can capture complex patterns (increasing, decreasing, or bathtub-shaped hazards). Better than Cox models when you need to extrapolate beyond observed data or estimate absolute risks. 📊 WHEN TO USE: • Cancer survival with complex hazard patterns • Health economic evaluations requiring extrapolation • Time-varying treatment effects • Relative survival analysis with population mortality ⚠️ REQUIREMENTS: • Minimum 30 events (preferably ≥50) • Follow-up covering the period of interest • For df>4: need ≥100 events to avoid overfitting 📈 KEY OUTPUTS: • Hazard ratios with clinical interpretation • Survival predictions at specific time points • Model fit statistics (AIC, concordance) • Time-varying effect plots • Copy-ready clinical report sentences

Usage

flexrstpm2(
  data,
  elapsedtime,
  outcome,
  covariates,
  outcomeLevel = "1",
  scale = "hazard",
  df = 4,
  knots = "",
  boundary_knots = "",
  time_varying_covariates,
  tvc_df = 3,
  cure_fraction = FALSE,
  bhazard,
  group_variable,
  link_function = "log",
  prediction_times = "1, 2, 5, 10",
  extrapolation_time = 20,
  confidence_level = 0.95,
  smooth_formula = "",
  robust_se = FALSE,
  time_ratio = FALSE,
  relative_survival = FALSE,
  model_comparison = TRUE,
  goodness_of_fit = TRUE,
  hazard_analysis = TRUE,
  derivative_analysis = FALSE,
  bootstrap_validation = FALSE,
  bootstrap_samples = 500,
  show_model_summary = TRUE,
  show_coefficients_table = TRUE,
  show_survival_curves = TRUE,
  show_hazard_curves = TRUE,
  show_time_varying_plots = FALSE,
  show_model_diagnostics = TRUE,
  show_residuals = FALSE,
  showSummaries = FALSE,
  showExplanations = FALSE
)

Arguments

data

the data as a data frame

elapsedtime

Survival time or follow-up duration variable

outcome

Event indicator variable (0/1, FALSE/TRUE, or factor)

covariates

Covariate variables for flexible parametric modeling

outcomeLevel

Level of outcome variable indicating event occurrence

scale

Scale for the flexible parametric model

df

Degrees of freedom for baseline spline function (complexity of hazard curve). Clinical guide: df=3-4 for most analyses, df=5-6 for complex patterns. Need ≥30 events per df for reliable results.

knots

Comma-separated knot positions (optional, overrides df)

boundary_knots

Comma-separated boundary knot positions (optional)

time_varying_covariates

Covariates with time-varying effects (spline interactions)

tvc_df

Degrees of freedom for time-varying covariate effects

cure_fraction

Include cure fraction in the model

bhazard

Background hazard variable for relative survival analysis

group_variable

Optional grouping variable for stratified analysis

Link function for baseline transformation

prediction_times

Comma-separated list of time points for survival predictions

extrapolation_time

Maximum time for survival curve extrapolation

confidence_level

Confidence level for confidence intervals

smooth_formula

Custom smoothing formula for advanced specifications

robust_se

Use robust sandwich estimator for standard errors

time_ratio

Include time ratio (acceleration factor) analysis

relative_survival

Perform relative survival analysis (requires background hazard)

model_comparison

Compare flexible parametric models with standard parametric models

goodness_of_fit

Perform goodness of fit tests and model diagnostics

hazard_analysis

Generate hazard function estimates and plots

derivative_analysis

Include analysis of hazard function derivatives (acceleration/deceleration)

bootstrap_validation

Perform bootstrap validation of model predictions

bootstrap_samples

Number of bootstrap samples for validation (when bootstrap enabled)

show_model_summary

Display comprehensive model summary

show_coefficients_table

Display table of model coefficients

show_survival_curves

Display fitted survival curves

show_hazard_curves

Display fitted hazard functions

show_time_varying_plots

Display time-varying covariate effect plots

show_model_diagnostics

Display model diagnostic plots

show_residuals

Display residual analysis plots

showSummaries

Generate natural language summaries of results

showExplanations

Show detailed methodology explanations

Value

A results object containing:

results$todoa html
results$modelSummarya html
results$coefficientsTablea table
results$timeVaryingTablea table
results$modelFita table
results$splineInfoa table
results$parameterEstimatesa table
results$survivalPredictionsa table
results$timeRatioAnalysisa table
results$relativeSurvivalAnalysisa table
results$modelComparisona table
results$goodnessOfFitTestsa table
results$hazardAnalysisa table
results$derivativeAnalysisa table
results$bootstrapValidationa table
results$survivalCurvesan image
results$hazardCurvesan image
results$timeVaryingPlotsan image
results$modelDiagnosticsan image
results$residualPlotsan image
results$splineComponentsan image
results$hazardFunctionPlotan image
results$splineBasisPlotan image
results$modelComparisonPlotan image
results$derivativePlotan image
results$clinicalSummarya html
results$analysisSummarya html
results$methodExplanationa html

Tables can be converted to data frames with asDF or as.data.frame. For example:

results$coefficientsTable$asDF

as.data.frame(results$coefficientsTable)

Examples

# Example 1: Basic flexible parametric model
library(rstpm2)
library(survival)

flexrstpm2(
    data = breast_cancer_data,
    elapsedtime = "rectime",
    outcome = "censrec",
    outcomeLevel = "1",
    covariates = c("hormon", "age", "size"),
    df = 4,
    scale = "hazard"
)

# Example 2: Time-varying effects with spline interactions
flexrstpm2(
    data = colon_data,
    elapsedtime = "time",
    outcome = "status",
    outcomeLevel = "1",
    covariates = c("rx", "age", "nodes"),
    time_varying_covariates = c("rx"),
    df = 5,
    tvc_df = 3,
    scale = "odds",
    show_time_varying_plots = TRUE
)