Author: Diego Veliz-Otani

Last Updated: November 29, 2021

1. Intro

2. Some basic data exploration (Kaplan-Meier & logrank test):

km_null <- survfit(Surv(survtime, censdead) ~ 1, data=dat) ## KAPLAN-MEIER 
km_menopause <- survfit(Surv(survtime, censdead) ~ menopause, data=dat) ## KAPLAN-MEIER 
km_hormone <- survfit(Surv(survtime, censdead) ~ hormone, data=dat) ## KAPLAN-MEIER 
km_grade<- survfit(Surv(survtime, censdead) ~ grade, data=dat) ## KAPLAN-MEIER 
km_prog<- survfit(Surv(survtime, censdead) ~ prog_recp_high, data=dat) ## KAPLAN-MEIER 
km_estr<- survfit(Surv(survtime, censdead) ~ estrg_recp_high, data=dat) ## KAPLAN-MEIER 

plot(km_null,  col = cols[1], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curve")
grid()

plot(km_menopause,  col = cols[1:2], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curves stratified by Menopause")
grid()
leg <- levels(dat$menopause)
legend("topright", legend = leg, col = cols[1:2], bty="n", lwd = 4, cex=0.8)

plot(km_hormone,   col = cols[1:2], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curves stratified by Hormone therapy")
grid()
leg <- levels(dat$hormone)
legend("topright", legend = leg, col = cols[1:2], bty="n", lwd = 4, cex=0.8)

plot(km_grade,   col = cols[1:3], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curves stratified by Tumor grade")
grid()
leg <- levels(dat$grade)
legend("topright", legend = leg, col = cols[1:3], bty="n", lwd = 4, cex=0.8)

plot(km_prog,   col = cols[1:2], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curves stratified by Number of progestrone receptor")
grid()
leg <- levels(dat$prog_recp_high)
legend("topright", legend = leg, col = cols[1:3], bty="n", lwd = 4, cex=0.8)

plot(km_estr,   col = cols[1:2], lwd = 2,
     xlab = "Time(days)", ylab = "S(t)", 
     main = "Kaplan-Meier curves stratified by Number of Estrogen receptor")
grid()
leg <- levels(dat$estrg_recp_high)
legend("topright", legend = leg, col = cols[1:3], bty="n", lwd = 4, cex=0.8)

## Warning: `as.tibble()` was deprecated in tibble 2.0.0.
## Please use `as_tibble()` instead.
## The signature and semantics have changed, see `?as_tibble`.
## Warning: `select_()` was deprecated in dplyr 0.7.0.
## Please use `select()` instead.

## Call:
## survdiff(formula = Surv(survtime, censdead) ~ menopause, data = dat)
## 
##                 N Observed Expected (O-E)^2/E (O-E)^2/V
## menopause=No  290       67     71.5     0.285      0.49
## menopause=Yes 396      104     99.5     0.205      0.49
## 
##  Chisq= 0.5  on 1 degrees of freedom, p= 0.5
## Call:
## survdiff(formula = Surv(survtime, censdead) ~ hormone, data = dat)
## 
##               N Observed Expected (O-E)^2/E (O-E)^2/V
## hormone=No  440      115    104.8     0.986      2.56
## hormone=Yes 246       56     66.2     1.562      2.56
## 
##  Chisq= 2.6  on 1 degrees of freedom, p= 0.1
## Call:
## survdiff(formula = Surv(survtime, censdead) ~ grade, data = dat)
## 
##                 N Observed Expected (O-E)^2/E (O-E)^2/V
## grade=Grade 1  81        6     22.3    11.922      13.7
## grade=Grade 2 444      107    115.0     0.557       1.7
## grade=Grade 3 161       58     33.7    17.543      21.9
## 
##  Chisq= 30.1  on 2 degrees of freedom, p= 0.0000003

3. Crude and stratified associations:

assoc_crude <- survfit(Surv(survtime, censdead) ~ hormone, data = dat)
ggsurvplot(assoc_crude, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           pval = TRUE,
           pval.method = TRUE)+
ggtitle("Overall Survival time") 

assoc_grade <- survfit(Surv(survtime, censdead) ~ hormone+grade, data = dat)
ggsurvplot(assoc_grade, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "grade",
           pval = TRUE,
           pval.method = TRUE) +
  facet_wrap( ~ grade) +
    ggtitle("Overall Survival time by tumor grade") + grids()

# dat$nodes_grp <- dat$nodes%>%cut(breaks=c(0, 1, 6, max(dat$nodes)), include.lowest=TRUE)
# dat$nodes%>%cut(breaks=c(0, 1, 6, max(dat$nodes)), include.lowest=TRUE)%>%table


assoc_node <- survfit(Surv(survtime, censdead) ~ hormone+nodes_grp, data = dat)
# stratlabs <- paste0("Nodes: ", levels(dat$nodes_grp))
# names(stratlabs) <- paste0("nodes_grp:",levels(dat$nodes_grp)) ## attempt to re-label the facet title, but it's not working

ggsurvplot(assoc_node, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "nodes_grp",
           pval = TRUE,
           pval.method = TRUE) +
  ggtitle("Overall Survival time by number of nodes") +
  facet_wrap(~nodes_grp) + grids()

  #  facet_wrap( ~ nodes_grp, labeller=labeller(strata=stratlabs)) ## Not working



assoc_estr <- survfit(Surv(survtime, censdead) ~ hormone+estrg_recp_high, data = dat)
# stratlabs <- paste0("Nodes: ", levels(dat$nodes_grp))
# names(stratlabs) <- paste0("nodes_grp:",levels(dat$nodes_grp)) ## attempt to re-label the facet title, but it's not working

ggsurvplot(assoc_estr, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "estrg_recp_high",
           pval = TRUE,
           pval.method = TRUE) +
  ggtitle("Overall Survival time by Estrogen receptor") +
  facet_wrap(~estrg_recp_high) + grids()

assoc_prog <- survfit(Surv(survtime, censdead) ~ hormone+prog_recp_high, data = dat)
ggsurvplot(assoc_prog, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "prog_recp_high",
           pval = TRUE,
           pval.method = TRUE) +
  ggtitle("Overall Survival time by Progesterone receptor") +
  facet_wrap(~prog_recp_high) + grids()

assoc_menopause <- survfit(Surv(survtime, censdead) ~ hormone+menopause, data = dat)
ggsurvplot(assoc_menopause, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "menopause",
           pval = TRUE,
           pval.method = TRUE) +
  ggtitle("Overall Survival time by menopause") +
  facet_wrap(~menopause) + grids()

assoc_menopause <- survfit(Surv(survtime, censdead) ~ hormone+menopause, data = dat)
ggsurvplot(assoc_menopause, data=dat,
           conf.int = TRUE, 
           legend.labs = levels(dat$hormone),
           legend.title="Hormone therapy",
           facet.by = "menopause",
           pval = TRUE,
           pval.method = TRUE) +
  ggtitle("Overall Survival time by menopause") +
  facet_wrap(~menopause) + grids()

cols3 <- hcl.colors(n=12, palette = "Spectral")

assoc_menopause_est <- survfit(Surv(survtime, censdead) ~ hormone+menopause+estrg_recp_high, data = dat)
ggsurvplot(assoc_menopause_est, data=dat,
           conf.int = TRUE,
           legend.title="Treatment group",
           facet.by = c("menopause"),
           pval = TRUE,
           pval.method = TRUE,
           palette= cols3[c(1,2,9,10)]) +
  ggtitle("Overall Survival time stratified by menopause") +
  grids()

ggsurvplot(assoc_menopause_est, data=dat,
           conf.int = TRUE,
           legend.title="Treatment group",
           facet.by = c("estrg_recp_high"),
           pval = TRUE,
           pval.method = TRUE,
           palette= cols3[c(1,2,9,10)]) +
  ggtitle("Overall Survival time stratified by high estrogen receptors") +
  grids()

assoc_menopause_prog <- survfit(Surv(survtime, censdead) ~ hormone+menopause+prog_recp_high, data = dat)
ggsurvplot(assoc_menopause_prog, data=dat,
           conf.int = TRUE,
           legend.title="Treatment group",
           facet.by = c("menopause"),
           pval = TRUE,
           pval.method = TRUE,
           palette= cols3[c(1,2,9,10)]) +
  ggtitle("Overall Survival time stratified by menopause") +
  grids()

ggsurvplot(assoc_menopause_prog, data=dat,
           conf.int = TRUE,
           legend.title="Treatment group",
           facet.by = c("prog_recp_high"),
           pval = TRUE,
           pval.method = TRUE,
           palette= cols3[c(1,2,9,10)]) +
  ggtitle("Overall Survival time stratified by progesterone receptors") +
  grids()

###

assoc_prog_est <- survfit(Surv(survtime, censdead) ~ hormone+estrg_recp_high+prog_recp_high,
                          data = dat)

ggsurvplot(assoc_prog_est, data=dat,
           conf.int = TRUE,
           legend.title="Hormone Treatment",
           facet.by = c("estrg_recp_high", "prog_recp_high"),
           pval = TRUE,
           pval.method = TRUE,
           palette= cols3[c(1, 10)]) +
  ggtitle("Overall Survival time stratified by abundance of hormone receptors") +
  grids()

4. Parametric tests:

4.1. Exponential model:

4. Fitting models with {flexsurv}:

fit_w <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "weibull", data = dat)

#pred_w <- predict(fit_w, type = "survival")
# pred_w <- ?plot.surv

fit_e <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "exponential", data = dat)

fit_gg <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "gengamma", data = dat, scale="odds")

fit_gg_sp <- flexsurvspline(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                            data = dat, k = 1, scale="odds")
# lines(fit_gg_sp, col = "blue")

fit_ln <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "lnorm", data = dat)


fit_f <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "genf", data = dat)

