Load libraries
The following libraries are loaded as well as some custom R scripts.
#library(miceadds)
library(gdata)
library(readxl)
library(readr)
library(ggplot2)
library(ggthemes)
library(survival)
library(lubridate)
library(mice)
library(mitools)
library(twang)
library(dplyr)
library(tidyr)
library(magrittr)
library(knitr)
library(stringr)
library(rlist)
#library(grid)
library(scales)
library(broom)
library(pander)
source("utilities.R")
panderOptions("table.split.table", Inf)
Import, clean-up
The dataset is imported and tidied, interim datasets are removed.
source("data_tidying.R")
rm(raw, dif_segs, id_twostage)
Heat map of missing data patterns
The initial missing data analysis is shown via a heatmap and table of missing values. 
Table of missing data
| age |
3 |
1 |
| bloodloss |
71 |
25 |
| CEA |
86 |
30 |
| hlos |
40 |
14 |
| id_patients |
0 |
0 |
| isanatomic |
0 |
0 |
| isbilateral |
0 |
0 |
| isconversion |
0 |
0 |
| isextended |
0 |
0 |
| ismajor |
0 |
0 |
| lesioncount |
25 |
9 |
| lesionmaxdiameter |
25 |
9 |
| margin |
47 |
17 |
| primaryT |
70 |
25 |
| primaryN |
66 |
23 |
| primaryM |
63 |
22 |
| primarytumourgrade |
90 |
32 |
| primarytreatment |
52 |
18 |
| year_primary |
38 |
13 |
| sex |
0 |
0 |
| lap |
0 |
0 |
| cens_time |
0 |
0 |
| cens |
0 |
0 |
| index |
0 |
0 |
| difloc |
0 |
0 |
| time |
0 |
0 |
| rtime |
0 |
0 |
| rec |
0 |
0 |
| optime |
107 |
38 |
| era |
0 |
0 |
Multiple imputation using chained equations
The default of five imputations are obtained using ten iterations for each. The classification and regression tree method is used.
imp <- mice(as.data.frame(subnew), method="cart", maxit=10)
Estimate propensity scores for each imputed dataset
propscores <- vector("list")
for(i in 1:5) {
tmp <- ps(lap~age+sex+CEA+ismajor+difloc+isbilateral+lesionmaxdiameter+lesioncount+primarytumourgrade+primaryT+primaryN+year_primary+primarytreatment, estimand = "ATE", data=mice::complete(impmids,i), interaction.depth=2, n.trees = 10000, shrinkage=0.01, verbose=FALSE, bag.fraction = 0.3, stop.method = "ks.max")
propscores[[paste("psate",i,sep="")]] <- tmp
}
Generate stabilised weights for each imputed dataset. Stabilised weights are generated by dividing the weight calculated by inverse propensity score by the average weight for the sample. Additionally, generate an interim list of weights (impweights) for upcoming plot.
impdata <- vector("list")
impweights <- vector("list")
impdata[["psate0"]] <- as.data.frame(subnew)
impdata[["psate0"]]$stable.w <- 1
for (i in 1:5) {
name <- paste("psate",i,sep="")
impdata[[name]] <- mice::complete(impmids,i)
impdata[[name]]$stable.w <- stable.weights(propscores[[i]], "ks.max")
impweights[[name]] <- data.frame(weights=stable.weights(propscores[[i]], "ks.max"), treat=propscores[[i]]$treat, id=propscores[[i]]$data$id_patients)
}
Plots and balance computations for each imputed dataset

