| epoce | R Documentation |
This function computes estimators of the Expected Prognostic Observed
Cross-Entropy (EPOCE) for evaluating the predictive accuracy of joint models
using frailtyPenal, longiPenal, trivPenal or
trivPenalNL. On the same data as used for estimation of the joint
model, this function computes both the Mean Prognosis Observed Loss (MPOL)
and the Cross-Validated Prognosis Observed Loss (CVPOL), two estimators of
EPOCE. The latter corrects the MPOL estimate for over-optimism by
approximated cross-validation. On external, this function only computes
MPOL.
epoce(fit, pred.times, newdata = NULL, newdata.Longi = NULL)
fit |
A jointPenal, longiPenal, trivPenal or trivPenalNL object. |
pred.times |
Time or vector of times to compute epoce. |
newdata |
Optional. In case of joint models obtained with
|
newdata.Longi |
Optional. In case of joint models obtained with
|
data |
name of the data used to compute epoce |
new.data |
a boolean which is FALSE if computation is done on the same data as for estimation, and TRUE otherwise |
pred.times |
time or vector of times used in the function |
mpol |
values of MPOL for each pred.times |
cvpol |
values of CVPOL for each pred.times |
IndivContrib |
all the contributions to the log-likelihood for each pred.times |
AtRisk |
number of subject still at risk for each pred.times |
D. Commenges, B. Liquet, C. Proust-Lima (2012). Choice of prognostic estimators in joint models by estimating differences of expected conditional Kullback-Leibler risks. Biometrics, 68(2), 380-387.
## Not run:
########################################
#### EPOCE on a joint frailty model ####
########################################
data(readmission)
modJoint.gap <- frailtyPenal(Surv(t.start,t.stop,event)~ cluster(id) +
dukes + charlson + sex + chemo + terminal(death),
formula.terminalEvent = ~ dukes + charlson + sex + chemo ,
data = readmission, n.knots = 8, kappa =c(2.11e+08,9.53e+11),
recurrentAG=TRUE)
# computation on the same dataset
temps <- c(200,500,800,1100)
epoce <- epoce(modJoint.gap,temps)
print(epoce)
plot(epoce,type = "cvpol")
# computation on a new dataset
# here a sample of readmission with the first 50 subjects
s <- readmission[1:100,]
epoce <- epoce(modJoint.gap,temps,newdata=s)
print(epoce)
plot(epoce,type = "mpol")
#################################################
#### EPOCE on a joint model for a biomarker ####
######### and a terminal event ###############
#################################################
data(colorectal)
data(colorectalLongi)
# Survival data preparation - only terminal events
colorectalSurv <- subset(colorectal, new.lesions == 0)
modLongi <- longiPenal(Surv(time0, time1, state) ~ age +
treatment + who.PS, tumor.size ~ year*treatment + age +
who.PS, colorectalSurv, data.Longi =colorectalLongi,
random = c("1", "year"), id = "id", link = "Random-effects",
left.censoring = -3.33, hazard = "Weibull",
method.GH = "Pseudo-adaptive")
# computation on the same dataset
time <- c(1, 1.5, 2, 2.5)
epoce <- epoce(modLongi,time)
print(epoce)
plot(epoce, type = "cvpol")
# computation on a new dataset
# here a sample of colorectal data with the first 50 subjects
s <- subset(colorectal, new.lesions == 0 & id%in%1:50)
s.Longi <- subset(colorectalLongi, id%in%1:50)
epoce <- epoce(modLongi, time, newdata = s, newdata.Longi = s.Longi)
print(epoce)
plot(epoce, type = "mpol")
###################################################
#### EPOCE on a joint model for a biomarker, ######
#### recurrent events and a terminal event ######
###################################################
data(colorectal)
data(colorectalLongi)
# Linear model for the biomarker
# (computation takes around 30 minutes)
model.trivPenalNL <-trivPenal(Surv(gap.time, new.lesions) ~ cluster(id)
+ age + treatment + who.PS + prev.resection + terminal(state),
formula.terminalEvent =~ age + treatment + who.PS + prev.resection,
tumor.size ~ year * treatment + age + who.PS, data = colorectal,
data.Longi = colorectalLongi, random = c("1", "year"), id = "id",
link = "Random-effects", left.censoring = -3.33, recurrentAG = FALSE,
hazard = "Weibull", method.GH="Pseudo-adaptive", n.nodes=7)
# computation on the same dataset
time <- c(1, 1.5, 2, 2.5)
# (computation takes around 10 minutes)
epoce <- epoce(model.trivPenalNL,time)
print(epoce)
plot(epoce, type = "cvpol")
# computation on a new dataset
# here a sample of colorectal data with the first 100 subjects
s <- subset(colorectal, id%in%1:100)
s.Longi <- subset(colorectalLongi, id%in%1:100)
# (computation takes around 10 minutes)
epoce <- epoce(model.trivPenalNL, time, newdata = s, newdata.Longi = s.Longi)
print(epoce)
plot(epoce, type = "mpol")
# Non-linear model for the biomarker
# No information on dose - creation of a dummy variable
colorectalLongi$dose <- 1
# (computation can take around 40 minutes)
model.trivPenalNL <- trivPenalNL(Surv(time0, time1, new.lesions) ~ cluster(id) + age + treatment
+ terminal(state), formula.terminalEvent =~ age + treatment, biomarker = "tumor.size",
formula.KG ~ 1, formula.KD ~ treatment, dose = "dose", time.biomarker = "year",
data = colorectal, data.Longi =colorectalLongi, random = c("y0", "KG"), id = "id",
init.B = c(-0.22, -0.16, -0.35, -0.19, 0.04, -0.41, 0.23), init.Alpha = 1.86,
init.Eta = c(0.5, 0.57, 0.5, 2.34), init.Biomarker = c(1.24, 0.81, 1.07, -1.53),
recurrentAG = TRUE, n.knots = 5, kappa = c(0.01, 2), method.GH = "Pseudo-adaptive")
# computation on the same dataset
time <- c(1, 1.5, 2, 2.5)
epoce <- epoce(model.trivPenalNL, time)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.