# NOT RUN {
# }
# NOT RUN {
###--- Joint model for longitudinal data and a terminal event ---###
data(colorectal)
data(colorectalLongi)
# Survival data preparation - only terminal events
colorectalSurv <- subset(colorectal, new.lesions == 0)
# Baseline hazard function approximated with splines
# Random effects as the link function
model.spli.RE <- longiPenal(Surv(time1, state) ~ age + treatment + who.PS
+ prev.resection, tumor.size ~ year * treatment + age + who.PS ,
data=colorectalSurv, data.Longi = colorectalLongi, random = c("1", "year"),
id = "id", link = "Random-effects", left.censoring = -3.33,
n.knots = 7, kappa = 2)
# Weibull baseline hazard function
# Current level of the biomarker as the link function
model.weib.CL <- longiPenal(Surv(time1, state) ~ age + treatment + who.PS
+ prev.resection, tumor.size ~ year * treatment + age + who.PS , timevar="year",
data=colorectalSurv, data.Longi = colorectalLongi, random = c("1", "year"),
id = "id", link = "Current-level", left.censoring = -3.33, hazard = "Weibull")
###--- Two-part Joint model for semicontinuous
# longitudinal data and a terminal event ---###
data(colorectal)
data(colorectalLongi)
colorectalSurv <- subset(colorectal, new.lesions == 0)
# Box-cox back transformation (lambda=0.3) and apply logarithm (with a 1 unit shift)
colorectalLongi$Yo <- (colorectalLongi$tumor.size*0.3+1)^(1/0.3)
colorectalLongi$Y <- log(colorectalLongi$Y+1) # log transformation with shift=1
# Conditional two-part joint model - random-effects association structure (~15min)
CTPJM_re <-longiPenal(Surv(time1, state)~age + treatment +
who.PS+ prev.resection, Y~year*treatment, formula.Binary=Y~year*treatment,
data = colorectalSurv, data.Longi = colorectalLongi, random = c("1"),
random.Binary=c("1"), id = "id", link ="Random-effects", left.censoring = F,
n.knots = 7, kappa = 2, hazard="Splines-per")
print(CTPJM_re)
# Conditional two-part joint model - current-level association structure (~15min)
# Simulated dataset (github.com/DenisRustand/TPJM_sim)
data(longDat)
data(survDat)
tte <- frailtyPenal(Surv(deathTimes, d)~trt,n.knots=5,kappa=0, data=survDat,cross.validation = T)
kap <- round(tte$kappa,2);kap # smoothing parameter
CTPJM_cl <- longiPenal(Surv(deathTimes, d)~trt, Y~timej*trtY,
data=survDat, data.Longi = longDat,
random = c("1","timej"), formula.Binary=Y~timej*trtY,
random.Binary=c("1"), timevar="timej", id = "id",
link = "Current-level", n.knots = 5, kappa = kap,
hazard="Splines-per", method.GH="Monte-carlo",
n.nodes=500)
print(CTPJM_cl)
# Marginal two-part joint model - random-effects association structure (~10min)
longDat$Yex <- exp(longDat$Y)-1
MTPJM_re <- longiPenal(Surv(deathTimes, d)~trt, Yex~timej*trtY,
data=survDat, data.Longi = longDat,MTP=T,GLMlog = T,
random = c("1"), formula.Binary=Y~timej*trtY,
random.Binary=c("1"), timevar="timej", id = "id",
link = "Random-effects", n.knots = 5, kappa = kap,
hazard="Splines-per", method.GH="Monte-carlo",
n.nodes=500)
print(MTPJM_re)
# Marginal two-part joint model - current-level association structure (~45min)
MTPJM_cl <- longiPenal(Surv(deathTimes, d)~trt, Yex~timej*trtY,
data=survDat, data.Longi = longDat,MTP=T,GLMlog = T,
random = c("1","timej"), formula.Binary=Y~timej*trtY,
random.Binary=c("1"), timevar="timej", id = "id",
link = "Current-level", n.knots = 5, kappa = kap,
hazard="Splines-per", method.GH="Monte-carlo",
n.nodes=500)
print(MTPJM_cl)
# }
Run the code above in your browser using DataLab