Last updated: 2022-02-02
Checks: 6 1
Knit directory: esoph-micro-cancer-workflow/
This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish
to commit the R Markdown file and build the HTML.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20200916)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 0035c59. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data/
Unstaged changes:
Modified: analysis/survival-analysis.Rmd
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were made to the R Markdown (analysis/survival-analysis.Rmd
) and HTML (docs/survival-analysis.html
) files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view the files as they were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
Rmd | 0035c59 | noah-padgett | 2022-02-02 | updated survival analysis |
html | 0035c59 | noah-padgett | 2022-02-02 | updated survival analysis |
Rmd | 9b41498 | noah-padgett | 2021-12-19 | updated survival aanalyses |
html | 9b41498 | noah-padgett | 2021-12-19 | updated survival aanalyses |
# survival data
survive_data <- read_xlsx("data/esophagusonly_survival_data.xlsx")
# Number of participants with Date of Diagnosis Data
nrow(survive_data) - sum(is.na(survive_data$`date of diagnosis`))
[1] 57
# Number of participants with Date of Surgery Data
nrow(survive_data) - sum(is.na(survive_data$`surg date`))
[1] 182
table(is.na(survive_data$`date of diagnosis`), is.na(survive_data$`surg date`))
FALSE TRUE
FALSE 31 26
TRUE 151 17
# create new ID - date of diag if available, if not, use date of surg.
survive_data$date_start <- NA
survive_data$date_type <- NA
for(i in 1:nrow(survive_data)){
if(is.na(survive_data$`date of diagnosis`[i]) == F){
survive_data$date_start[i] <- paste0(survive_data$`date of diagnosis`[i])
survive_data$date_type[i] <- "DateOfDiagnosis"
} else {
if(is.na(survive_data$`surg date`[i]) == F){
survive_data$date_start[i] <- paste0(survive_data$`surg date`[i])
survive_data$date_type[i] <- "DateOfSurgery"
}
}
}
survive_data$date_start <- as.Date(survive_data$date_start)
survive_data$date_type <- factor(survive_data$date_type, levels = c("DateOfDiagnosis", "DateOfSurgery"))
# compute days survived
survive_data$days_surv <- difftime(survive_data$`DOD or censor`, survive_data$date_start)
# Status available
nrow(survive_data) - sum(is.na(survive_data$status))
[1] 225
table(survive_data$status)
a d
49 176
survive_data$status_observed <- ifelse(survive_data$status == "d", 1, 0)
table(survive_data$status_observed)
0 1
49 176
# counts and date data
# Look at FALSE column for counts of cases we can use in the analysis
table(survive_data$status, is.na(survive_data$`date of diagnosis`), useNA = "ifany")
FALSE TRUE
a 35 14
d 22 154
table(survive_data$status, is.na(survive_data$`surg date`), useNA = "ifany")
FALSE TRUE
a 19 30
d 163 13
# format data so that we can plot time of surg. to time o
plot_dat <- survive_data %>%
mutate(
time0 = as.Date(date_start),
time_odc=as.Date(`DOD or censor`),
ID = as.numeric(as.factor(Accession))
)
p <- ggplot(plot_dat) +
geom_segment(aes(x=time0,xend=time_odc,y=ID, yend=ID))
p
Warning: Removed 17 rows containing missing values (geom_segment).
plot_dat <- survive_data %>%
arrange(desc(days_surv)) %>%
mutate(
ID = 1:nrow(survive_data)
)
p <- ggplot(plot_dat, aes(color=date_type)) +
geom_segment(aes(x=0,xend=days_surv,y=ID, yend=ID))+
labs(y="Participant ID", x="Days Survived Passed Diagnosis or Surgery")
p
Warning: Removed 17 rows containing missing values (geom_segment).
The specific analysis data depends on which OTU is used as a control variable.
M <- dat.16s.s %>%
dplyr::group_by(OTU) %>%
dplyr::summarize(M=mean(Abundance, na.rm=T),
med = median(Abundance, na.rm = T),
q3 = quantile(Abundance, 0.6))
M
# A tibble: 4 x 4
OTU M med q3
<fct> <dbl> <dbl> <dbl>
1 Fusobacterium nucleatum 3.56 0 0.2
2 Streptococcus spp.* 28.4 21.6 32.4
3 Campylobacter spp.* 0.446 0 0
4 Prevotella spp. 5.42 1.2 2.6
# create microbiome indicators
dat_micro1 <- dat.16s.s %>%
filter(OTU == "Fusobacterium nucleatum") %>%
mutate(Fuso_Abund = Abundance,
Fuso = ifelse(Abundance > 0, "high", "low")) %>%
dplyr::select(accession.number, Fuso, Fuso_Abund, tissue, gender, age, Race, female, BMI.n, BarrettsHist, sample_type, pres, tumor.stage) %>%
ungroup()%>%
group_by(accession.number) %>%
mutate(
n = n(),
flag = ifelse(n==1 | (n>1 & tissue == "T"), 1, 0)
) %>%
filter(flag == 1)
Adding missing grouping variables: `OTU`
dat_micro2 <- dat.16s.s %>%
filter(OTU == "Streptococcus spp.*") %>%
mutate(Strept_Abund = Abundance,
Strept = ifelse(Abundance > 21.6, "high", "low")) %>%
dplyr::select(accession.number, Strept, Strept_Abund, tissue) %>%
group_by(accession.number) %>%
mutate(
n = n(),
flag = ifelse(n==1 | (n>1 & tissue == "T"), 1, 0)
) %>%
filter(flag == 1)
Adding missing grouping variables: `OTU`
dat_micro3 <- dat.16s.s %>%
filter(OTU == "Campylobacter spp.*") %>%
mutate(Campy_Abund = Abundance,
Campy = ifelse(Abundance > 0, "high", "low")) %>%
dplyr::select(accession.number, Campy, Campy_Abund, tissue) %>%
group_by(accession.number) %>%
mutate(
n = n(),
flag = ifelse(n==1 | (n>1 & tissue == "T"), 1, 0)
) %>%
filter(flag == 1)
Adding missing grouping variables: `OTU`
dat_micro4 <- dat.16s.s %>%
filter(OTU == "Prevotella spp.") %>%
mutate(Prevo_Abund=Abundance,
Prevo = ifelse(Abundance > 1.2, "high", "low")) %>%
dplyr::select(accession.number, Prevo, Prevo_Abund, tissue) %>%
group_by(accession.number) %>%
mutate(
n = n(),
flag = ifelse(n==1 | (n>1 & tissue == "T"), 1, 0)
) %>%
filter(flag == 1)
Adding missing grouping variables: `OTU`
# check for microbiome data
# IF multiple samples from same person, use the cancer sample
dat_micro <- full_join(dat_micro1[,-1],dat_micro2[,2:4])
Joining, by = "accession.number"
dat_micro <- full_join(dat_micro,dat_micro3[,2:4])
Joining, by = "accession.number"
dat_micro <- full_join(dat_micro,dat_micro4[,2:4])
Joining, by = "accession.number"
# subset survival dataset
# => only those with surg date
sub_dat_survival <- survive_data %>%
filter(date_type == "DateOfSurgery") %>%
mutate(
# revise "survival" to 5 years"
# 0 = survived, 1 = died
status_observed_5yr = ifelse(as.numeric(days_surv) > 1825, 0, 1),
time0 = as.Date(date_start),
time_odc=as.Date(`DOD or censor`),
ID = as.numeric(as.factor(Accession)),
etime = as.numeric(days_surv),
etime_5yr = ifelse(as.numeric(days_surv) > 1825, 1825, as.numeric(days_surv))) %>%
dplyr::select(Accession, ID, time0, time_odc, etime,etime_5yr, days_surv, status_observed, status_observed_5yr)
# joining survival & 16s data
full_dat <- inner_join(sub_dat_survival, dat_micro, by=c("Accession"="accession.number")) %>%
mutate(
Fuso = factor(Fuso, levels=c("low", "high"), ordered=T),
Strept = factor(Strept, levels=c("low", "high"), ordered=T),
Campy = factor(Campy, levels=c("low", "high"), ordered=T),
Prevo = factor(Prevo, levels=c("low", "high"), ordered=T),
all_low = ifelse(Fuso == "low" & Strept == "low" & Campy == "low" & Prevo == "low", 1, 0),
all_high = ifelse(Fuso == "high" & Strept == "high" & Campy == "high" & Prevo == "high", 1, 0)
)
The following analysis is based on the overall survival probability regardless of microbiome information.
library(rms)
library(survival)
library(survminer)
library(lubridate)
# Generate right-censored survival time variable
full_dat$years <- as.numeric(full_dat$days_surv /365.25)
units(full_dat$years) <- 'Year'
full_dat$S <- Surv(full_dat$years , full_dat$status_observed)
# fit null model
f0 <- survfit(Surv(years, status_observed) ~ 1, data = full_dat)
ggsurvplot(
fit = survfit(Surv(years, status_observed) ~ 1, data = full_dat),
xlab = "Years",
ylab = "Overall survival probability")
f0 # overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1, data = full_dat)
n events median 0.95LCL 0.95UCL
78.00 76.00 1.82 1.21 3.14
summary(f0, times = 1) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1, data = full_dat)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
1 50 28 0.641 0.0543 0.543 0.757
summary(coxph(Surv(years, status_observed) ~ 1, data = full_dat))
Call: coxph(formula = Surv(years, status_observed) ~ 1, data = full_dat)
Null model
log likelihood= -262.2
n= 78
# getting the number at risk over years 0:10
summary(f0, times = c(0:10))
Call: survfit(formula = Surv(years, status_observed) ~ 1, data = full_dat)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 78 0 1.0000 0.0000 1.0000 1.000
1 50 28 0.6410 0.0543 0.5429 0.757
2 37 13 0.4744 0.0565 0.3755 0.599
3 32 5 0.4103 0.0557 0.3144 0.535
4 24 8 0.3077 0.0523 0.2206 0.429
5 22 2 0.2821 0.0510 0.1980 0.402
6 13 9 0.1667 0.0422 0.1015 0.274
7 10 3 0.1282 0.0379 0.0719 0.229
8 7 3 0.0897 0.0324 0.0443 0.182
9 6 1 0.0769 0.0302 0.0357 0.166
10 4 1 0.0641 0.0277 0.0275 0.150
The baseline model above for the survival data shows that time to death after surgery is typically between 1.21 to 3.14 years (median=1.82 years). The one year after surgery survival probability is .61 (95% CI, [.54, .76]).
f1 <- survfit(Surv(years, status_observed) ~ 1 + Fuso, data = full_dat)
ggsurvplot(
fit = survfit(
Surv(years, status_observed) ~ 1 + Fuso,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Fuso, data = full_dat)
n events median 0.95LCL 0.95UCL
Fuso=low 48 47 2.09 1.240 5.06
Fuso=high 30 29 1.61 0.898 3.15
summary(f1, times = 1) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Fuso, data = full_dat)
Fuso=low
time n.risk n.event survival std.err lower 95% CI
1.000 32.000 16.000 0.667 0.068 0.546
upper 95% CI
0.814
Fuso=high
time n.risk n.event survival std.err lower 95% CI
1.0000 18.0000 12.0000 0.6000 0.0894 0.4480
upper 95% CI
0.8036
coxph(Surv(years, status_observed) ~ 1 + I(Fuso == "high"), data = full_dat)
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Fuso ==
"high"), data = full_dat)
coef exp(coef) se(coef) z p
I(Fuso == "high")TRUE 0.1 1.1 0.2 0.5 0.6
Likelihood ratio test=0.2 on 1 df, p=0.6
n= 78, number of events= 76
# getting the number at risk over years 0:10
summary(f1, times = c(0:10))
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Fuso, data = full_dat)
Fuso=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 48 0 1.0000 0.0000 1.0000 1.000
1 32 16 0.6667 0.0680 0.5458 0.814
2 24 8 0.5000 0.0722 0.3768 0.663
3 21 3 0.4375 0.0716 0.3174 0.603
4 17 4 0.3542 0.0690 0.2417 0.519
5 17 0 0.3542 0.0690 0.2417 0.519
6 9 8 0.1875 0.0563 0.1041 0.338
7 6 3 0.1250 0.0477 0.0591 0.264
8 3 3 0.0625 0.0349 0.0209 0.187
9 2 1 0.0417 0.0288 0.0107 0.162
10 2 0 0.0417 0.0288 0.0107 0.162
Fuso=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 30 0 1.000 0.0000 1.0000 1.000
1 18 12 0.600 0.0894 0.4480 0.804
2 13 5 0.433 0.0905 0.2878 0.652
3 11 2 0.367 0.0880 0.2291 0.587
4 7 4 0.233 0.0772 0.1220 0.446
5 5 2 0.167 0.0680 0.0749 0.371
6 4 1 0.133 0.0621 0.0535 0.332
7 4 0 0.133 0.0621 0.0535 0.332
8 4 0 0.133 0.0621 0.0535 0.332
9 4 0 0.133 0.0621 0.0535 0.332
10 2 1 0.100 0.0548 0.0342 0.293
# compare Fuso groups
survdiff(Surv(years, status_observed) ~ Fuso, data = full_dat)
Call:
survdiff(formula = Surv(years, status_observed) ~ Fuso, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Fuso=low 48 47 49 0.0849 0.248
Fuso=high 30 29 27 0.1545 0.248
Chisq= 0.2 on 1 degrees of freedom, p= 0.6
The model above for the survival decomposed by Fuso abundance strata (low versus high; i.e., Fuso abundance greater than 0, the median) shows that time to death after surgery is between 1.24 to 5.06 years (median=2.09 years) for low abundance. The one year after surgery survival probability is .67 (95% CI, [.55, .81]). For individuals with high Fuso abundance, the time to death after surgery is between 0.90 to 3.15 years (median=1.61 years) for high abundance. The one year after surgery survival probability is .60 (95% CI, [.45, .80]).
The LRT comparing the model with Fuso to the baseline model was not significant (\(G^2(1)=0.2, p=0.60\)). Giving evidence that Fuso (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f1.1 <- survfit(Surv(years, status_observed) ~ 1 + Fuso + I(age > median(age) )+ female, data = full_dat)
f1.1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Fuso + I(age >
median(age)) + female, data = full_dat)
n events median 0.95LCL
Fuso=low, I(age > median(age))=FALSE, female=0 22 22 2.0890 1.2101
Fuso=low, I(age > median(age))=FALSE, female=1 5 5 1.4730 0.2683
Fuso=low, I(age > median(age))=TRUE , female=0 18 17 5.1759 1.5661
Fuso=low, I(age > median(age))=TRUE , female=1 3 3 0.0438 0.0192
Fuso=high, I(age > median(age))=FALSE, female=0 8 8 0.8501 0.5969
Fuso=high, I(age > median(age))=FALSE, female=1 4 4 1.4634 0.7173
Fuso=high, I(age > median(age))=TRUE , female=0 16 15 2.9432 0.8980
Fuso=high, I(age > median(age))=TRUE , female=1 2 2 1.2676 0.6817
0.95UCL
Fuso=low, I(age > median(age))=FALSE, female=0 5.63
Fuso=low, I(age > median(age))=FALSE, female=1 NA
Fuso=low, I(age > median(age))=TRUE , female=0 7.72
Fuso=low, I(age > median(age))=TRUE , female=1 NA
Fuso=high, I(age > median(age))=FALSE, female=0 NA
Fuso=high, I(age > median(age))=FALSE, female=1 NA
Fuso=high, I(age > median(age))=TRUE , female=0 NA
Fuso=high, I(age > median(age))=TRUE , female=1 NA
summary(f1.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Fuso + I(age >
median(age)) + female, data = full_dat)
Fuso=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 15.0000 7.0000 0.6818 0.0993 0.5125
upper 95% CI
0.9071
Fuso=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 2.000 0.600 0.219 0.293
upper 95% CI
1.000
Fuso=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 14.000 4.000 0.778 0.098 0.608
upper 95% CI
0.996
Fuso=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 3 0 NaN NA
upper 95% CI
NA
Fuso=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 5.000 0.375 0.171 0.153
upper 95% CI
0.917
Fuso=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 1.000 0.750 0.217 0.426
upper 95% CI
1.000
Fuso=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 5.000 0.688 0.116 0.494
upper 95% CI
0.957
Fuso=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.000 1.000 1.000 0.500 0.354 0.125
upper 95% CI
1.000
summary(coxph(Surv(years, status_observed) ~ 1 + I(Fuso == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Fuso ==
"high") + I(age > median(age)) + female, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Fuso == "high")TRUE 0.0785 1.0817 0.2481 0.32 0.7517
I(age > median(age))TRUE -0.1893 0.8275 0.2476 -0.76 0.4446
female 0.9855 2.6792 0.3368 2.93 0.0034 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Fuso == "high")TRUE 1.082 0.925 0.665 1.76
I(age > median(age))TRUE 0.828 1.208 0.509 1.34
female 2.679 0.373 1.385 5.18
Concordance= 0.607 (se = 0.034 )
Likelihood ratio test= 9.82 on 3 df, p=0.02
Wald test = 11.4 on 3 df, p=0.01
Score (logrank) test = 12.5 on 3 df, p=0.006
f2 <- survfit(Surv(years, status_observed) ~ 1 + Strept, data = full_dat)
ggsurvplot(
fit = survfit(
Surv(years, status_observed) ~ 1 + Strept,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f2# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Strept,
data = full_dat)
n events median 0.95LCL 0.95UCL
Strept=low 35 33 1.78 0.882 5.06
Strept=high 43 43 1.85 1.153 3.99
summary(f2, times = 1) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Strept,
data = full_dat)
Strept=low
time n.risk n.event survival std.err lower 95% CI
1.0000 21.0000 14.0000 0.6000 0.0828 0.4578
upper 95% CI
0.7864
Strept=high
time n.risk n.event survival std.err lower 95% CI
1.0000 29.0000 14.0000 0.6744 0.0715 0.5479
upper 95% CI
0.8301
summary(coxph(Surv(years, status_observed) ~ I(Strept == "high"), data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ I(Strept == "high"),
data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Strept == "high")TRUE 0.140 1.150 0.236 0.59 0.55
exp(coef) exp(-coef) lower .95 upper .95
I(Strept == "high")TRUE 1.15 0.87 0.724 1.83
Concordance= 0.494 (se = 0.034 )
Likelihood ratio test= 0.35 on 1 df, p=0.6
Wald test = 0.35 on 1 df, p=0.6
Score (logrank) test = 0.35 on 1 df, p=0.6
# getting the number at risk over years 0:10
summary(f2, times = c(0:10))
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Strept,
data = full_dat)
Strept=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 35 0 1.000 0.0000 1.0000 1.000
1 21 14 0.600 0.0828 0.4578 0.786
2 17 4 0.486 0.0845 0.3454 0.683
3 15 2 0.429 0.0836 0.2923 0.628
4 11 4 0.314 0.0785 0.1927 0.513
5 11 0 0.314 0.0785 0.1927 0.513
6 5 6 0.143 0.0591 0.0635 0.322
7 5 0 0.143 0.0591 0.0635 0.322
8 5 0 0.143 0.0591 0.0635 0.322
9 5 0 0.143 0.0591 0.0635 0.322
10 3 1 0.114 0.0538 0.0454 0.287
Strept=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 43 0 1.0000 0.0000 1.00000 1.000
1 29 14 0.6744 0.0715 0.54795 0.830
2 20 9 0.4651 0.0761 0.33757 0.641
3 17 3 0.3953 0.0746 0.27318 0.572
4 13 4 0.3023 0.0700 0.19199 0.476
5 11 2 0.2558 0.0665 0.15365 0.426
6 8 3 0.1860 0.0593 0.09957 0.348
7 5 3 0.1163 0.0489 0.05101 0.265
8 2 3 0.0465 0.0321 0.01202 0.180
9 1 1 0.0233 0.0230 0.00335 0.161
10 1 0 0.0233 0.0230 0.00335 0.161
# compare groups
survdiff(Surv(years, status_observed) ~ Strept, data = full_dat)
Call:
survdiff(formula = Surv(years, status_observed) ~ Strept, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Strept=low 35 33 35.5 0.179 0.35
Strept=high 43 43 40.5 0.157 0.35
Chisq= 0.3 on 1 degrees of freedom, p= 0.6
The model above for the survival decomposed by Strepto abundance strata (low versus high; i.e., Strepto abundance greater than 0, the median) shows that time to death after surgery is between 0.88 to 5.06 years (median=1.78 years) for low abundance. The one year after surgery survival probability is .60 (95% CI, [.46, .79]). For individuals with high Strepto abundance, the time to death after surgery is between 1.15 to 3.99 years (median=1.85 years) for high abundance. The one year after surgery survival probability is .67 (95% CI, [.55, .83]).
The LRT comparing the model with Strepto to the baseline model was not significant (\(G^2(1)=0.3, p=0.60\)). Giving evidence that Strepto (high (greater than 21.6) versus low) did not significantly differentiate survival time in this sample.
f2.1 <- survfit(Surv(years, status_observed) ~ 1 + Strept + I(age > median(age) )+ female, data = full_dat)
f2.1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Strept +
I(age > median(age)) + female, data = full_dat)
n events median 0.95LCL
Strept=low, I(age > median(age))=FALSE, female=0 15 15 2.272 0.7228
Strept=low, I(age > median(age))=FALSE, female=1 4 4 0.493 0.0794
Strept=low, I(age > median(age))=TRUE , female=0 14 12 3.362 1.4401
Strept=low, I(age > median(age))=TRUE , female=1 2 2 0.363 0.0438
Strept=high, I(age > median(age))=FALSE, female=0 15 15 1.747 0.9199
Strept=high, I(age > median(age))=FALSE, female=1 5 5 1.634 1.4730
Strept=high, I(age > median(age))=TRUE , female=0 20 20 3.569 1.1526
Strept=high, I(age > median(age))=TRUE , female=1 3 3 0.851 0.0192
0.95UCL
Strept=low, I(age > median(age))=FALSE, female=0 5.98
Strept=low, I(age > median(age))=FALSE, female=1 NA
Strept=low, I(age > median(age))=TRUE , female=0 NA
Strept=low, I(age > median(age))=TRUE , female=1 NA
Strept=high, I(age > median(age))=FALSE, female=0 5.82
Strept=high, I(age > median(age))=FALSE, female=1 NA
Strept=high, I(age > median(age))=TRUE , female=0 6.32
Strept=high, I(age > median(age))=TRUE , female=1 NA
summary(f2.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Strept +
I(age > median(age)) + female, data = full_dat)
Strept=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 6.000 0.600 0.126 0.397
upper 95% CI
0.907
Strept=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
Strept=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 3.000 0.786 0.110 0.598
upper 95% CI
1.000
Strept=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 2 0 NaN NA
upper 95% CI
NA
Strept=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 6.000 0.600 0.126 0.397
upper 95% CI
0.907
Strept=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 5 0 1 0 1
upper 95% CI
1
Strept=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 14.000 6.000 0.700 0.102 0.525
upper 95% CI
0.933
Strept=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 2.0000 0.3333 0.2722 0.0673
upper 95% CI
1.0000
summary(coxph(Surv(years, status_observed) ~ 1 + I(Strept == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Strept ==
"high") + I(age > median(age)) + female, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Strept == "high")TRUE 0.069 1.071 0.243 0.28 0.7761
I(age > median(age))TRUE -0.183 0.833 0.245 -0.75 0.4554
female 0.986 2.680 0.338 2.92 0.0035 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Strept == "high")TRUE 1.071 0.933 0.666 1.72
I(age > median(age))TRUE 0.833 1.200 0.516 1.35
female 2.680 0.373 1.383 5.19
Concordance= 0.594 (se = 0.035 )
Likelihood ratio test= 9.8 on 3 df, p=0.02
Wald test = 11.4 on 3 df, p=0.01
Score (logrank) test = 12.4 on 3 df, p=0.006
f3 <- survfit(Surv(years, status_observed) ~ 1 + Campy, data = full_dat)
ggsurvplot(
fit = survfit(
Surv(years, status_observed) ~ 1 + Campy,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f3# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Campy, data = full_dat)
n events median 0.95LCL 0.95UCL
Campy=low 63 62 1.91 1.440 3.17
Campy=high 15 14 1.14 0.723 5.06
summary(f3, times = 1) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Campy, data = full_dat)
Campy=low
time n.risk n.event survival std.err lower 95% CI
1.0000 42.0000 21.0000 0.6667 0.0594 0.5599
upper 95% CI
0.7939
Campy=high
time n.risk n.event survival std.err lower 95% CI
1.000 8.000 7.000 0.533 0.129 0.332
upper 95% CI
0.856
summary(coxph(Surv(years, status_observed) ~ 1 + I(Campy == "high"), data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Campy ==
"high"), data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Campy == "high")TRUE 0.271 1.311 0.300 0.9 0.37
exp(coef) exp(-coef) lower .95 upper .95
I(Campy == "high")TRUE 1.31 0.763 0.729 2.36
Concordance= 0.522 (se = 0.024 )
Likelihood ratio test= 0.77 on 1 df, p=0.4
Wald test = 0.82 on 1 df, p=0.4
Score (logrank) test = 0.82 on 1 df, p=0.4
# getting the number at risk over years 0:10
summary(f3, times = c(0:10))
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Campy, data = full_dat)
Campy=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 63 0 1.0000 0.0000 1.0000 1.000
1 42 21 0.6667 0.0594 0.5599 0.794
2 31 11 0.4921 0.0630 0.3829 0.632
3 27 4 0.4286 0.0623 0.3222 0.570
4 20 7 0.3175 0.0586 0.2210 0.456
5 19 1 0.3016 0.0578 0.2071 0.439
6 12 7 0.1905 0.0495 0.1145 0.317
7 9 3 0.1429 0.0441 0.0780 0.262
8 6 3 0.0952 0.0370 0.0445 0.204
9 5 1 0.0794 0.0341 0.0342 0.184
10 4 1 0.0635 0.0307 0.0246 0.164
Campy=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 15 0 1.0000 0.0000 1.0000 1.000
1 8 7 0.5333 0.1288 0.3322 0.856
2 6 2 0.4000 0.1265 0.2152 0.743
3 5 1 0.3333 0.1217 0.1630 0.682
4 4 1 0.2667 0.1142 0.1152 0.617
5 3 1 0.2000 0.1033 0.0727 0.550
6 1 2 0.0667 0.0644 0.0100 0.443
7 1 0 0.0667 0.0644 0.0100 0.443
8 1 0 0.0667 0.0644 0.0100 0.443
9 1 0 0.0667 0.0644 0.0100 0.443
# compare groups
survdiff(Surv(years, status_observed) ~ Campy, data = full_dat)
Call:
survdiff(formula = Surv(years, status_observed) ~ Campy, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Campy=low 63 62 64.8 0.118 0.816
Campy=high 15 14 11.2 0.680 0.816
Chisq= 0.8 on 1 degrees of freedom, p= 0.4
The model above for the survival decomposed by Campy abundance strata (low versus high; i.e., Campy abundance greater than 0, the median) shows that time to death after surgery is between 1.44 to 3.17 years (median=1.91 years) for low abundance. The one year after surgery survival probability is .67 (95% CI, [.56, .79]). For individuals with high Campy abundance, the time to death after surgery is between 0.72 to 5.06 years (median=1.14 years) for high abundance. The one year after surgery survival probability is .53 (95% CI, [.33, .86]).
The LRT comparing the model with Campy to the baseline model was not significant (\(G^2(1)=0.8, p=0.40\)). Giving evidence that Campy (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f3.1 <- survfit(Surv(years, status_observed) ~ 1 + Campy + I(age > median(age) )+ female, data = full_dat)
f3.1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Campy +
I(age > median(age)) + female, data = full_dat)
n events median 0.95LCL
Campy=low, I(age > median(age))=FALSE, female=0 23 23 2.908 1.2101
Campy=low, I(age > median(age))=FALSE, female=1 8 8 1.554 0.7173
Campy=low, I(age > median(age))=TRUE , female=0 27 26 3.170 1.4401
Campy=low, I(age > median(age))=TRUE , female=1 5 5 0.682 0.0438
Campy=high, I(age > median(age))=FALSE, female=0 7 7 0.723 0.5969
Campy=high, I(age > median(age))=FALSE, female=1 1 1 1.144 NA
Campy=high, I(age > median(age))=TRUE , female=0 7 6 4.055 0.7748
0.95UCL
Campy=low, I(age > median(age))=FALSE, female=0 5.82
Campy=low, I(age > median(age))=FALSE, female=1 NA
Campy=low, I(age > median(age))=TRUE , female=0 6.14
Campy=low, I(age > median(age))=TRUE , female=1 NA
Campy=high, I(age > median(age))=FALSE, female=0 NA
Campy=high, I(age > median(age))=FALSE, female=1 NA
Campy=high, I(age > median(age))=TRUE , female=0 NA
summary(f3.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Campy +
I(age > median(age)) + female, data = full_dat)
Campy=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 7.0000 0.6957 0.0959 0.5309
upper 95% CI
0.9116
Campy=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 5.000 3.000 0.625 0.171 0.365
upper 95% CI
1.000
Campy=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 20.0000 7.0000 0.7407 0.0843 0.5926
upper 95% CI
0.9259
Campy=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 4.0000 0.2000 0.1789 0.0346
upper 95% CI
1.0000
Campy=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 2.0000 5.0000 0.2857 0.1707 0.0886
upper 95% CI
0.9218
Campy=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 1 0 1 0 1
upper 95% CI
1
Campy=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 5.000 2.000 0.714 0.171 0.447
upper 95% CI
1.000
summary(coxph(Surv(years, status_observed) ~ 1 + I(Campy == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Campy ==
"high") + I(age > median(age)) + female, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Campy == "high")TRUE 0.421 1.523 0.306 1.37 0.1695
I(age > median(age))TRUE -0.216 0.806 0.246 -0.88 0.3807
female 1.047 2.850 0.334 3.14 0.0017 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Campy == "high")TRUE 1.523 0.657 0.836 2.78
I(age > median(age))TRUE 0.806 1.241 0.497 1.31
female 2.850 0.351 1.481 5.48
Concordance= 0.601 (se = 0.034 )
Likelihood ratio test= 11.5 on 3 df, p=0.009
Wald test = 13.1 on 3 df, p=0.005
Score (logrank) test = 14.1 on 3 df, p=0.003
f4 <- survfit(Surv(years, status_observed) ~ 1 + Prevo, data = full_dat)
ggsurvplot(
fit = survfit(
Surv(years, status_observed) ~ 1 + Prevo,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f4# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Prevo, data = full_dat)
n events median 0.95LCL 0.95UCL
Prevo=low 44 44 3.016 1.747 5.06
Prevo=high 34 32 0.949 0.695 2.83
summary(f4, times = 1) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Prevo, data = full_dat)
Prevo=low
time n.risk n.event survival std.err lower 95% CI
1.0000 34.0000 10.0000 0.7727 0.0632 0.6583
upper 95% CI
0.9070
Prevo=high
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 18.0000 0.4706 0.0856 0.3295
upper 95% CI
0.6722
summary(coxph(Surv(years, status_observed) ~ I(Prevo == "high"), data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ I(Prevo == "high"),
data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Prevo == "high")TRUE 0.296 1.344 0.237 1.25 0.21
exp(coef) exp(-coef) lower .95 upper .95
I(Prevo == "high")TRUE 1.34 0.744 0.845 2.14
Concordance= 0.568 (se = 0.033 )
Likelihood ratio test= 1.54 on 1 df, p=0.2
Wald test = 1.56 on 1 df, p=0.2
Score (logrank) test = 1.57 on 1 df, p=0.2
# getting the number at risk over years 0:10
summary(f4, times = c(0:10))
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Prevo, data = full_dat)
Prevo=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 44 0 1.0000 0.0000 1.0000 1.000
1 34 10 0.7727 0.0632 0.6583 0.907
2 25 9 0.5682 0.0747 0.4392 0.735
3 22 3 0.5000 0.0754 0.3721 0.672
4 17 5 0.3864 0.0734 0.2662 0.561
5 15 2 0.3409 0.0715 0.2261 0.514
6 8 7 0.1818 0.0581 0.0971 0.340
7 6 2 0.1364 0.0517 0.0648 0.287
8 3 3 0.0682 0.0380 0.0229 0.203
9 3 0 0.0682 0.0380 0.0229 0.203
10 2 1 0.0455 0.0314 0.0117 0.176
Prevo=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 34 0 1.0000 0.0000 1.0000 1.000
1 16 18 0.4706 0.0856 0.3295 0.672
2 12 4 0.3529 0.0820 0.2239 0.556
3 10 2 0.2941 0.0781 0.1747 0.495
4 7 3 0.2059 0.0693 0.1064 0.398
5 7 0 0.2059 0.0693 0.1064 0.398
6 5 2 0.1471 0.0607 0.0655 0.330
7 4 1 0.1176 0.0553 0.0469 0.295
8 4 0 0.1176 0.0553 0.0469 0.295
9 3 1 0.0882 0.0486 0.0299 0.260
10 2 0 0.0882 0.0486 0.0299 0.260
# compare groups
survdiff(Surv(years, status_observed) ~ Prevo, data = full_dat)
Call:
survdiff(formula = Surv(years, status_observed) ~ Prevo, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Prevo=low 44 44 49.1 0.534 1.56
Prevo=high 34 32 26.9 0.976 1.56
Chisq= 1.6 on 1 degrees of freedom, p= 0.2
The model above for the survival decomposed by Prevo abundance strata (low versus high; i.e., Prevo abundance greater than 1.2, the median) shows that time to death after surgery is between 1.75 to 5.06 years (median=3.02 years) for low abundance. The one year after surgery survival probability is .78 (95% CI, [.65, .91]). For individuals with high Prevo abundance, the time to death after surgery is between 0.70 to 2.83 years (median=0.95 years) for high abundance. The one year after surgery survival probability is .47 (95% CI, [.33, .67]).
The LRT comparing the model with Prevo to the baseline model was not significant (\(G^2(1)=2.0, p=0.20\)). Giving evidence that Prevo (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f4.1 <- survfit(Surv(years, status_observed) ~ 1 + Prevo + I(age > median(age) )+ female, data = full_dat)
f4.1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Prevo +
I(age > median(age)) + female, data = full_dat)
n events median 0.95LCL
Prevo=low, I(age > median(age))=FALSE, female=0 20 20 3.0157 1.7467
Prevo=low, I(age > median(age))=FALSE, female=1 5 5 1.6345 0.7173
Prevo=low, I(age > median(age))=TRUE , female=0 18 18 4.0205 1.5661
Prevo=low, I(age > median(age))=TRUE , female=1 1 1 0.0438 NA
Prevo=high, I(age > median(age))=FALSE, female=0 10 10 0.6858 0.5695
Prevo=high, I(age > median(age))=FALSE, female=1 4 4 1.3087 0.2683
Prevo=high, I(age > median(age))=TRUE , female=0 16 14 2.9432 0.6954
Prevo=high, I(age > median(age))=TRUE , female=1 4 4 0.7666 0.0192
0.95UCL
Prevo=low, I(age > median(age))=FALSE, female=0 5.82
Prevo=low, I(age > median(age))=FALSE, female=1 NA
Prevo=low, I(age > median(age))=TRUE , female=0 6.32
Prevo=low, I(age > median(age))=TRUE , female=1 NA
Prevo=high, I(age > median(age))=FALSE, female=0 NA
Prevo=high, I(age > median(age))=FALSE, female=1 NA
Prevo=high, I(age > median(age))=TRUE , female=0 NA
Prevo=high, I(age > median(age))=TRUE , female=1 NA
summary(f4.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + Prevo +
I(age > median(age)) + female, data = full_dat)
Prevo=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 4.0000 0.8000 0.0894 0.6426
upper 95% CI
0.9960
Prevo=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 2.000 0.600 0.219 0.293
upper 95% CI
1.000
Prevo=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 15.0000 3.0000 0.8333 0.0878 0.6778
upper 95% CI
1.0000
Prevo=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
Prevo=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 2.0000 8.0000 0.2000 0.1265 0.0579
upper 95% CI
0.6908
Prevo=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 1.000 0.750 0.217 0.426
upper 95% CI
1.000
Prevo=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 10.000 6.000 0.625 0.121 0.428
upper 95% CI
0.914
Prevo=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
summary(coxph(Surv(years, status_observed) ~ 1 + I(Prevo == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + I(Prevo ==
"high") + I(age > median(age)) + female, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
I(Prevo == "high")TRUE 0.268 1.307 0.254 1.05 0.2923
I(age > median(age))TRUE -0.257 0.774 0.255 -1.00 0.3150
female 0.911 2.488 0.342 2.67 0.0076 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Prevo == "high")TRUE 1.307 0.765 0.794 2.15
I(age > median(age))TRUE 0.774 1.293 0.469 1.28
female 2.488 0.402 1.273 4.86
Concordance= 0.626 (se = 0.032 )
Likelihood ratio test= 10.8 on 3 df, p=0.01
Wald test = 12.4 on 3 df, p=0.006
Score (logrank) test = 13.4 on 3 df, p=0.004
## create all high vs. all low status for microbiome
full_dat <- full_dat %>%
mutate(
micro_high = ifelse(Fuso == "high" & Strept == "high" & Campy == "high" & Prevo == "high", 1, 0),
micro_low = ifelse(Fuso == "low" & Strept == "low" & Campy == "low" & Prevo == "low", 1, 0)
)
table(full_dat$micro_high)
0 1
76 2
table(full_dat$micro_low)
0 1
65 13
So only 2 cases were high on all four microbiome. We will not be able to get much useful information from this. So, I only used the low micro flag.
f5 <- survfit(Surv(years, status_observed) ~ 1 + micro_low, data = full_dat)
ggsurvplot(
fit = f5,
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f5# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + micro_low,
data = full_dat)
n events median 0.95LCL 0.95UCL
micro_low=0 65 63 1.75 1.153 3.14
micro_low=1 13 13 2.91 0.882 NA
summary(f5, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + micro_low,
data = full_dat)
micro_low=0
time n.risk n.event survival std.err lower 95% CI
1.0000 41.0000 24.0000 0.6308 0.0599 0.5237
upper 95% CI
0.7597
micro_low=1
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 4.000 0.692 0.128 0.482
upper 95% CI
0.995
summary(coxph(Surv(years, status_observed) ~ micro_low, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ micro_low, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
micro_low -0.105 0.900 0.317 -0.33 0.74
exp(coef) exp(-coef) lower .95 upper .95
micro_low 0.9 1.11 0.483 1.68
Concordance= 0.506 (se = 0.025 )
Likelihood ratio test= 0.11 on 1 df, p=0.7
Wald test = 0.11 on 1 df, p=0.7
Score (logrank) test = 0.11 on 1 df, p=0.7
f5.1 <- survfit(Surv(years, status_observed) ~ 1 + micro_low + I(age > median(age) )+ female, data = full_dat)
f5.1# overall survival time
Call: survfit(formula = Surv(years, status_observed) ~ 1 + micro_low +
I(age > median(age)) + female, data = full_dat)
n events median 0.95LCL
micro_low=0, I(age > median(age))=FALSE, female=0 21 21 1.2101 0.6653
micro_low=0, I(age > median(age))=FALSE, female=1 8 8 1.5537 1.1444
micro_low=0, I(age > median(age))=TRUE , female=0 32 30 3.7700 1.5661
micro_low=0, I(age > median(age))=TRUE , female=1 4 4 0.7666 0.0192
micro_low=1, I(age > median(age))=FALSE, female=0 9 9 3.1239 2.2724
micro_low=1, I(age > median(age))=FALSE, female=1 1 1 0.0794 NA
micro_low=1, I(age > median(age))=TRUE , female=0 2 2 2.1643 1.1581
micro_low=1, I(age > median(age))=TRUE , female=1 1 1 0.0438 NA
0.95UCL
micro_low=0, I(age > median(age))=FALSE, female=0 4.52
micro_low=0, I(age > median(age))=FALSE, female=1 NA
micro_low=0, I(age > median(age))=TRUE , female=0 5.46
micro_low=0, I(age > median(age))=TRUE , female=1 NA
micro_low=1, I(age > median(age))=FALSE, female=0 NA
micro_low=1, I(age > median(age))=FALSE, female=1 NA
micro_low=1, I(age > median(age))=TRUE , female=0 NA
micro_low=1, I(age > median(age))=TRUE , female=1 NA
summary(f5.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = Surv(years, status_observed) ~ 1 + micro_low +
I(age > median(age)) + female, data = full_dat)
micro_low=0, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 10.000 0.524 0.109 0.348
upper 95% CI
0.788
micro_low=0, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 6.000 2.000 0.750 0.153 0.503
upper 95% CI
1.000
micro_low=0, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 23.0000 9.0000 0.7188 0.0795 0.5787
upper 95% CI
0.8927
micro_low=0, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
micro_low=1, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 7.000 2.000 0.778 0.139 0.549
upper 95% CI
1.000
micro_low=1, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
micro_low=1, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1 2 0 1 0 1
upper 95% CI
1
micro_low=1, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
summary(coxph(Surv(years, status_observed) ~ 1 + micro_low + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = Surv(years, status_observed) ~ 1 + micro_low +
I(age > median(age)) + female, data = full_dat)
n= 78, number of events= 76
coef exp(coef) se(coef) z Pr(>|z|)
micro_low -0.0751 0.9277 0.3575 -0.21 0.8337
I(age > median(age))TRUE -0.1975 0.8208 0.2678 -0.74 0.4608
female 0.9822 2.6702 0.3473 2.83 0.0047 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
micro_low 0.928 1.078 0.460 1.87
I(age > median(age))TRUE 0.821 1.218 0.486 1.39
female 2.670 0.374 1.352 5.27
Concordance= 0.6 (se = 0.032 )
Likelihood ratio test= 9.76 on 3 df, p=0.02
Wald test = 11.4 on 3 df, p=0.01
Score (logrank) test = 12.4 on 3 df, p=0.006
# Generate right-censored survival time variable
full_dat$years_5y <- as.numeric(full_dat$etime_5yr /365.25)
units(full_dat$years_5y) <- 'Year'
full_dat$S_5yr <- Surv(full_dat$years_5y , full_dat$status_observed_5yr)
# fit null model
f0 <- survfit(S_5yr ~ 1, data = full_dat)
ggsurvplot(
fit = f0,
xlab = "Years",
ylab = "Overall survival probability")
f0 # overall survival time
Call: survfit(formula = S_5yr ~ 1, data = full_dat)
n events median 0.95LCL 0.95UCL
78.00 56.00 1.82 1.21 3.14
summary(f0, times = 1) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1, data = full_dat)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
1 50 28 0.641 0.0543 0.543 0.757
summary(coxph(S_5yr ~ 1, data = full_dat))
Call: coxph(formula = S_5yr ~ 1, data = full_dat)
Null model
log likelihood= -216.5
n= 78
# getting the number at risk over years 0:10
summary(f0,times = 0:5, extend=T)
Call: survfit(formula = S_5yr ~ 1, data = full_dat)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 78 0 1.000 0.0000 1.000 1.000
1 50 28 0.641 0.0543 0.543 0.757
2 37 13 0.474 0.0565 0.376 0.599
3 32 5 0.410 0.0557 0.314 0.535
4 24 8 0.308 0.0523 0.221 0.429
5 0 2 0.282 0.0510 0.198 0.402
The baseline model above for the survival data shows that time to death after surgery is typically between 1.21 to 3.14 years (median=1.82 years). The one year after surgery survival probability is .61 (95% CI, [.54, .76]).
f1 <- survfit(S_5yr ~ 1 + Fuso, data = full_dat)
ggsurvplot(
fit = f1,
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Fuso, data = full_dat)
n events median 0.95LCL 0.95UCL
Fuso=low 48 31 2.09 1.240 NA
Fuso=high 30 25 1.61 0.898 3.15
summary(f1, times = 1) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Fuso, data = full_dat)
Fuso=low
time n.risk n.event survival std.err lower 95% CI
1.000 32.000 16.000 0.667 0.068 0.546
upper 95% CI
0.814
Fuso=high
time n.risk n.event survival std.err lower 95% CI
1.0000 18.0000 12.0000 0.6000 0.0894 0.4480
upper 95% CI
0.8036
coxph(S_5yr ~ 1 + I(Fuso == "high"), data = full_dat)
Call:
coxph(formula = S_5yr ~ 1 + I(Fuso == "high"), data = full_dat)
coef exp(coef) se(coef) z p
I(Fuso == "high")TRUE 0.4 1.4 0.3 1 0.2
Likelihood ratio test=2 on 1 df, p=0.2
n= 78, number of events= 56
# getting the number at risk over years 0:10
summary(f1, times = c(0:5), extend=T)
Call: survfit(formula = S_5yr ~ 1 + Fuso, data = full_dat)
Fuso=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 48 0 1.000 0.0000 1.000 1.000
1 32 16 0.667 0.0680 0.546 0.814
2 24 8 0.500 0.0722 0.377 0.663
3 21 3 0.437 0.0716 0.317 0.603
4 17 4 0.354 0.0690 0.242 0.519
5 0 0 0.354 0.0690 0.242 0.519
Fuso=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 30 0 1.000 0.0000 1.0000 1.000
1 18 12 0.600 0.0894 0.4480 0.804
2 13 5 0.433 0.0905 0.2878 0.652
3 11 2 0.367 0.0880 0.2291 0.587
4 7 4 0.233 0.0772 0.1220 0.446
5 0 2 0.167 0.0680 0.0749 0.371
# compare Fuso groups
survdiff(S_5yr ~ Fuso, data = full_dat)
Call:
survdiff(formula = S_5yr ~ Fuso, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Fuso=low 48 31 35.8 0.632 1.76
Fuso=high 30 25 20.2 1.116 1.76
Chisq= 1.8 on 1 degrees of freedom, p= 0.2
The model above for the survival decomposed by Fuso abundance strata (low versus high; i.e., Fuso abundance greater than 0, the median) shows that time to death after surgery is at least 1.24 years (median=2.09 years) for low abundance (note that the upper bound did not estimate indicating surival greater than 5 years). The one year after surgery survival probability is .67 (95% CI, [.55, .81]). For individuals with high Fuso abundance, the time to death after surgery is between 0.90 to 3.15 years (median=1.61 years) for high abundance. The one year after surgery survival probability is .60 (95% CI, [.45, .80]).
In the Cox Proportional Hazards model, high Fuso was not significantly associated with changes in the harzard (\(est=0.4, se = 0.3, p = .20, exp(est)=1.4)\)). The LRT comparing the model with Fuso to the baseline model was not significant (\(G^2(1)=0.2, p=0.60\)). Giving evidence that Fuso (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f1.1 <- survfit(S_5yr ~ 1 + Fuso + I(age > median(age) )+ female, data = full_dat)
f1.1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Fuso + I(age > median(age)) + female,
data = full_dat)
n events median 0.95LCL
Fuso=low, I(age > median(age))=FALSE, female=0 22 15 2.0890 1.2101
Fuso=low, I(age > median(age))=FALSE, female=1 5 5 1.4730 0.2683
Fuso=low, I(age > median(age))=TRUE , female=0 18 8 NA 1.5661
Fuso=low, I(age > median(age))=TRUE , female=1 3 3 0.0438 0.0192
Fuso=high, I(age > median(age))=FALSE, female=0 8 7 0.8501 0.5969
Fuso=high, I(age > median(age))=FALSE, female=1 4 4 1.4634 0.7173
Fuso=high, I(age > median(age))=TRUE , female=0 16 12 2.9432 0.8980
Fuso=high, I(age > median(age))=TRUE , female=1 2 2 1.2676 0.6817
0.95UCL
Fuso=low, I(age > median(age))=FALSE, female=0 NA
Fuso=low, I(age > median(age))=FALSE, female=1 NA
Fuso=low, I(age > median(age))=TRUE , female=0 NA
Fuso=low, I(age > median(age))=TRUE , female=1 NA
Fuso=high, I(age > median(age))=FALSE, female=0 NA
Fuso=high, I(age > median(age))=FALSE, female=1 NA
Fuso=high, I(age > median(age))=TRUE , female=0 NA
Fuso=high, I(age > median(age))=TRUE , female=1 NA
summary(f1.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Fuso + I(age > median(age)) + female,
data = full_dat)
Fuso=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 15.0000 7.0000 0.6818 0.0993 0.5125
upper 95% CI
0.9071
Fuso=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 2.000 0.600 0.219 0.293
upper 95% CI
1.000
Fuso=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 14.000 4.000 0.778 0.098 0.608
upper 95% CI
0.996
Fuso=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 3 0 NaN NA
upper 95% CI
NA
Fuso=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 5.000 0.375 0.171 0.153
upper 95% CI
0.917
Fuso=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 1.000 0.750 0.217 0.426
upper 95% CI
1.000
Fuso=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 5.000 0.688 0.116 0.494
upper 95% CI
0.957
Fuso=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.000 1.000 1.000 0.500 0.354 0.125
upper 95% CI
1.000
summary(coxph(S_5yr ~ 1 + I(Fuso == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + I(Fuso == "high") + I(age > median(age)) +
female, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Fuso == "high")TRUE 0.311 1.364 0.280 1.11 0.2662
I(age > median(age))TRUE -0.271 0.763 0.288 -0.94 0.3477
female 0.918 2.505 0.342 2.69 0.0072 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Fuso == "high")TRUE 1.364 0.733 0.789 2.36
I(age > median(age))TRUE 0.763 1.311 0.434 1.34
female 2.505 0.399 1.282 4.89
Concordance= 0.618 (se = 0.037 )
Likelihood ratio test= 11 on 3 df, p=0.01
Wald test = 12.6 on 3 df, p=0.006
Score (logrank) test = 13.6 on 3 df, p=0.003
f2 <- survfit(S_5yr ~ 1 + Strept, data = full_dat)
ggsurvplot(
fit = f2,
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f2# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Strept, data = full_dat)
n events median 0.95LCL 0.95UCL
Strept=low 35 24 1.78 0.882 NA
Strept=high 43 32 1.85 1.153 3.99
summary(f2, times = 1) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Strept, data = full_dat)
Strept=low
time n.risk n.event survival std.err lower 95% CI
1.0000 21.0000 14.0000 0.6000 0.0828 0.4578
upper 95% CI
0.7864
Strept=high
time n.risk n.event survival std.err lower 95% CI
1.0000 29.0000 14.0000 0.6744 0.0715 0.5479
upper 95% CI
0.8301
summary(coxph(S_5yr ~ I(Strept == "high"), data = full_dat))
Call:
coxph(formula = S_5yr ~ I(Strept == "high"), data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Strept == "high")TRUE 0.0466 1.0477 0.2702 0.17 0.86
exp(coef) exp(-coef) lower .95 upper .95
I(Strept == "high")TRUE 1.05 0.954 0.617 1.78
Concordance= 0.494 (se = 0.036 )
Likelihood ratio test= 0.03 on 1 df, p=0.9
Wald test = 0.03 on 1 df, p=0.9
Score (logrank) test = 0.03 on 1 df, p=0.9
# getting the number at risk over years 0:10
summary(f2, times = c(0:5), extend=T)
Call: survfit(formula = S_5yr ~ 1 + Strept, data = full_dat)
Strept=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 35 0 1.000 0.0000 1.000 1.000
1 21 14 0.600 0.0828 0.458 0.786
2 17 4 0.486 0.0845 0.345 0.683
3 15 2 0.429 0.0836 0.292 0.628
4 11 4 0.314 0.0785 0.193 0.513
5 0 0 0.314 0.0785 0.193 0.513
Strept=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 43 0 1.000 0.0000 1.000 1.000
1 29 14 0.674 0.0715 0.548 0.830
2 20 9 0.465 0.0761 0.338 0.641
3 17 3 0.395 0.0746 0.273 0.572
4 13 4 0.302 0.0700 0.192 0.476
5 0 2 0.256 0.0665 0.154 0.426
# compare groups
survdiff(S_5yr ~ Strept, data = full_dat)
Call:
survdiff(formula = S_5yr ~ Strept, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Strept=low 35 24 24.6 0.0164 0.0293
Strept=high 43 32 31.4 0.0128 0.0293
Chisq= 0 on 1 degrees of freedom, p= 0.9
The model above for the survival decomposed by Strepto abundance strata (low versus high; i.e., Strepto abundance greater than 0, the median) shows that time to death after surgery is between 0.88 to 5\(+\) years (median=1.78 years) for low abundance. The one year after surgery survival probability is .60 (95% CI, [.46, .79]). For individuals with high Strepto abundance, the time to death after surgery is between 1.15 to 3.99 years (median=1.85 years) for high abundance. The one year after surgery survival probability is .67 (95% CI, [.55, .83]).
The LRT comparing the model with Strepto to the baseline model was not significant (\(G^2(1)=0.3, p=0.60\)). Giving evidence that Strepto (high (greater than 21.6) versus low) did not significantly differentiate survival time in this sample.
f2.1 <- survfit(S_5yr ~ 1 + Strept + I(age > median(age) )+ female, data = full_dat)
f2.1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Strept + I(age > median(age)) +
female, data = full_dat)
n events median 0.95LCL
Strept=low, I(age > median(age))=FALSE, female=0 15 10 2.272 0.7228
Strept=low, I(age > median(age))=FALSE, female=1 4 4 0.493 0.0794
Strept=low, I(age > median(age))=TRUE , female=0 14 8 3.362 1.4401
Strept=low, I(age > median(age))=TRUE , female=1 2 2 0.363 0.0438
Strept=high, I(age > median(age))=FALSE, female=0 15 12 1.747 0.9199
Strept=high, I(age > median(age))=FALSE, female=1 5 5 1.634 1.4730
Strept=high, I(age > median(age))=TRUE , female=0 20 12 3.569 1.1526
Strept=high, I(age > median(age))=TRUE , female=1 3 3 0.851 0.0192
0.95UCL
Strept=low, I(age > median(age))=FALSE, female=0 NA
Strept=low, I(age > median(age))=FALSE, female=1 NA
Strept=low, I(age > median(age))=TRUE , female=0 NA
Strept=low, I(age > median(age))=TRUE , female=1 NA
Strept=high, I(age > median(age))=FALSE, female=0 NA
Strept=high, I(age > median(age))=FALSE, female=1 NA
Strept=high, I(age > median(age))=TRUE , female=0 NA
Strept=high, I(age > median(age))=TRUE , female=1 NA
summary(f2.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Strept + I(age > median(age)) +
female, data = full_dat)
Strept=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 6.000 0.600 0.126 0.397
upper 95% CI
0.907
Strept=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
Strept=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 3.000 0.786 0.110 0.598
upper 95% CI
1.000
Strept=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 2 0 NaN NA
upper 95% CI
NA
Strept=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 6.000 0.600 0.126 0.397
upper 95% CI
0.907
Strept=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 5 0 1 0 1
upper 95% CI
1
Strept=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 14.000 6.000 0.700 0.102 0.525
upper 95% CI
0.933
Strept=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 2.0000 0.3333 0.2722 0.0673
upper 95% CI
1.0000
summary(coxph(S_5yr ~ 1 + I(Strept == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + I(Strept == "high") + I(age > median(age)) +
female, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Strept == "high")TRUE -0.0687 0.9336 0.2772 -0.25 0.8042
I(age > median(age))TRUE -0.1996 0.8191 0.2829 -0.71 0.4804
female 1.0120 2.7512 0.3422 2.96 0.0031 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Strept == "high")TRUE 0.934 1.071 0.542 1.61
I(age > median(age))TRUE 0.819 1.221 0.470 1.43
female 2.751 0.363 1.407 5.38
Concordance= 0.596 (se = 0.038 )
Likelihood ratio test= 9.8 on 3 df, p=0.02
Wald test = 11.4 on 3 df, p=0.01
Score (logrank) test = 12.4 on 3 df, p=0.006
f3 <- survfit(S_5yr ~ 1 + Campy, data = full_dat)
ggsurvplot(
fit = survfit(
S_5yr ~ 1 + Campy,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f3# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Campy, data = full_dat)
n events median 0.95LCL 0.95UCL
Campy=low 63 44 1.91 1.440 3.17
Campy=high 15 12 1.14 0.723 NA
summary(f3, times = 1) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Campy, data = full_dat)
Campy=low
time n.risk n.event survival std.err lower 95% CI
1.0000 42.0000 21.0000 0.6667 0.0594 0.5599
upper 95% CI
0.7939
Campy=high
time n.risk n.event survival std.err lower 95% CI
1.000 8.000 7.000 0.533 0.129 0.332
upper 95% CI
0.856
summary(coxph(S_5yr ~ 1 + I(Campy == "high"), data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + I(Campy == "high"), data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Campy == "high")TRUE 0.284 1.328 0.327 0.87 0.38
exp(coef) exp(-coef) lower .95 upper .95
I(Campy == "high")TRUE 1.33 0.753 0.7 2.52
Concordance= 0.52 (se = 0.026 )
Likelihood ratio test= 0.72 on 1 df, p=0.4
Wald test = 0.76 on 1 df, p=0.4
Score (logrank) test = 0.76 on 1 df, p=0.4
# getting the number at risk over years 0:10
summary(f3, times = c(0:5), extend=T)
Call: survfit(formula = S_5yr ~ 1 + Campy, data = full_dat)
Campy=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 63 0 1.000 0.0000 1.000 1.000
1 42 21 0.667 0.0594 0.560 0.794
2 31 11 0.492 0.0630 0.383 0.632
3 27 4 0.429 0.0623 0.322 0.570
4 20 7 0.317 0.0586 0.221 0.456
5 0 1 0.302 0.0578 0.207 0.439
Campy=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 15 0 1.000 0.000 1.0000 1.000
1 8 7 0.533 0.129 0.3322 0.856
2 6 2 0.400 0.126 0.2152 0.743
3 5 1 0.333 0.122 0.1630 0.682
4 4 1 0.267 0.114 0.1152 0.617
5 0 1 0.200 0.103 0.0727 0.550
# compare groups
survdiff(S_5yr ~ Campy, data = full_dat)
Call:
survdiff(formula = S_5yr ~ Campy, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Campy=low 63 44 46.45 0.130 0.765
Campy=high 15 12 9.55 0.631 0.765
Chisq= 0.8 on 1 degrees of freedom, p= 0.4
The model above for the survival decomposed by Campy abundance strata (low versus high; i.e., Campy abundance greater than 0, the median) shows that time to death after surgery is between 1.44 to 3.17 years (median=1.91 years) for low abundance. The one year after surgery survival probability is .67 (95% CI, [.56, .79]). For individuals with high Campy abundance, the time to death after surgery is between 0.72 to 5.06 years (median=1.14 years) for high abundance. The one year after surgery survival probability is .53 (95% CI, [.33, .86]).
The LRT comparing the model with Campy to the baseline model was not significant (\(G^2(1)=0.8, p=0.40\)). Giving evidence that Campy (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f3.1 <- survfit(S_5yr ~ 1 + Campy + I(age > median(age) )+ female, data = full_dat)
f3.1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Campy + I(age > median(age)) +
female, data = full_dat)
n events median 0.95LCL
Campy=low, I(age > median(age))=FALSE, female=0 23 15 2.908 1.2101
Campy=low, I(age > median(age))=FALSE, female=1 8 8 1.554 0.7173
Campy=low, I(age > median(age))=TRUE , female=0 27 16 3.170 1.4401
Campy=low, I(age > median(age))=TRUE , female=1 5 5 0.682 0.0438
Campy=high, I(age > median(age))=FALSE, female=0 7 7 0.723 0.5969
Campy=high, I(age > median(age))=FALSE, female=1 1 1 1.144 NA
Campy=high, I(age > median(age))=TRUE , female=0 7 4 4.055 0.7748
0.95UCL
Campy=low, I(age > median(age))=FALSE, female=0 NA
Campy=low, I(age > median(age))=FALSE, female=1 NA
Campy=low, I(age > median(age))=TRUE , female=0 NA
Campy=low, I(age > median(age))=TRUE , female=1 NA
Campy=high, I(age > median(age))=FALSE, female=0 NA
Campy=high, I(age > median(age))=FALSE, female=1 NA
Campy=high, I(age > median(age))=TRUE , female=0 NA
summary(f3.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Campy + I(age > median(age)) +
female, data = full_dat)
Campy=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 7.0000 0.6957 0.0959 0.5309
upper 95% CI
0.9116
Campy=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 5.000 3.000 0.625 0.171 0.365
upper 95% CI
1.000
Campy=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 20.0000 7.0000 0.7407 0.0843 0.5926
upper 95% CI
0.9259
Campy=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 4.0000 0.2000 0.1789 0.0346
upper 95% CI
1.0000
Campy=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 2.0000 5.0000 0.2857 0.1707 0.0886
upper 95% CI
0.9218
Campy=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 1 0 1 0 1
upper 95% CI
1
Campy=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 5.000 2.000 0.714 0.171 0.447
upper 95% CI
1.000
summary(coxph(S_5yr ~ 1 + I(Campy == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + I(Campy == "high") + I(age > median(age)) +
female, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Campy == "high")TRUE 0.450 1.569 0.333 1.35 0.177
I(age > median(age))TRUE -0.243 0.784 0.286 -0.85 0.395
female 1.043 2.838 0.338 3.09 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Campy == "high")TRUE 1.569 0.637 0.816 3.02
I(age > median(age))TRUE 0.784 1.275 0.448 1.37
female 2.838 0.352 1.463 5.50
Concordance= 0.604 (se = 0.037 )
Likelihood ratio test= 11.4 on 3 df, p=0.01
Wald test = 13 on 3 df, p=0.005
Score (logrank) test = 14.1 on 3 df, p=0.003
f4 <- survfit(S_5yr ~ 1 + Prevo, data = full_dat)
ggsurvplot(
fit = survfit(
S_5yr ~ 1 + Prevo,
data = full_dat,robust = T
),
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f4# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Prevo, data = full_dat)
n events median 0.95LCL 0.95UCL
Prevo=low 44 29 3.016 1.747 NA
Prevo=high 34 27 0.949 0.695 2.83
summary(f4, times = 1) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Prevo, data = full_dat)
Prevo=low
time n.risk n.event survival std.err lower 95% CI
1.0000 34.0000 10.0000 0.7727 0.0632 0.6583
upper 95% CI
0.9070
Prevo=high
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 18.0000 0.4706 0.0856 0.3295
upper 95% CI
0.6722
summary(coxph(S_5yr ~ I(Prevo == "high"), data = full_dat))
Call:
coxph(formula = S_5yr ~ I(Prevo == "high"), data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Prevo == "high")TRUE 0.543 1.721 0.269 2.01 0.044 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Prevo == "high")TRUE 1.72 0.581 1.01 2.92
Concordance= 0.579 (se = 0.034 )
Likelihood ratio test= 3.99 on 1 df, p=0.05
Wald test = 4.06 on 1 df, p=0.04
Score (logrank) test = 4.16 on 1 df, p=0.04
# getting the number at risk over years 0:10
summary(f4, times = c(0:5), extend=T)
Call: survfit(formula = S_5yr ~ 1 + Prevo, data = full_dat)
Prevo=low
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 44 0 1.000 0.0000 1.000 1.000
1 34 10 0.773 0.0632 0.658 0.907
2 25 9 0.568 0.0747 0.439 0.735
3 22 3 0.500 0.0754 0.372 0.672
4 17 5 0.386 0.0734 0.266 0.561
5 0 2 0.341 0.0715 0.226 0.514
Prevo=high
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 34 0 1.000 0.0000 1.000 1.000
1 16 18 0.471 0.0856 0.329 0.672
2 12 4 0.353 0.0820 0.224 0.556
3 10 2 0.294 0.0781 0.175 0.495
4 7 3 0.206 0.0693 0.106 0.398
5 0 0 0.206 0.0693 0.106 0.398
# compare groups
survdiff(S_5yr ~ Prevo, data = full_dat)
Call:
survdiff(formula = S_5yr ~ Prevo, data = full_dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Prevo=low 44 29 36.2 1.44 4.15
Prevo=high 34 27 19.8 2.65 4.15
Chisq= 4.2 on 1 degrees of freedom, p= 0.04
The model above for the survival decomposed by Prevo abundance strata (low versus high; i.e., Prevo abundance greater than 1.2, the median) shows that time to death after surgery is between 1.75 to 5.06 years (median=3.02 years) for low abundance. The one year after surgery survival probability is .78 (95% CI, [.65, .91]). For individuals with high Prevo abundance, the time to death after surgery is between 0.70 to 2.83 years (median=0.95 years) for high abundance. The one year after surgery survival probability is .47 (95% CI, [.33, .67]).
The LRT comparing the model with Prevo to the baseline model was not significant (\(G^2(1)=2.0, p=0.20\)). Giving evidence that Prevo (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f4.1 <- survfit(S_5yr ~ 1 + Prevo + I(age > median(age) )+ female, data = full_dat)
f4.1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + Prevo + I(age > median(age)) +
female, data = full_dat)
n events median 0.95LCL
Prevo=low, I(age > median(age))=FALSE, female=0 20 13 3.0157 1.7467
Prevo=low, I(age > median(age))=FALSE, female=1 5 5 1.6345 0.7173
Prevo=low, I(age > median(age))=TRUE , female=0 18 10 4.0205 1.5661
Prevo=low, I(age > median(age))=TRUE , female=1 1 1 0.0438 NA
Prevo=high, I(age > median(age))=FALSE, female=0 10 9 0.6858 0.5695
Prevo=high, I(age > median(age))=FALSE, female=1 4 4 1.3087 0.2683
Prevo=high, I(age > median(age))=TRUE , female=0 16 10 2.9432 0.6954
Prevo=high, I(age > median(age))=TRUE , female=1 4 4 0.7666 0.0192
0.95UCL
Prevo=low, I(age > median(age))=FALSE, female=0 NA
Prevo=low, I(age > median(age))=FALSE, female=1 NA
Prevo=low, I(age > median(age))=TRUE , female=0 NA
Prevo=low, I(age > median(age))=TRUE , female=1 NA
Prevo=high, I(age > median(age))=FALSE, female=0 NA
Prevo=high, I(age > median(age))=FALSE, female=1 NA
Prevo=high, I(age > median(age))=TRUE , female=0 NA
Prevo=high, I(age > median(age))=TRUE , female=1 NA
summary(f4.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + Prevo + I(age > median(age)) +
female, data = full_dat)
Prevo=low, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 16.0000 4.0000 0.8000 0.0894 0.6426
upper 95% CI
0.9960
Prevo=low, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 2.000 0.600 0.219 0.293
upper 95% CI
1.000
Prevo=low, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 15.0000 3.0000 0.8333 0.0878 0.6778
upper 95% CI
1.0000
Prevo=low, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
Prevo=high, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 2.0000 8.0000 0.2000 0.1265 0.0579
upper 95% CI
0.6908
Prevo=high, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 3.000 1.000 0.750 0.217 0.426
upper 95% CI
1.000
Prevo=high, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.000 10.000 6.000 0.625 0.121 0.428
upper 95% CI
0.914
Prevo=high, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
summary(coxph(S_5yr ~ 1 + I(Prevo == "high") + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + I(Prevo == "high") + I(age > median(age)) +
female, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
I(Prevo == "high")TRUE 0.509 1.664 0.288 1.77 0.077 .
I(age > median(age))TRUE -0.350 0.704 0.293 -1.20 0.232
female 0.823 2.276 0.345 2.38 0.017 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
I(Prevo == "high")TRUE 1.664 0.601 0.947 2.93
I(age > median(age))TRUE 0.704 1.420 0.397 1.25
female 2.276 0.439 1.157 4.48
Concordance= 0.638 (se = 0.034 )
Likelihood ratio test= 12.8 on 3 df, p=0.005
Wald test = 14.4 on 3 df, p=0.002
Score (logrank) test = 15.5 on 3 df, p=0.001
f5 <- survfit(S_5yr ~ 1 + micro_low, data = full_dat)
ggsurvplot(
fit = f5,
conf.int = T,
xlab = "Years",
ylab = "Overall survival probability")
f5 # overall survival time
Call: survfit(formula = S_5yr ~ 1 + micro_low, data = full_dat)
n events median 0.95LCL 0.95UCL
micro_low=0 65 47 1.75 1.153 3.14
micro_low=1 13 9 2.91 0.882 NA
summary(f5 , times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + micro_low, data = full_dat)
micro_low=0
time n.risk n.event survival std.err lower 95% CI
1.0000 41.0000 24.0000 0.6308 0.0599 0.5237
upper 95% CI
0.7597
micro_low=1
time n.risk n.event survival std.err lower 95% CI
1.000 9.000 4.000 0.692 0.128 0.482
upper 95% CI
0.995
summary(coxph(S_5yr~ micro_low, data = full_dat))
Call:
coxph(formula = S_5yr ~ micro_low, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
micro_low -0.114 0.892 0.364 -0.31 0.75
exp(coef) exp(-coef) lower .95 upper .95
micro_low 0.892 1.12 0.437 1.82
Concordance= 0.509 (se = 0.027 )
Likelihood ratio test= 0.1 on 1 df, p=0.8
Wald test = 0.1 on 1 df, p=0.8
Score (logrank) test = 0.1 on 1 df, p=0.8
## get the risk events information
summary(f5 , times = 0:5, extend=T)
Call: survfit(formula = S_5yr ~ 1 + micro_low, data = full_dat)
micro_low=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 65 0 1.000 0.0000 1.000 1.000
1 41 24 0.631 0.0599 0.524 0.760
2 29 12 0.446 0.0617 0.340 0.585
3 26 3 0.400 0.0608 0.297 0.539
4 20 6 0.308 0.0572 0.214 0.443
5 0 2 0.277 0.0555 0.187 0.410
micro_low=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
0 13 0 1.000 0.000 1.000 1.000
1 9 4 0.692 0.128 0.482 0.995
2 8 1 0.615 0.135 0.400 0.946
3 6 2 0.462 0.138 0.257 0.830
4 4 2 0.308 0.128 0.136 0.695
5 0 0 0.308 0.128 0.136 0.695
The model above for the survival decomposed by whether all microbiome (prevo, fuso, campy, strepto) were classified as ‘’low’’ abundance compared to individuals with at least one high abundance level. For the group that is all low, the results shows that time to death after surgery is between 0.88 to 5\(+\) years (median=2.91 years). The one year after surgery survival probability is .69 (95% CI, [.48, .99]). For individuals with at least one high abundance, the time to death after surgery is between 1.15 to 3.14 years (median=1.75 years). The one year after surgery survival probability is .63 (95% CI, [.52, .76]).
In the Cox Proportional Hazards model, being low on all microbiome was not significantly associated with changes in the harzard (\(est=-0.11, se = 0.36, p = .75, exp(est)=0.89\)). The LRT comparing the model with low abundance on all microbiome to the baseline model was not significant (\(G^2(1)=0.1, p=0.80\)). Giving evidence that Prevo (presence (high) versus absence (low)) did not significantly differentiate survival time in this sample.
f5.1 <- survfit(S_5yr ~ 1 + micro_low + I(age > median(age) )+ female, data = full_dat)
f5.1# overall survival time
Call: survfit(formula = S_5yr ~ 1 + micro_low + I(age > median(age)) +
female, data = full_dat)
n events median 0.95LCL
micro_low=0, I(age > median(age))=FALSE, female=0 21 17 1.2101 0.6653
micro_low=0, I(age > median(age))=FALSE, female=1 8 8 1.5537 1.1444
micro_low=0, I(age > median(age))=TRUE , female=0 32 18 3.7700 1.5661
micro_low=0, I(age > median(age))=TRUE , female=1 4 4 0.7666 0.0192
micro_low=1, I(age > median(age))=FALSE, female=0 9 5 3.1239 2.2724
micro_low=1, I(age > median(age))=FALSE, female=1 1 1 0.0794 NA
micro_low=1, I(age > median(age))=TRUE , female=0 2 2 2.1643 1.1581
micro_low=1, I(age > median(age))=TRUE , female=1 1 1 0.0438 NA
0.95UCL
micro_low=0, I(age > median(age))=FALSE, female=0 4.52
micro_low=0, I(age > median(age))=FALSE, female=1 NA
micro_low=0, I(age > median(age))=TRUE , female=0 NA
micro_low=0, I(age > median(age))=TRUE , female=1 NA
micro_low=1, I(age > median(age))=FALSE, female=0 NA
micro_low=1, I(age > median(age))=FALSE, female=1 NA
micro_low=1, I(age > median(age))=TRUE , female=0 NA
micro_low=1, I(age > median(age))=TRUE , female=1 NA
summary(f5.1, times = 1, extend=T) # survival probability at 1 year
Call: survfit(formula = S_5yr ~ 1 + micro_low + I(age > median(age)) +
female, data = full_dat)
micro_low=0, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 11.000 10.000 0.524 0.109 0.348
upper 95% CI
0.788
micro_low=0, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1.000 6.000 2.000 0.750 0.153 0.503
upper 95% CI
1.000
micro_low=0, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1.0000 23.0000 9.0000 0.7188 0.0795 0.5787
upper 95% CI
0.8927
micro_low=0, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1.0000 1.0000 3.0000 0.2500 0.2165 0.0458
upper 95% CI
1.0000
micro_low=1, I(age > median(age))=FALSE, female=0
time n.risk n.event survival std.err lower 95% CI
1.000 7.000 2.000 0.778 0.139 0.549
upper 95% CI
1.000
micro_low=1, I(age > median(age))=FALSE, female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
micro_low=1, I(age > median(age))=TRUE , female=0
time n.risk n.event survival std.err lower 95% CI
1 2 0 1 0 1
upper 95% CI
1
micro_low=1, I(age > median(age))=TRUE , female=1
time n.risk n.event survival std.err lower 95% CI
1 0 1 0 NaN NA
upper 95% CI
NA
summary(coxph(S_5yr ~ 1 + micro_low + I(age > median(age)) + female, data = full_dat))
Call:
coxph(formula = S_5yr ~ 1 + micro_low + I(age > median(age)) +
female, data = full_dat)
n= 78, number of events= 56
coef exp(coef) se(coef) z Pr(>|z|)
micro_low -0.0273 0.9731 0.4019 -0.07 0.9459
I(age > median(age))TRUE -0.2130 0.8081 0.3030 -0.70 0.4821
female 0.9864 2.6814 0.3532 2.79 0.0052 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
micro_low 0.973 1.028 0.443 2.14
I(age > median(age))TRUE 0.808 1.237 0.446 1.46
female 2.681 0.373 1.342 5.36
Concordance= 0.608 (se = 0.035 )
Likelihood ratio test= 9.75 on 3 df, p=0.02
Wald test = 11.4 on 3 df, p=0.01
Score (logrank) test = 12.4 on 3 df, p=0.006
sessionInfo()
R version 4.0.5 (2021-03-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22000)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lubridate_1.7.10 survminer_0.4.9 ggpubr_0.4.0 rms_6.2-0
[5] SparseM_1.81 Hmisc_4.5-0 Formula_1.2-4 survival_3.2-10
[9] cowplot_1.1.1 dendextend_1.14.0 ggdendro_0.1.22 reshape2_1.4.4
[13] car_3.0-10 carData_3.0-4 gvlma_1.0.0.3 patchwork_1.1.1
[17] viridis_0.5.1 viridisLite_0.3.0 gridExtra_2.3 xtable_1.8-4
[21] kableExtra_1.3.4 MASS_7.3-53.1 data.table_1.14.0 readxl_1.3.1
[25] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.5 purrr_0.3.4
[29] readr_1.4.0 tidyr_1.1.3 tibble_3.1.0 ggplot2_3.3.5
[33] tidyverse_1.3.0 lmerTest_3.1-3 lme4_1.1-26 Matrix_1.3-2
[37] vegan_2.5-7 lattice_0.20-41 permute_0.9-5 phyloseq_1.34.0
[41] workflowr_1.6.2
loaded via a namespace (and not attached):
[1] utf8_1.1.4 tidyselect_1.1.0 htmlwidgets_1.5.3
[4] grid_4.0.5 munsell_0.5.0 codetools_0.2-18
[7] statmod_1.4.35 withr_2.4.1 colorspace_2.0-0
[10] Biobase_2.50.0 highr_0.8 knitr_1.31
[13] rstudioapi_0.13 stats4_4.0.5 ggsignif_0.6.1
[16] labeling_0.4.2 git2r_0.28.0 KMsurv_0.1-5
[19] farver_2.1.0 rhdf5_2.34.0 rprojroot_2.0.2
[22] vctrs_0.3.6 generics_0.1.0 TH.data_1.0-10
[25] xfun_0.21 R6_2.5.0 rhdf5filters_1.2.0
[28] assertthat_0.2.1 promises_1.2.0.1 scales_1.1.1
[31] multcomp_1.4-16 nnet_7.3-15 gtable_0.3.0
[34] conquer_1.0.2 sandwich_3.0-0 rlang_0.4.10
[37] MatrixModels_0.5-0 systemfonts_1.0.1 splines_4.0.5
[40] rstatix_0.7.0 broom_0.7.5 checkmate_2.0.0
[43] BiocManager_1.30.10 yaml_2.2.1 abind_1.4-5
[46] modelr_0.1.8 backports_1.2.1 httpuv_1.5.5
[49] tools_4.0.5 ellipsis_0.3.1 jquerylib_0.1.3
[52] biomformat_1.18.0 RColorBrewer_1.1-2 BiocGenerics_0.36.0
[55] Rcpp_1.0.7 plyr_1.8.6 base64enc_0.1-3
[58] progress_1.2.2 zlibbioc_1.36.0 ps_1.6.0
[61] prettyunits_1.1.1 rpart_4.1-15 S4Vectors_0.28.1
[64] zoo_1.8-9 haven_2.3.1 cluster_2.1.1
[67] fs_1.5.0 magrittr_2.0.1 openxlsx_4.2.3
[70] reprex_1.0.0 mvtnorm_1.1-1 whisker_0.4
[73] matrixStats_0.58.0 hms_1.0.0 evaluate_0.14
[76] rio_0.5.26 jpeg_0.1-8.1 IRanges_2.24.1
[79] compiler_4.0.5 crayon_1.4.1 minqa_1.2.4
[82] htmltools_0.5.1.1 mgcv_1.8-34 later_1.1.0.1
[85] DBI_1.1.1 dbplyr_2.1.0 boot_1.3-27
[88] ade4_1.7-16 cli_2.3.1 parallel_4.0.5
[91] igraph_1.2.6 km.ci_0.5-2 pkgconfig_2.0.3
[94] numDeriv_2016.8-1.1 foreign_0.8-81 xml2_1.3.2
[97] foreach_1.5.1 svglite_2.0.0 bslib_0.2.4
[100] multtest_2.46.0 webshot_0.5.2 XVector_0.30.0
[103] rvest_1.0.0 digest_0.6.27 Biostrings_2.58.0
[106] rmarkdown_2.7 cellranger_1.1.0 survMisc_0.5.5
[109] htmlTable_2.1.0 curl_4.3 quantreg_5.85
[112] nloptr_1.2.2.2 lifecycle_1.0.0 nlme_3.1-152
[115] jsonlite_1.7.2 Rhdf5lib_1.12.1 fansi_0.4.2
[118] pillar_1.5.1 httr_1.4.2 glue_1.4.2
[121] zip_2.1.1 png_0.1-7 iterators_1.0.13
[124] stringi_1.5.3 sass_0.3.1 polspline_1.1.19
[127] latticeExtra_0.6-29 ape_5.4-1