Generate an “imputationList”" object from the data
This will allow the use of mitools to combine the results of analyses from the survey and other packages and account for the imputations using Rubin’s rules. At this stage, we also construct some new compound variables - the number of laparoscopic procedures, calculation of the “gaptime” and a marker for death OR recurrence.
mit <- impdata[2:6]
for (i in 1:5) {
mit[[i]] %>% group_by(id_patients) %>%
mutate(ctime = ifelse(index<max(index),rtime,cens_time),
numlap = sum(lap),
cens_month = round(cens_time/365.25*12, digits = 1),
gaptime = rtime-time,
censrec = ifelse(index<max(index), 0, cens)) -> mit[[i]]
mit[[i]]$numlap <- car::Recode(mit[[i]]$numlap, '2:4=2')
mit[[i]]$index <- car::recode(mit[[i]]$index, '2:4=2')
mit[[i]] %>% mutate(mhlos = hlos-mean(hlos, na.rm=T)) -> mit[[i]]
}
midata <- imputationList(mit)
The same variables are added to the original (unimputed, unweighted) dataset.
Survey design
These design objects describe the data to the survey package so it can make appropriate adjustments to errors based on clustering and multiple imputation. It ensures that the standard error calculations are appropriate.
design.ate <- svydesign(ids = ~id_patients, weights=~stable.w, data=midata)
design.sing <- svydesign(ids = ~id_patients, weights=~stable.w, data=midata$imputations$psate1)
design.unw <- svydesign(ids = ~id_patients, data=midata)
Demographics
Code for demographics generation - makes extensive use of dplyr.
#Summarise distinct patient numbers and total procedure numbers by surgical approach
ptnumbers <-
new %>%
group_by(lap) %>%
summarise(
patients = n_distinct(id_patients),
procedures = n())
#Number of patients with single procedures
singlepts <-
new %>%
group_by(id_patients) %>%
filter(n()==1) %>%
nrow()
#Multiple procedures
multiplepts <-
new %>%
group_by(id_patients) %>%
filter(n()>1) %>%
tally() %>%
nrow()
procnum <-
matrix(c("Single procedures ", singlepts, "Multiple procedures ",
multiplepts), nrow = 2, byrow = T)
colnames(procnum) <- c("Group", "n")
#Procedures and conversions
proc_list <-
new %>%
group_by(lap, surgicalapproach) %>%
tally()
proc_list <- proc_list[,2:3]
#Procedure type ---------------------
#Hepatectomies
majorhep <-
new %>%
filter(grepl("hepatectomy", liverprocs)) %>%
mutate(
side= ifelse(grepl("left", liverprocs),
"left hepatectomy",
"right hepatectomy")) %>%
group_by(lap, side) %>%
tally()
majorhep$lap <- car::recode(majorhep$lap, "1='Lap'; 0='Open'", as.factor.result=T)
#Left lateral
lls <-
new %>%
filter(grepl("left lateral", liverprocs),
!grepl("hepatectomy", liverprocs)) %>%
group_by(lap) %>%
tally()
lls$lap <- car::recode(lls$lap, "1='Lap'; 0='Open'", as.factor.result=T)
#Segmentectomy/biseg
segment <- new %>%
filter(grepl("segment", liverprocs),
!grepl("hepatectomy", liverprocs),
!grepl("left lateral", liverprocs)) %>%
group_by(lap) %>%
tally()
segment$lap <- car::recode(segment$lap, "1='Lap'; 0='Open'", as.factor.result=T)
#Tumorectomy (only)
tumorectomy <-
new %>%
filter(!grepl("hepatectomy", liverprocs), !grepl("left lateral", liverprocs),
!grepl("segmentectomy", liverprocs)) %>%
group_by(lap) %>%
tally()
tumorectomy$lap <- car::recode(tumorectomy$lap, "1='Lap'; 0='Open'", as.factor.result=T)
Demographics Output
Patients and Procedures
| 0 |
122 |
138 |
| 1 |
140 |
146 |
Multiple procedures
| Single procedures |
222 |
| Multiple procedures |
27 |
Surgical approach
| open |
138 |
| hand assist laparoscopic |
2 |
| hybrid |
10 |
| laparoscopic |
119 |
| laparoscopic converted to hand assist |
1 |
| laparoscopic converted to hybrid |
1 |
| laparoscopic converted to open |
13 |
Major hepatectomy
| Open |
left hepatectomy |
25 |
| Open |
right hepatectomy |
70 |
| Lap |
left hepatectomy |
7 |
| Lap |
right hepatectomy |
32 |
Left lateral sectionectomy
| Open |
12 |
| Lap |
46 |
Segmentectomy/Bisegmentectomy
| Open |
23 |
| Lap |
35 |
Tumorectomy
| Open |
8 |
| Lap |
26 |
Changes in operative approach over time.
#Year-by-year histogram
new$year <- year(new$opdate)
new$year <- as.factor(new$year)
new %>% group_by(ismajor,lap,year) %>% tally() -> testgraph
testgraph %>% filter(as.character(year)>"1999") -> testgraph
ggplot(testgraph, aes(x=year, y=n, fill=interaction(lap,ismajor))) + geom_histogram(stat="identity") + scale_fill_manual(labels=c("open minor", "lap minor", "open major", "lap major"), name="Procedure type", values = c("royalblue1", "blue4","lightgreen", "green4")) + theme_gdocs() + ggtitle("Operative approach: year-by-year change")

