## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(fssg) library(flexsurv) ## ----------------------------------------------------------------------------- # 'Density' function dgamgomp(x=1, b=1, sigma=1, beta=1) # 'Distribution' function pgamgomp(q=1, b=1, sigma=1, beta=1) # Constructing our distribution object fssg_gamgomp <- fssg_dist( name='gamgomp', # a simple name pars=c('b','sigma','beta'), # parameters are scale, shape, shape respectively location='b', # name of the parameter we want to vary transforms=c(log,log,log), # transformation functions for each of our parameters (all must be >0) inv.transforms=c(exp,exp,exp), # back-transformation functions for each of our parameters inits=function(t){c(1/max(t), 1, 1)}, # function that constructs the initial parameter estimates for optimization d = dgamgomp, # density function p = pgamgomp, # distribution function. q = quantilify(pgamgomp), # quantile function (optional) h = hazardify(dgamgomp, pgamgomp), # hazard function (optional) H = cumhazardify(pgamgomp), # cumulative hazard function (optional) fullname='gamma_gompertz' # secondary name(s) which is used in the back-end of `fssg` to better label outputs ) ## ----message=F---------------------------------------------------------------- # Sample data set provided in the package data('pseudo', package='fssg') flexsurvreg( formula = Surv(time, death) ~ 1, data = pseudo, dist = fssg_gamgomp, dfns = list(fssg_gamgomp$d, fssg_gamgomp$p) ) -> f1 print(f1) plot(f1) ## ----------------------------------------------------------------------------- get_fssg_dist('gamma_gompertz') ## ----------------------------------------------------------------------------- fssg( formula = Surv(time, death) ~ 1, data = pseudo, model='gamma_gompertz' ) -> model1 model1$models$gamma_gompertz ## ----------------------------------------------------------------------------- fssg( survival::Surv(time, status) ~ x, data = survival::aml ) -> aml_model # Summary Table aml_model$summary # List of Models head(aml_model$models) ## ----------------------------------------------------------------------------- fssg( survival::Surv(time, death) ~ gender, data = pseudo, models = c('gamma_gompertz','gompertz','gumbel','gumbel_T2') )$summary ## ----message=F---------------------------------------------------------------- check_inits(times = pseudo$time, get_fssg_dist('gumbel')) check_inits(times = pseudo$time, get_fssg_dist('gumbel_T2')) check_inits(times = pseudo$time, get_fssg_dist('lomax')) ## ----------------------------------------------------------------------------- fssg(survival::Surv(time, status) ~ age + sex, data = survival::cancer, models = c('gamma_gompertz','gompertz','gumbel','gumbel_T2'), progress = F) -> output output$models$gumbel ## ----------------------------------------------------------------------------- plot( output$models$gumbel, newdata = data.frame(sex=c(1,2), age=70), col=c('blue','red'), type='survival', lwd=2, ) legend( 'topright', legend = c('Male','Female'), col =c('blue','red'), lwd=2 ) ## ----------------------------------------------------------------------------- plot( output$models$gumbel, newdata = data.frame(sex=c(1), age=c(65,80)), col=c('blue','red'), type='survival', lwd=2 ) legend( 'topright', legend = c('Age 65','Age 80'), col =c('blue','red'), lwd=2 ) ## ----------------------------------------------------------------------------- fssg( survival::Surv(time, status) ~ x, data = survival::aml, models = c('weibull'), spline = c('rp','wy'), # include both methods max_knots = 3 # attempt up to 3 knots ) -> spline_models spline_models$summary # Best model has 1 knot # plot(spline_models$models$spline_wy_normal_1) # Model with 3 knots # plot(spline_models$models$spline_wy_normal_3) ## ----------------------------------------------------------------------------- # Example using our models on the aml dataset head(aml_model$summary) ## ----------------------------------------------------------------------------- get_fit_stats(aml_model$models$inv_lind, ibs=T) -> fitstats fitstats