fit_ll <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "llogis", data = dat)



fit_gom <- flexsurvreg(Surv(survtime, censdead) ~ age + grade +
                              hormone + menopause + nodes +
                              prog_recp_high + estrg_recp_high +
                              estrg_recp_high:hormone,
                   dist = "gompertz", data = dat)



ggflexsurvplot(fit_e, palette=cols[7]) + 
  ggtitle("Exponential model")

ggflexsurvplot(fit_w, palette=cols[7]) + 
  ggtitle("Weibull model") 

ggflexsurvplot(fit_gg, palette=cols[7]) + 
  ggtitle("Generalized Gamma model")

ggflexsurvplot(fit_ln, palette=cols[7]) + 
  ggtitle("Log-Normal model")

ggflexsurvplot(fit_e, palette=cols[7]) + 
  ggtitle("Generalized F model")

ggflexsurvplot(fit_ll, palette=cols[7]) + 
  ggtitle("Log-logistic model")

ggflexsurvplot(fit_gom, palette=cols[7]) + 
  ggtitle("Gompertz model")

plot(fit_f, col = "gray50", lwd = 5)
lines(fit_e, col = cols[1])
# lines(fit_w, col = cols[2])
lines(fit_gg, col = cols[3])
lines(fit_ln, col = cols[4])
lines(fit_ll, col = cols[5])
lines(fit_gom, col = cols[6])