Code for generation of weighted statistics
#Setup for unw vs wtd periop outcomes - Bloodloss, LOS, operative time and margin (posmarg separate)
#weighted, pooled(MI) data
postopwtd <- MIcombine(with(design.ate, svyby(~bloodloss+hlos+optime+margin, ~lap,svyquantile, quantiles=0.5, ci=TRUE, vartype = "var")))
#unweighted, pooled data
postopunw <- MIcombine(with(design.unw, svyby(~bloodloss+hlos+optime+margin, ~lap,svyquantile, quantiles=0.5, ci=TRUE, vartype = "var")))
#----------------------
#Positive margin - get proportions, then compare props and extract P-value
#Weighted
posmargwtd <- MIcombine(with(design.ate, svyby(~posmarg, ~lap, svyciprop, vartype="var")))
#Rubins rule - manual calculation of the Chi-squared statistic for comparison of proportions
X2wtd <- sum(mapply(function(x) x$statistic, lapply(with(design.ate, svytable(~lap + posmarg, Ntotal = 284, round = T)), prop.test)))/5
#Unweighted
posmargunw <- MIcombine(with(design.unw, svyby(~posmarg, ~lap, svyciprop, vartype="var")))
#Rubins rule
X2unw <- sum(mapply(function(x) x$statistic, lapply(with(design.unw, svytable(~lap + posmarg, Ntotal = 284, round = T)), prop.test)))/5
Results of Weighted univariate analysis
| 0:bloodloss |
580 |
72.46 |
428.4 |
731.6 |
51 % |
| 1:bloodloss |
300 |
44.7 |
212.4 |
387.6 |
0 % |
| 0:hlos |
7.8 |
0.5529 |
6.471 |
9.129 |
83 % |
| 1:hlos |
5 |
0.3784 |
4.258 |
5.742 |
0 % |
| 0:optime |
169.9 |
18.98 |
129.2 |
210.6 |
59 % |
| 1:optime |
131.2 |
11.63 |
106.3 |
156 |
58 % |
| 0:margin |
4.8 |
1.142 |
2.538 |
7.062 |
20 % |
| 1:margin |
5.2 |
1.192 |
2.843 |
7.557 |
18 % |
Results of Unweighted univariate analysis
| 0:bloodloss |
580 |
63.01 |
441.2 |
718.8 |
66 % |
| 1:bloodloss |
200 |
25.51 |
150 |
250 |
0 % |
| 0:hlos |
8 |
0.2551 |
7.5 |
8.5 |
0 % |
| 1:hlos |
5 |
0.2562 |
4.498 |
5.502 |
0 % |
| 0:optime |
182 |
16.83 |
146.2 |
217.8 |
56 % |
| 1:optime |
120 |
5.343 |
109.5 |
130.5 |
0 % |
| 0:margin |
4.2 |
0.8886 |
2.408 |
5.992 |
33 % |
| 1:margin |
5 |
0.7667 |
3.497 |
6.503 |
0 % |
Results of Weighted margin status
p = 0.035
| 0 |
0.1796 |
0.04688 |
0.08143 |
0.2777 |
51 % |
| 1 |
0.08852 |
0.03012 |
0.02693 |
0.1501 |
41 % |
Results of Unweighted margin status
p = 0.032
| 0 |
0.1899 |
0.03665 |
0.117 |
0.2628 |
24 % |
| 1 |
0.09452 |
0.02932 |
0.03536 |
0.1537 |
34 % |
Kaplan-Meier survival estimates and follow-up
[1] “Median follow-up (reverse KM method): 33.37 months” Median OS (cohort): 111.5 months
| lap=0 |
101.3 |
58.2 |
NA |
| lap=1 |
118.3 |
50.1 |
NA |
Combination of Chi Square Statistics for Multiply Imputed Data
Using 5 Imputed Data Sets
F(1,10016.78)=0.067 p=0.79525
Chi Square Approximation Chi2(1)=0.067 p=0.79525
| 0.06734 |
0.7953 |
1 |
10017 |
0.06734 |
0.7952 |
[1] “Open 5yr OS: 0.663 (95% CI 0.521-0.806)” [1] “Laparoscopic 5yr OS: 0.599 (95% CI 0.482-0.716)”
Kaplan-Meier RFS
| lap=0, strata(index)=index=1 |
42.2 |
22.7 |
NA |
| lap=0, strata(index)=index=2 |
21.2 |
13 |
NA |
| lap=1, strata(index)=index=1 |
32.3 |
25.2 |
58.6 |
| lap=1, strata(index)=index=2 |
32.9 |
24.4 |
NA |
Combination of Chi Square Statistics for Multiply Imputed Data
Using 5 Imputed Data Sets
F(1,40816.53)=0.04 p=0.84238
Chi Square Approximation Chi2(1)=0.04 p=0.84238
| 0.03954 |
0.8424 |
1 |
40817 |
0.03954 |
0.8424 |
Open 5yr OS: 0.465 (95% CI 0.331-0.599)Laparoscopic 5yr OS: 0.378 (95% CI 0.262-0.494)
lap=1 32.3 25.2 58.6
Combination of Chi Square Statistics for Multiply Imputed Data
Using 5 Imputed Data Sets
F(1,40369.41)=0.046 p=0.83061
Chi Square Approximation Chi2(1)=0.046 p=0.83061
| 0.04576 |
0.8306 |
1 |
40369 |
0.04576 |
0.8306 |
| lap=0 |
21.2 |
13 |
NA |
| lap=1 |
32.9 |
24.4 |
NA |
Combination of Chi Square Statistics for Multiply Imputed Data
Using 5 Imputed Data Sets
F(1,24167.28)=1.189 p=0.27558
Chi Square Approximation Chi2(1)=1.189 p=0.27557
| 1.189 |
0.2756 |
1 |
24167 |
1.189 |
0.2756 |
Weighted regression
pander(spm(doublerobust.full)) #full os doublerobust
| lap |
0.1512 |
0.3298 |
0.4586 |
619.5 |
0.6467 |
-0.4965 |
0.7989 |
NA |
0.08328 |
0.08033 |
| ismajor |
-0.2032 |
0.368 |
-0.5523 |
281.3 |
0.5812 |
-0.9276 |
0.5211 |
NA |
0.1254 |
0.1192 |
| isbilateral |
-0.3589 |
0.7891 |
-0.4549 |
56.95 |
0.6509 |
-1.939 |
1.221 |
NA |
0.2895 |
0.265 |
| primaryN2 |
0.02581 |
0.4992 |
0.05171 |
28.9 |
0.9591 |
-0.9953 |
1.047 |
NA |
0.4114 |
0.372 |
| primaryN3 |
0.2483 |
0.4527 |
0.5485 |
65.45 |
0.5852 |
-0.6556 |
1.152 |
NA |
0.2692 |
0.2472 |
| primaryN4 |
-0.4366 |
0.8557 |
-0.5102 |
16.74 |
0.6166 |
-2.244 |
1.371 |
NA |
0.5406 |
0.4888 |
| primaryT2 |
0.7625 |
0.5542 |
1.376 |
89.21 |
0.1723 |
-0.3386 |
1.864 |
NA |
0.2288 |
0.2117 |
| primaryT3 |
1.757 |
0.5742 |
3.06 |
275.2 |
0.002431 |
0.6268 |
2.888 |
NA |
0.1269 |
0.1205 |
| lesioncount |
0.2215 |
0.2125 |
1.042 |
68.66 |
0.3009 |
-0.2025 |
0.6454 |
NA |
0.2625 |
0.2414 |
pander(spm(doublerobust.final)) #final os double robust
| lap |
0.1304 |
0.3113 |
0.4189 |
4613 |
0.6753 |
-0.4798 |
0.7406 |
NA |
0.0298 |
0.02938 |
pander(spm(rec_double.full)) #full Rfs doublerobust
| lap |
0.04581 |
0.2205 |
0.2078 |
3455 |
0.8354 |
-0.3865 |
0.4782 |
NA |
0.03452 |
0.03396 |
| ismajor |
0.03514 |
0.2241 |
0.1568 |
803.6 |
0.8755 |
-0.4048 |
0.475 |
NA |
0.07282 |
0.07052 |
| isbilateral |
0.4109 |
0.3869 |
1.062 |
313.5 |
0.2891 |
-0.3505 |
1.172 |
NA |
0.1185 |
0.1129 |
| primaryN2 |
0.1182 |
0.3011 |
0.3927 |
50.57 |
0.6962 |
-0.4863 |
0.7228 |
NA |
0.3081 |
0.2812 |
| primaryN3 |
0.2834 |
0.362 |
0.7829 |
36.34 |
0.4388 |
-0.4506 |
1.017 |
NA |
0.3657 |
0.3318 |
| primaryN4 |
0.1061 |
0.5887 |
0.1802 |
28.42 |
0.8582 |
-1.099 |
1.311 |
NA |
0.415 |
0.3752 |
| lesioncount |
0.06626 |
0.1028 |
0.6443 |
420.5 |
0.5197 |
-0.1359 |
0.2684 |
NA |
0.1018 |
0.09751 |
| primaryT2 |
0.3426 |
0.3321 |
1.032 |
79.72 |
0.3053 |
-0.3182 |
1.003 |
NA |
0.2427 |
0.224 |
| primaryT3 |
0.7932 |
0.3524 |
2.251 |
280.1 |
0.02517 |
0.09951 |
1.487 |
NA |
0.1257 |
0.1195 |
pander(spm(rec_double.final)) #final rfs double robust
| lap |
-0.03262 |
0.209 |
-0.1561 |
32169 |
0.876 |
-0.4423 |
0.377 |
NA |
0.01103 |
0.01097 |
pander(spm(mvr.os)) #full os multivar
| lap |
0.3846 |
0.3529 |
1.09 |
120.6 |
0.278 |
-0.3141 |
1.083 |
NA |
0.1953 |
0.1821 |
| ismajor |
-0.3395 |
0.444 |
-0.7648 |
51.68 |
0.4479 |
-1.231 |
0.5515 |
NA |
0.3046 |
0.2782 |
| isbilateral |
-0.3332 |
0.8118 |
-0.4104 |
69.17 |
0.6828 |
-1.953 |
1.286 |
NA |
0.2615 |
0.2405 |
| primaryN2 |
0.1717 |
0.5185 |
0.3312 |
22.52 |
0.7436 |
-0.9022 |
1.246 |
NA |
0.4668 |
0.4214 |
| primaryN3 |
0.3676 |
0.4794 |
0.7668 |
31.38 |
0.4489 |
-0.6096 |
1.345 |
NA |
0.3944 |
0.357 |
| primaryN4 |
-0.2597 |
0.8469 |
-0.3066 |
15.25 |
0.7633 |
-2.062 |
1.543 |
NA |
0.5656 |
0.5122 |
| lesioncount |
0.2407 |
0.2236 |
1.076 |
62.56 |
0.2859 |
-0.2063 |
0.6877 |
NA |
0.2756 |
0.2529 |
| primaryT2 |
0.7182 |
0.5825 |
1.233 |
69.74 |
0.2218 |
-0.4437 |
1.88 |
NA |
0.2604 |
0.2395 |
| primaryT3 |
1.664 |
0.6105 |
2.725 |
131.7 |
0.007303 |
0.456 |
2.871 |
NA |
0.1865 |
0.1743 |
| bloodloss |
-1.435e-05 |
0.0005085 |
-0.02822 |
52.14 |
0.9776 |
-0.001035 |
0.001006 |
NA |
0.3032 |
0.277 |
| mhlos |
-0.06835 |
0.09213 |
-0.7419 |
11.56 |
0.473 |
-0.2699 |
0.1332 |
NA |
0.6447 |
0.5881 |
| optime |
0.002552 |
0.002666 |
0.9574 |
24.79 |
0.3476 |
-0.00294 |
0.008044 |
NA |
0.4447 |
0.4017 |
| posmarg2 |
1.001 |
0.3928 |
2.548 |
47.33 |
0.01415 |
0.2107 |
1.791 |
NA |
0.3189 |
0.2907 |
pander(mvr.os.raw) #full rfs multivar
Fitting Proportional Hazards Regression Model: Surv(time, ctime, censrec) ~ lap + cluster(id_patients) + ismajor + isbilateral + primaryN + lesioncount + primaryT + bloodloss + mhlos + optime + posmarg
| lap |
1.198 |
3.313 |
0.868 |
1.38 |
0.2 |
| ismajor |
-0.8508 |
0.4271 |
1.421 |
-0.5988 |
0.5 |
| isbilateral |
-1.302 |
0.272 |
4.677 |
-0.2783 |
0.8 |
| primaryN1 |
0.5226 |
1.686 |
0.9429 |
0.5542 |
0.6 |
| primaryN2 |
1.634 |
5.125 |
0.949 |
1.722 |
0.09 |
| primaryN3 |
-0.1627 |
0.8498 |
0.6924 |
-0.235 |
0.8 |
| lesioncount |
0.2604 |
1.297 |
1.059 |
0.246 |
0.8 |
| primaryT3 |
0.4009 |
1.493 |
0.9847 |
0.4071 |
0.7 |
| primaryT4 |
2.26 |
9.583 |
1.044 |
2.164 |
0.03 |
| bloodloss |
-1.697e-05 |
1 |
0.0007696 |
-0.02205 |
1 |
| mhlos |
0.1751 |
1.191 |
0.08436 |
2.075 |
0.04 |
| optime |
-0.009029 |
0.991 |
0.005808 |
-1.555 |
0.1 |
| posmarg1 |
2.436 |
11.43 |
0.8564 |
2.844 |
0.004 |
Likelihood ratio test=22.75 on 13 df, p=0.0447748 n= 106, number of events= 17 (178 observations deleted due to missingness)
pander(spm(mvr.rfs))
| lap |
0.1169 |
0.2351 |
0.4974 |
5021 |
0.6189 |
-0.344 |
0.5778 |
NA |
0.02854 |
0.02815 |
| ismajor |
-0.03091 |
0.2744 |
-0.1126 |
121.5 |
0.9105 |
-0.5742 |
0.5124 |
NA |
0.1946 |
0.1815 |
| isbilateral |
0.4257 |
0.3673 |
1.159 |
993.6 |
0.2467 |
-0.2951 |
1.147 |
NA |
0.0653 |
0.06342 |
| primaryN2 |
0.1733 |
0.3095 |
0.5598 |
72.18 |
0.5774 |
-0.4438 |
0.7903 |
NA |
0.2557 |
0.2354 |
| primaryN3 |
0.3071 |
0.3815 |
0.805 |
27.09 |
0.4278 |
-0.4756 |
1.09 |
NA |
0.4252 |
0.3843 |
| primaryN4 |
0.1313 |
0.543 |
0.2419 |
35.83 |
0.8103 |
-0.97 |
1.233 |
NA |
0.3684 |
0.3341 |
| lesioncount |
0.06948 |
0.09343 |
0.7437 |
344.6 |
0.4576 |
-0.1143 |
0.2532 |
NA |
0.1128 |
0.1077 |
| primaryT2 |
0.3437 |
0.3326 |
1.033 |
76.24 |
0.3048 |
-0.3188 |
1.006 |
NA |
0.2485 |
0.229 |
| primaryT3 |
0.7699 |
0.3965 |
1.942 |
68.64 |
0.05625 |
-0.02109 |
1.561 |
NA |
0.2626 |
0.2414 |
| bloodloss |
-8.427e-05 |
0.0003267 |
-0.2579 |
62.9 |
0.7973 |
-0.0007372 |
0.0005687 |
NA |
0.2749 |
0.2522 |
| mhlos |
0.06212 |
0.0445 |
1.396 |
141.8 |
0.1649 |
-0.02584 |
0.1501 |
NA |
0.1794 |
0.168 |
| optime |
0.0007663 |
0.001784 |
0.4295 |
597.8 |
0.6677 |
-0.002737 |
0.00427 |
NA |
0.08483 |
0.08177 |
| posmarg2 |
0.6043 |
0.3123 |
1.935 |
39.86 |
0.06006 |
-0.02683 |
1.236 |
NA |
0.3487 |
0.3168 |
pander(mvr.rfs.raw)
Fitting Proportional Hazards Regression Model: Surv(gaptime, (rec == 1 | censrec == 1)) ~ lap + cluster(id_patients) + ismajor + isbilateral + primaryN + lesioncount + primaryT + bloodloss + mhlos + optime + strata(index) + posmarg
| lap |
-0.2621 |
0.7695 |
0.4181 |
-0.6268 |
0.5 |
| ismajor |
-0.2572 |
0.7732 |
0.414 |
-0.6212 |
0.5 |
| isbilateral |
-0.4267 |
0.6526 |
0.4327 |
-0.9861 |
0.3 |
| primaryN1 |
0.7076 |
2.029 |
0.4145 |
1.707 |
0.09 |
| primaryN2 |
0.1123 |
1.119 |
0.6905 |
0.1626 |
0.9 |
| primaryN3 |
0.03162 |
1.032 |
0.7293 |
0.04335 |
1 |
| lesioncount |
0.178 |
1.195 |
0.1226 |
1.453 |
0.1 |
| primaryT3 |
0.07271 |
1.075 |
0.4329 |
0.168 |
0.9 |
| primaryT4 |
0.7002 |
2.014 |
0.4797 |
1.46 |
0.1 |
| bloodloss |
-0.00019 |
0.9998 |
0.0004663 |
-0.4074 |
0.7 |
| mhlos |
0.02749 |
1.028 |
0.03879 |
0.7086 |
0.5 |
| optime |
-0.001182 |
0.9988 |
0.002798 |
-0.4225 |
0.7 |
| posmarg1 |
1.111 |
3.037 |
0.5621 |
1.976 |
0.05 |
Likelihood ratio test=12.12 on 13 df, p=0.5178495 n= 106, number of events= 45 (178 observations deleted due to missingness)
pander(spm(os_final)) #final os multivar
| primaryT2 |
0.9008 |
0.5469 |
1.647 |
42.59 |
0.1069 |
-0.2025 |
2.004 |
NA |
0.3369 |
0.3064 |
| primaryT3 |
1.705 |
0.574 |
2.97 |
51.74 |
0.004508 |
0.5528 |
2.857 |
NA |
0.3044 |
0.278 |
| posmarg2 |
0.8393 |
0.341 |
2.461 |
58.81 |
0.01679 |
0.1569 |
1.522 |
NA |
0.2847 |
0.2608 |
| lap |
0.02384 |
0.296 |
0.08053 |
2198 |
0.9358 |
-0.5566 |
0.6043 |
NA |
0.04348 |
0.04261 |
| lesioncount |
0.1797 |
0.09706 |
1.851 |
177.6 |
0.06582 |
-0.01188 |
0.3712 |
NA |
0.1595 |
0.1501 |
pander(spm(rfs_final)) #final rfs multivar
| primaryT2 |
0.3955 |
0.3563 |
1.11 |
57.51 |
0.2716 |
-0.3178 |
1.109 |
NA |
0.2881 |
0.2637 |
| primaryT3 |
0.8582 |
0.3987 |
2.152 |
51.84 |
0.03604 |
0.05806 |
1.658 |
NA |
0.3041 |
0.2778 |
| posmarg2 |
0.5568 |
0.3399 |
1.638 |
24.56 |
0.1142 |
-0.1439 |
1.258 |
NA |
0.4469 |
0.4036 |
| mhlos |
0.04734 |
0.04543 |
1.042 |
152.4 |
0.299 |
-0.04242 |
0.1371 |
NA |
0.1728 |
0.162 |
| lap |
-0.01222 |
0.2158 |
-0.05665 |
39503 |
0.9548 |
-0.4352 |
0.4107 |
NA |
0.00991 |
0.00986 |
Regression output

