library(MedicalRiskPredictionModels)
prepareExamples()
# Chunk1
foreach(s=c(9,4991,175)) %do% { # loop the value s through
# three different start values
# for the random number generator
set.seed(s)
N <- NROW(oc.cc) # total sample size
M <- round(0.632*NROW(oc.cc)) # learning sample size
oc.cc$inbag <- 1:N%in%sample(1:N,replace=FALSE,size=M) # random split variable (TRUE for learning, FALSE for validation)
train <- oc.cc[inbag==TRUE,]
test <- oc.cc[inbag==FALSE,]
# fit models in learning set
fit1 <- cph(Surv(survtime,survstatus)~rcs(age,3)+tumorthickness+gender+tobacco+deep.invasion+site+race+x.posnodes+tumormaxdimension+vascular.invasion,
data=train, x=TRUE, y=TRUE, surv=TRUE)
# seed for random forest
set.seed(1972)
fit2 <- rfsrc(Surv(survtime,survstatus)~ age+tumorthickness+gender+tobacco+deep.invasion+site+race+x.posnodes+tumormaxdimension+vascular.invasion,data=train)
x <- Score(list("Conventional"=fit1, # trained Cox regression
"Experimental"=fit2), # trained Random forest
data=test, # test set
formula=Surv(survtime,survstatus)~1,
times=60, # prediction time horizon
)$Brier$contrast[3]$delta # difference in Brier score
}
# Chunk2 (takes a while to run, use multiple cores to speed up)
fit1 <- cph(Surv(survtime,survstatus)~rcs(age,3)+tumorthickness+gender+tobacco+deep.invasion+site+race+x.posnodes+tumormaxdimension+vascular.invasion,
data=oc.cc, x=TRUE, y=TRUE, surv=TRUE)
set.seed(1972)
fit2 <- rfsrc(Surv(survtime,survstatus)~ age+tumorthickness+gender+tobacco+deep.invasion+site+race+x.posnodes+tumormaxdimension+vascular.invasion,data=oc.cc)
x <- Score(list("Conventional"=fit1,"Experimental"=fit2),
data=oc.cc,
formula=Surv(survtime,survstatus)~1,
times=60,
split.method="cv10", # 10-fold cross-validation
B=10, # repeat 10-fold 10 times
seed=9, # fix randomness of the splits
se.fit=0, # no standard errors
ncpus=2, # number of cores on computer
summary="IPA")
summary(x,what="score")[[1]]
# Chunk3
set.seed(71)
B=10000
subject=8
sample.size=399
mean(sapply(1:B,function(b){
subject%in%sample(1:sample.size,replace=TRUE)
}))
# Chunk4
set.seed(71)
B=10000
sample.size=399
mean(sapply(1:B,function(b){
length(unique(sample(1:sample.size,replace=TRUE)))
}))
# Chunk5
fit1 <- CSC(list(Hist(asprogtime,asprog)~age+psa+ct1+diaggs+ppb5,Hist(asprogtime,asprog)~age),data=astrain,cause="progression")
fit2 <- CSC(list(Hist(asprogtime,asprog)~age+psa+ct1+diaggs+ppb5+erg.status,Hist(asprogtime,asprog)~age+erg.status),data=astrain,cause="progression")
x <- Score(list("Conventional"=fit1,"New marker"=fit2),
formula=Hist(asprogtime,asprog)~1,
cause="progression",
seed=7, # fix randomness of the split
split.method="bootcv",# bootstrap cross-validation
B=200, # number of subsample bootstraps
M=0.632*NROW(as), # learning sample size
data=as,
times=3,
summary="risks")
summary(x,what="score")
# Chunk6
fit1 <- lrm(ohss~ant.foll+cyclelen+smoking+age,data=ivftrain)
fit2 <- lrm(ohss~rcs(ant.foll,3)*smoking+cyclelen+age+fsh+bmi+ovolume,data=ivftrain,penalty=10)
x <- Score(list("Conventional"=fit1,"Experimental"=fit2),
data=ivftest, formula=ohss~1,
split.method="loob", # leave-one-out bootstrap
seed=8, # fix randomness of the split
B=200, # number of regular bootstrap sets
summary="ipa")
summary(x,what="contrasts")
# Chunk7
oc.cc$survtime.5years <- pmin(oc.cc$survtime,60) # stop time after 5 years
oc.cc$survstatus.5years <- oc.cc$survstatus # take a copy
oc.cc[oc.cc$survtime>60,]$survstatus.5years <- 0 # reset status
fit1 <- cph(Surv(survtime,survstatus)~rcs(age,3)+tumorthickness+gender+tobacco+deep.invasion+race+x.posnodes+tumormaxdimension+vascular.invasion,
data=oc.cc, x=TRUE, y=TRUE, surv=TRUE)
fit2 <- cph(Surv(survtime.5years,survstatus.5years)~rcs(age,3)+tumorthickness+gender+tobacco+deep.invasion+race+x.posnodes+tumormaxdimension+vascular.invasion,
data=oc.cc, x=TRUE, y=TRUE, surv=TRUE)
x <- Score(list("Unstopped"=fit1,"Stopped.5yrs"=fit2),
data=oc.cc,
formula=Surv(survtime,survstatus)~1,
times=60,
summary=c("IPA"),
null.model=1,
split.method="loob",
B=200) # could be 2000
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.