plot(fit_f, col = "gray50", lwd = 5, type ="hazard")
lines(fit_e, col = cols[1], type ="hazard")
# lines(fit_w, col = cols[2], type ="hazard")
lines(fit_gg, col = cols[3], type ="hazard")
lines(fit_ln, col = cols[4], type ="hazard")
lines(fit_ll, col = cols[5], type ="hazard")
lines(fit_gom, col = cols[6], type ="hazard")

plot(fit_f, col = "gray50", lwd = 5, type ="cumhaz")
lines(fit_e, col = cols[1], type ="cumhaz")
# lines(fit_w, col = cols[2], type ="hazard")
lines(fit_gg, col = cols[3], type ="cumhaz")
lines(fit_ln, col = cols[4], type ="cumhaz")
lines(fit_ll, col = cols[5], type ="cumhaz")
lines(fit_gom, col = cols[6], type ="cumhaz")

fit_e
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "exponential")
## 
## Estimates: 
##                                 data mean   est         L95%        U95%      
## rate                                    NA   0.0001115   0.0000297   0.0004189
## age                             53.0524781   0.0020604  -0.0208469   0.0249676
## gradeGrade 2                     0.6472303   0.6306489  -0.2136302   1.4749280
## gradeGrade 3                     0.2346939   0.7992662  -0.0881914   1.6867237
## hormoneYes                       0.3586006  -0.4264228  -0.8571969   0.0043512
## menopauseYes                     0.5772595   0.1595040  -0.3366009   0.6556089
## nodes                            5.0102041   0.0594461   0.0413248   0.0775674
## prog_recp_highhigh               0.5072886  -0.9946993  -1.3767371  -0.6126616
## estrg_recp_highhigh              0.5262391  -0.3448877  -0.7603029   0.0705275
## hormoneYes:estrg_recp_highhigh   0.2040816   0.3259127  -0.3264283   0.9782537
##                                 se          exp(est)    L95%        U95%      
## rate                             0.0000753          NA          NA          NA
## age                              0.0116876   1.0020625   0.9793689   1.0252819
## gradeGrade 2                     0.4307625   1.8788293   0.8076470   4.3707209
## gradeGrade 3                     0.4527928   2.2239083   0.9155856   5.4017540
## hormoneYes                       0.2197867   0.6528402   0.4243499   1.0043607
## menopauseYes                     0.2531194   1.1729290   0.7141938   1.9263150
## nodes                            0.0092457   1.0612486   1.0421906   1.0806551
## prog_recp_highhigh               0.1949208   0.3698346   0.2524008   0.5419066
## estrg_recp_highhigh              0.2119504   0.7082999   0.4675248   1.0730741
## hormoneYes:estrg_recp_highhigh   0.3328332   1.3852944   0.7214961   2.6598075
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1584.876, df = 10
## AIC = 3189.752
fit_w
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "weibull")
## 
## Estimates: 
##                                 data mean    est          L95%       
## shape                                    NA      1.70403      1.50112
## scale                                    NA   4593.29071   2094.21063
## age                                53.05248     -0.00287     -0.01625
## gradeGrade 2                        0.64723     -0.35634     -0.85503
## gradeGrade 3                        0.23469     -0.48752     -1.01208
## hormoneYes                          0.35860      0.32141      0.06784
## menopauseYes                        0.57726     -0.08770     -0.38016
## nodes                               5.01020     -0.04007     -0.05116
## prog_recp_highhigh                  0.50729      0.63002      0.39624
## estrg_recp_highhigh                 0.52624      0.21541     -0.02937
## hormoneYes:estrg_recp_highhigh      0.20408     -0.22070     -0.60430
##                                 U95%         se           exp(est)   
## shape                               1.93437      0.11023           NA
## scale                           10074.59289   1840.67790           NA
## age                                 0.01052      0.00683      0.99714
## gradeGrade 2                        0.14235      0.25444      0.70024
## gradeGrade 3                        0.03704      0.26764      0.61415
## hormoneYes                          0.57498      0.12938      1.37907
## menopauseYes                        0.20476      0.14922      0.91604
## nodes                              -0.02898      0.00566      0.96072
## prog_recp_highhigh                  0.86379      0.11928      1.87764
## estrg_recp_highhigh                 0.46019      0.12489      1.24037
## hormoneYes:estrg_recp_highhigh      0.16291      0.19572      0.80196
##                                 L95%         U95%       
## shape                                    NA           NA
## scale                                    NA           NA
## age                                 0.98388      1.01057
## gradeGrade 2                        0.42527      1.15298
## gradeGrade 3                        0.36346      1.03773
## hormoneYes                          1.07019      1.77710
## menopauseYes                        0.68375      1.22723
## nodes                               0.95013      0.97143
## prog_recp_highhigh                  1.48623      2.37214
## estrg_recp_highhigh                 0.97105      1.58437
## hormoneYes:estrg_recp_highhigh      0.54646      1.17693
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1557.819, df = 11
## AIC = 3137.639
fit_gg
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "gengamma", scale = "odds")
## 
## Estimates: 
##                                 data mean  est        L95%       U95%     
## mu                                     NA   8.060083   7.259472   8.860693
## sigma                                  NA   0.927965   0.759728   1.133457
## Q                                      NA  -0.086207  -0.621886   0.449472
## age                             53.052478   0.000194  -0.014443   0.014830
## gradeGrade 2                     0.647230  -0.286979  -0.693345   0.119388
## gradeGrade 3                     0.234694  -0.483851  -0.929275  -0.038427
## hormoneYes                       0.358601   0.289112   0.009512   0.568712
## menopauseYes                     0.577259  -0.110334  -0.418477   0.197808
## nodes                            5.010204  -0.045925  -0.061690  -0.030159
## prog_recp_highhigh               0.507289   0.688205   0.454389   0.922021
## estrg_recp_highhigh              0.526239   0.175659  -0.084333   0.435651
## hormoneYes:estrg_recp_highhigh   0.204082  -0.171083  -0.573141   0.230976
##                                 se         exp(est)   L95%       U95%     
## mu                               0.408482         NA         NA         NA
## sigma                            0.094708         NA         NA         NA
## Q                                0.273311         NA         NA         NA
## age                              0.007468   1.000194   0.985661   1.014941
## gradeGrade 2                     0.207334   0.750528   0.499901   1.126807
## gradeGrade 3                     0.227261   0.616405   0.394840   0.962302
## hormoneYes                       0.142656   1.335241   1.009557   1.765991
## menopauseYes                     0.157218   0.895535   0.658049   1.218728
## nodes                            0.008044   0.955114   0.940174   0.970291
## prog_recp_highhigh               0.119296   1.990141   1.575211   2.514368
## estrg_recp_highhigh              0.132651   1.192032   0.919125   1.545969
## hormoneYes:estrg_recp_highhigh   0.205135   0.842752   0.563752   1.259828
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1549.613, df = 12
## AIC = 3123.225
fit_ln
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "lnorm")
## 
## Estimates: 
##                                 data mean  est        L95%       U95%     
## meanlog                                NA   8.096766   7.313362   8.880170
## sdlog                                  NA   0.903087   0.804670   1.013541
## age                             53.052478  -0.000151  -0.014713   0.014411
## gradeGrade 2                     0.647230  -0.290575  -0.701254   0.120104
## gradeGrade 3                     0.234694  -0.481817  -0.930933  -0.032701
## hormoneYes                       0.358601   0.291626   0.014052   0.569200
## menopauseYes                     0.577259  -0.106762  -0.414202   0.200679
## nodes                            5.010204  -0.045707  -0.061048  -0.030365
## prog_recp_highhigh               0.507289   0.685028   0.452500   0.917556
## estrg_recp_highhigh              0.526239   0.178330  -0.080088   0.436749
## hormoneYes:estrg_recp_highhigh   0.204082  -0.176238  -0.575772   0.223295
##                                 se         exp(est)   L95%       U95%     
## meanlog                          0.399703         NA         NA         NA
## sdlog                            0.053166         NA         NA         NA
## age                              0.007430   0.999849   0.985395   1.014515
## gradeGrade 2                     0.209534   0.747833   0.495963   1.127614
## gradeGrade 3                     0.229145   0.617660   0.394186   0.967828
## hormoneYes                       0.141622   1.338602   1.014152   1.766853
## menopauseYes                     0.156860   0.898740   0.660867   1.222233
## nodes                            0.007828   0.955322   0.940778   0.970091
## prog_recp_highhigh               0.118639   1.983828   1.572238   2.503166
## estrg_recp_highhigh              0.131849   1.195220   0.923035   1.547668
## hormoneYes:estrg_recp_highhigh   0.203847   0.838418   0.562271   1.250189
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1549.662, df = 11
## AIC = 3121.324
fit_f
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "genf")
## 
## Estimates: 
##                                 data mean   est         L95%        U95%      
## mu                                      NA    7.996738    7.079463    8.914014
## sigma                                   NA    0.919346    0.750812    1.125709
## Q                                       NA   -0.229813   -1.422660    0.963035
## P                                       NA    0.164845    0.000123  221.425036
## age                              53.052478    0.000525   -0.014175    0.015226
## gradeGrade 2                      0.647230   -0.282591   -0.686339    0.121157
## gradeGrade 3                      0.234694   -0.481120   -0.924282   -0.037958
## hormoneYes                        0.358601    0.282895    0.000140    0.565650
## menopauseYes                      0.577259   -0.112291   -0.420445    0.195863
## nodes                             5.010204   -0.045952   -0.062027   -0.029877
## prog_recp_highhigh                0.507289    0.687605    0.455163    0.920047
## estrg_recp_highhigh               0.526239    0.169082   -0.093799    0.431963
## hormoneYes:estrg_recp_highhigh    0.204082   -0.168482   -0.570311    0.233348
##                                 se          exp(est)    L95%        U95%      
## mu                                0.468006          NA          NA          NA
## sigma                             0.094988          NA          NA          NA
## Q                                 0.608607          NA          NA          NA
## P                                 0.605803          NA          NA          NA
## age                               0.007500    1.000525    0.985925    1.015342
## gradeGrade 2                      0.205998    0.753828    0.503416    1.128802
## gradeGrade 3                      0.226107    0.618091    0.396816    0.962754
## hormoneYes                        0.144266    1.326966    1.000140    1.760592
## menopauseYes                      0.157224    0.893784    0.656754    1.216360
## nodes                             0.008202    0.955088    0.939858    0.970565
## prog_recp_highhigh                0.118595    1.988947    1.576431    2.509409
## estrg_recp_highhigh               0.134125    1.184217    0.910466    1.540278
## hormoneYes:estrg_recp_highhigh    0.205019    0.844947    0.565350    1.262820
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1549.579, df = 13
## AIC = 3125.158
fit_ll
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "llogis")
## 
## Estimates: 
##                                 data mean    est          L95%       
## shape                                    NA     2.011814     1.773916
## scale                                    NA  3298.337359  1500.940978
## age                               53.052478    -0.000577    -0.014906
## gradeGrade 2                       0.647230    -0.316180    -0.766322
## gradeGrade 3                       0.234694    -0.464565    -0.947973
## hormoneYes                         0.358601     0.305006     0.035307
## menopauseYes                       0.577259    -0.119315    -0.424690
## nodes                              5.010204    -0.045954    -0.060699
## prog_recp_highhigh                 0.507289     0.662928     0.432562
## estrg_recp_highhigh                0.526239     0.192737    -0.060285
## hormoneYes:estrg_recp_highhigh     0.204082    -0.210049    -0.606507
##                                 U95%         se           exp(est)   
## shape                              2.281616     0.129176           NA
## scale                           7248.139330  1324.956839           NA
## age                                0.013753     0.007311     0.999423
## gradeGrade 2                       0.133962     0.229668     0.728928
## gradeGrade 3                       0.018843     0.246641     0.628408
## hormoneYes                         0.574705     0.137604     1.356633
## menopauseYes                       0.186060     0.155806     0.887528
## nodes                             -0.031210     0.007523     0.955086
## prog_recp_highhigh                 0.893293     0.117536     1.940465
## estrg_recp_highhigh                0.445758     0.129095     1.212563
## hormoneYes:estrg_recp_highhigh     0.186409     0.202278     0.810545
##                                 L95%         U95%       
## shape                                    NA           NA
## scale                                    NA           NA
## age                                0.985204     1.013848
## gradeGrade 2                       0.464719     1.143349
## gradeGrade 3                       0.387526     1.019021
## hormoneYes                         1.035938     1.776607
## menopauseYes                       0.653972     1.204495
## nodes                              0.941107     0.969272
## prog_recp_highhigh                 1.541202     2.443163
## estrg_recp_highhigh                0.941496     1.561674
## hormoneYes:estrg_recp_highhigh     0.545252     1.204915
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1553.056, df = 11
## AIC = 3128.112
fit_gom
## Call:
## flexsurvreg(formula = Surv(survtime, censdead) ~ age + grade + 
##     hormone + menopause + nodes + prog_recp_high + estrg_recp_high + 
##     estrg_recp_high:hormone, data = dat, dist = "gompertz")
## 
## Estimates: 
##                                 data mean   est         L95%        U95%      
## shape                                   NA   0.0007614   0.0005942   0.0009286
## rate                                    NA   0.0000534   0.0000139   0.0002049
## age                             53.0524781   0.0035099  -0.0193137   0.0263335
## gradeGrade 2                     0.6472303   0.6104095  -0.2353399   1.4561590
## gradeGrade 3                     0.2346939   0.8372540  -0.0517391   1.7262471
## hormoneYes                       0.3586006  -0.5528362  -0.9881466  -0.1175257
## menopauseYes                     0.5772595   0.1611809  -0.3367654   0.6591271
## nodes                            5.0102041   0.0671143   0.0488866   0.0853420
## prog_recp_highhigh               0.5072886  -1.0531903  -1.4348282  -0.6715524
## estrg_recp_highhigh              0.5262391  -0.3716242  -0.7872275   0.0439790
## hormoneYes:estrg_recp_highhigh   0.2040816   0.3999812  -0.2541661   1.0541285
##                                 se          exp(est)    L95%        U95%      
## shape                            0.0000853          NA          NA          NA
## rate                             0.0000366          NA          NA          NA
## age                              0.0116449   1.0035160   0.9808716   1.0266832
## gradeGrade 2                     0.4315127   1.8411853   0.7903022   4.2894520
## gradeGrade 3                     0.4535762   2.3100150   0.9495766   5.6195249
## hormoneYes                       0.2221013   0.5753158   0.3722660   0.8891177
## menopauseYes                     0.2540589   1.1748974   0.7140763   1.9331042
## nodes                            0.0093000   1.0694177   1.0501013   1.0890895
## prog_recp_highhigh               0.1947168   0.3488231   0.2381563   0.5109148
## estrg_recp_highhigh              0.2120464   0.6896133   0.4551048   1.0449604
## hormoneYes:estrg_recp_highhigh   0.3337548   1.4917967   0.7755630   2.8694734
## 
## N = 686,  Events: 171,  Censored: 515
## Total time at risk: 905940
## Log-likelihood = -1568.921, df = 11
## AIC = 3159.843