# prediction: Prediction probabilities for Cox proportional hazard, Shared,... In frailtypack: Shared, Joint (Generalized) Frailty Models; Surrogate Endpoints

## Description

For Cox proportional hazard model

A predictive probability of event between t and horizon time t+w, with w the window of prediction.

For Gamma Shared Frailty model for clustered (not recurrent) events

Two kinds of predictive probabilities can be calculated:

- a conditional predictive probability of event between t and horizon time t+w, i.e. given a specific group

- a marginal predictive probability of event between t and horizon time t+w, i.e. averaged over the population

For Gaussian Shared Frailty model for clustered (not recurrent) events

Two kinds of predictive probabilities can be calculated:

- a conditional predictive probability of event between t and horizon time t+w, i.e. given a specific group and given a specific Gaussian random effect η

- a marginal predictive probability of event between t and horizon time t+w, i.e. averaged over the population

For Gamma Shared Frailty model for recurrent events

Two kinds of predictive probabilities can be calculated:

- A marginal predictive probability of event between t and horizon time t+w, i.e. averaged over the population.

- a conditional predictive probability of event between t and horizon time t+w, i.e. given a specific individual.

This prediction method is the same as the conditional gamma prediction method applied for clustered events (see formula Pcond before).

For Gaussian Shared Frailty model for recurrent events

Two kinds of predictive probabilities can be calculated:

- A marginal predictive probability of event between t and horizon time t+w, i.e. averaged over the population.

- a conditional predictive probability of event between t and horizon time t+w, i.e. given a specific individual.

This prediction method is the same as the conditional Gaussian prediction method applied for clustered events (see formula Pcond before).

It is possible to compute all these predictions in two ways on a scale of times : - either you want a cumulative probability of developing the event between t and t+w (with t fixed, but with a varying window of prediction w); - either you want at a specific time the probability to develop the event in the next w (ie, for a varying prediction time t, but for a fixed window of prediction). See Details.

For Joint Frailty model

Prediction for two types of event can be calculated : for a terminal event or for a new recurrent event, knowing patient's characteristics.

- Prediction of death knowing patients' characteristics :

It is to predict the probability of death in a specific time window given the history of patient i before the time of prediction t. The history HiJ,l, (l=1,2) is the information on covariates before time t, but also the number of recurrences and the time of occurences. Three types of marginal probabilities are computed:

- a prediction of death between t and t+w given that the patient had exactly J recurrences (HiJ,1) before t

- a prediction of death between t and t+w given that the patient had at least J recurrences (HiJ,2) before t

- a prediction of death between t and t+w considering the recurrence history only in the parameters estimation. It corresponds to the average probability of death between t and t+w for a patient with these given characteristics.

- Prediction of risk of a new recurrent event knowing patients' characteristics :

It is to predict the probability of a new recurrent event in a specific time window given the history of patient i before the time of prediction t. The history HiJ is the information on covariates before time t, but also the number of recurrences and the time of occurences. The marginal probability computed is a prediction of a new recurrent event between t and t+w given that the patient had exactly J recurrences (HiJ) before t:

It is possible to compute all these predictions in two ways : - either you want a cumulative probability of developing the event between t and t+w (with t fixed, but with a varying window of prediction w); - either you want at a specific time the probability to develop the event in the next w (ie, for a varying prediction time t, but for a fixed window of prediction). See Details.

With Gaussian frailties (η), the same expressions are used but with uiJ replaced by exp(J\eqnetai) and g(η) corresponds to the Gaussian distribution.

For Joint Nested Frailty models

Prediction of the probability of developing a terminal event between t and t+w for subject i who survived by time t based on the visiting and disease histories of their own and other family members observed by time t.

Let (YfiR(t)) be the history of subject i in family f, before time t, which includes all the recurrent events and covariate information. For disease history, let TfiD(t) = min(Tfi,t) be the observed time to an event before t ; δfiD(t) the disease indicator by time t and XfiD(t) the covariate information observed up to time t. We define the family history of subject i in family f by

which includes the visiting and disease history of all subjects except for subject i in family f as well as their covariate information by time t.

The prediction probability can be written as :

For Joint models for longitudinal data and a terminal event

The predicted probabilities are calculated in a specific time window given the history of biomarker measurements before the time of prediction t (ƴi(t)). The probabilities are conditional also on covariates before time t and that the subject was at risk at t. The marginal predicted probability of the terminal event is

These probabilities can be calculated in several time points with fixed time of prediction t and varying window w or with fixed window w and varying time of prediction t. See Details for an example of how to construct time windows.

For Trivariate joint models for longitudinal data, recurrent events and a terminal event

The predicted probabilities are calculated in a specific time window given the history of biomarker measurements ƴi(t) and recurrences HiJ,1 (complete history of recurrences with known J number of observed events) before the time of prediction t. The probabilities are conditional also on covariates before time t and that the subject was at risk at t. The marginal predicted probability of the terminal event is

The biomarker history can be represented using a linear (`trivPenal`) or non-linear mixed-effects model (`trivPenalNL`).

These probabilities can be calculated in several time points with fixed time of prediction t and varying window w or with fixed window w and varying time of prediction t. See Details for an example of how to construct time windows.

## Usage

 ```1 2``` ```prediction(fit, data, data.Longi, t, window, event="Both", conditional = FALSE, MC.sample=0, individual) ```

## Arguments

 `fit` A frailtyPenal, jointPenal, longiPenal, trivPenal or trivPenalNL object. `data` Data frame for the prediction. See Details. `data.Longi` Data frame for the prediction used for joint models with longitudinal data. See Details. `t` Time or vector of times for prediction. `window` Window or vector of windows for prediction. `event` Only for joint and shared models. The type of event you want to predict : "Terminal" for a terminal event, "Recurrent" for a recurrent event or "Both". Default value is "Both". For joint nested model, only 'Terminal' is allowed. In a shared model, if you want to predict a new recurrent event then the argument "Recurrent" should be use. If you want to predict a new event from clustered data, do not use this option. `conditional` Only for prediction method applied on shared models. Provides distinction between the conditional and marginal prediction methods. Default is FALSE. `MC.sample` Number of samples used to calculate confidence bands with a Monte-Carlo method (with a maximum of 1000 samples). If MC.sample=0 (default value), no confidence intervals are calculated. `individual` Only for joint nested model. Vector of individuals (of the same family) you want to make prediction.

## Details

To compute predictions with a prediction time t fixed and a variable window:

 `1` ```prediction(fit, datapred, t=10, window=seq(1,10,by=1)) ```

Otherwise, you can have a variable prediction time and a fixed window.

 `1` ```prediction(fit, datapred, t=seq(10,20,by=1), window=5) ```

Or fix both prediction time t and window.

 ```1 2``` ```prediction(fit, datapred, t=10, window=5) ```

The data frame building is an important step. It will contain profiles of patient on which you want to do predictions. To make predictions on a Cox proportional hazard or a shared frailty model, only covariates need to be included. You have to distinguish between numerical and categorical variables (factors). If we fit a shared frailty model with two covariates sex (factor) and age (numeric), here is the associated data frame for three profiles of prediction.

 ```1 2 3 4``` ``` datapred <- data.frame(sex=0,age=0) datapred\$sex <- as.factor(datapred\$sex) levels(datapred\$sex)<- c(1,2) datapred[1,] <- c(1,40) # man, 40 years old datapred[2,] <- c(2,45) # woman, 45 years old datapred[3,] <- c(1,60) # man, 60 years old ```

Time-dependent covariates: In the context of time-dependent covariate, the last previous value of the covariate is used before the time t of prediction.

It should be noted, that in a data frame for both marginal and conditional prediction on a shared frailty model for clustered data, the group must be specified. In the case of marginal predictions this can be any number as it does not influence predictions. However, for conditional predictions, the group must be also included in the data set used for the model fitting. The conditional predictions apply the empirical Bayes estimate of the frailty from the specified cluster. Here, three individuals belong to group 5.

 ```1 2 3 4 5``` ``` datapred <- data.frame(group=0, sex=0,age=0) datapred\$sex <- as.factor(datapred\$sex) levels(datapred\$sex)<- c(1,2) datapred[1,] <- c(5,1,40) # man, 40 years old (cluster 5) datapred[2,] <- c(5,2,45) # woman, 45 years old (cluster 5) datapred[3,] <- c(5,1,60) # man, 60 years old (cluster 5) ```

To use the prediction function on joint frailty models and trivariate joint models, the construction will be a little bit different. In these cases, the prediction for the terminal event takes into account covariates but also history of recurrent event times for a patient. You have to create a data frame with the relapse times, the indicator of event, the cluster variable and the covariates. Relapses occurring after the prediction time may be included but will be ignored for the prediction. A joint model with calendar-timescale need to be fitted with Surv(start,stop,event), relapse times correspond to the "stop" variable and indicators of event correspond to the "event" variable (if event=0, the relapse will not be taken into account). For patients without relapses, all the values of "event" variable should be set to 0. Finally, the same cluster variable name needs to be in the joint model and in the data frame for predictions ("id" in the following example). For instance, we observe relapses of a disease and fit a joint model adjusted for two covariates sex (1:male 2:female) and chemo (treatment by chemotherapy 1:no 2:yes). We describe 3 different profiles of prediction all treated by chemotherapy: 1) a man with four relapses at 100, 200, 300 and 400 days, 2) a man with only one relapse at 1000 days, 3) a woman without relapse.

 ```1 2 3 4 5 6 7 8 9``` ``` datapred <- data.frame(time=0,event=0,id=0,sex=0,chemo=0) datapred\$sex <- as.factor(datapred\$sex) levels(datapred\$sex) <- c(1,2) datapred\$chemo <- as.factor(datapred\$chemo) levels(datapred\$chemo) <- c(1,2) datapred[1,] <- c(100,1,1,1,2) # first relapse of the patient 1 datapred[2,] <- c(200,1,1,1,2) # second relapse of the patient 1 datapred[3,] <- c(300,1,1,1,2) # third relapse of the patient 1 datapred[4,] <- c(400,1,1,1,2) # fourth relapse of the patient 1 datapred[5,] <- c(1000,1,2,1,2) # one relapse at 1000 days for patient 2 datapred[6,] <- c(100,0,3,2,2) # patient 3 did not relapse ```

The data can also be the dataset used to fit the joint model. In this case, you will obtain as many prediction rows as patients.

Finally, for the predictions using joint models for longitudinal data and a terminal event and trivariate joint models, a data frame with the history of the biomarker measurements must be provided. It must include data on measurements (values and time points), cluster variable and covariates. Measurements taken after the prediction time may be included but will be ignored for the prediction. The same cluster variable name must be in the data frame, in the data frame used for the joint model and in the data frame with the recurrent event and terminal event times. For instance, we observe two patients and each one had 5 tumor size measurements (patient 1 had an increasing tumor size and patient 2, decreasing). The joint model used for the predictions was adjusted on sex (1: male, 2: female), treatment (1: sequential arm, 2: combined arm), WHO baseline performance status (1: 0 status, 2: 1 status, 3: 2 status) and previous resection of the primate tumor (0: no, 1: yes). The data frame for the biomarker measurements can be:

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18``` ``` datapredj_longi <- data.frame(id = 0, year = 0, tumor.size = 0, treatment = 0, age = 0, who.PS = 0, prev.resection = 0) datapredj_longi\$treatment <- as.factor(datapredj_longi\$treatment) levels(datapredj_longi\$treatment) <- 1:2 datapredj_longi\$age <- as.factor(datapredj_longi\$age) levels(datapredj_longi\$age) <- 1:3 datapredj_longi\$who.PS <- as.factor(datapredj_longi\$who.PS) levels(datapredj_longi\$who.PS) <- 1:3 datapredj_longi\$prev.resection <- as.factor (datapredj_longi\$prev.resection) levels(datapredj_longi\$prev.resection) <- 1:2 # patient 1: increasing tumor size datapredj_longi[1,] <- c(1, 0,1.2 ,2,1,1,1) datapredj_longi[2,] <- c(1,0.3,1.4,2,1,1,1) datapredj_longi[3,] <- c(1,0.6,1.9,2,1,1,1) datapredj_longi[4,] <- c(1,0.9,2.5,2,1,1,1) datapredj_longi[5,] <- c(1,1.5,3.9,2,1,1,1) # patient 2: decreasing tumor size datapredj_longi[6,] <- c(2, 0,1.2 ,2,1,1,1) datapredj_longi[7,] <- c(2,0.3,0.7,2,1,1,1) datapredj_longi[8,] <- c(2,0.5,0.3,2,1,1,1) datapredj_longi[9,] <- c(2,0.7,0.1,2,1,1,1) datapredj_longi[10,] <- c(2,0.9,0.1,2,1,1,1) ```

## Value

The following components are included in a 'predFrailty' object obtained by using prediction function for Cox proportional hazard and shared frailty model.

 `npred` Number of individual predictions `x.time` A vector of prediction times of interest (used for plotting predictions): vector of prediction times t if fixed window. Otherwise vector of prediction times t+w `window` Prediction window or vector of prediction windows `pred` Predictions estimated for each profile `icproba` Logical value. Were confidence intervals estimated ? `predLow` Lower limit of Monte-Carlo confidence interval for each prediction `predHigh` Upper limit of Monte-Carlo confidence interval for each prediction `type` Type of prediction probability (marginal or conditional) `group` For conditional probability, the list of group on which you make predictions

The following components are included in a 'predJoint' object obtained by using prediction function for joint frailty model.

 `npred` Number of individual predictions `x.time` A vector of prediction times of interest (used for plotting predictions): vector of prediction times t if fixed window. Otherwise vector of prediction times t+w `window` Prediction window or vector of prediction windows `group` Id of each patient `pred1` Estimation of probability of type 1: exactly j recurrences `pred2` Estimation of probability of type 2: at least j recurrences `pred3` Estimation of probability of type 3 `pred1_rec` Estimation of prediction of relapse `icproba` Logical value. Were confidence intervals estimated ? `predlow1` Lower limit of Monte-Carlo confidence interval for probability of type 1 `predhigh1` Upper limit of Monte-Carlo confidence interval for probability of type 1 `predlow2` Lower limit of Monte-Carlo confidence interval for probability of type 2 `predhigh2` Upper limit of Monte-Carlo confidence interval for probability of type 2 `predlow3` Lower limit of Monte-Carlo confidence interval for probability of type 3 `predhigh3` Upper limit of Monte-Carlo confidence interval for probability of type 3 `predhigh1_rec` Upper limit of Monte-Carlo confidence interval for prediction of relapse `predlow1_rec` Lower limit of Monte-Carlo confidence interval for prediction of relapse

The following components are included in a 'predLongi' object obtained by using prediction function for joint models with longitudinal data.

 `npred` Number of individual predictions `x.time` A vector of prediction times of interest (used for plotting predictions): vector of prediction times t if fixed window. Otherwise vector of prediction times t+w `window` Prediction window or vector of prediction windows `group` Id of each patient `pred` Estimation of probability `icproba` Logical value. Were confidence intervals estimated? `predLow` Lower limit of Monte-Carlo confidence intervals `predHigh` Upper limit of Monte-Carlo confidence intervals `trivariate` Logical value. Are the prediction calculated from the trivariate model?

## References

A. Krol, L. Ferrer, JP. Pignon, C. Proust-Lima, M. Ducreux, O. Bouche, S. Michiels, V. Rondeau (2016). Joint Model for Left-Censored Longitudinal Data, Recurrent Events and Terminal Event: Predictive Abilities of Tumor Burden for Cancer Evolution with Application to the FFCD 2000-05 Trial. Biometrics 72(3) 907-16.

A. Mauguen, B. Rachet, S. Mathoulin-Pelissier, G. MacGrogan, A. Laurent, V. Rondeau (2013). Dynamic prediction of risk of death using history of cancer recurrences in joint frailty models. Statistics in Medicine, 32(30), 5366-80.

V. Rondeau, A. Laurent, A. Mauguen, P. Joly, C. Helmer (2015). Dynamic prediction models for clustered and interval-censored outcomes: investigating the intra-couple correlation in the risk of dementia. Statistical Methods in Medical Research

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325``` ```## Not run: ##################################################### #### prediction on a COX or SHARED frailty model #### ##################################################### data(readmission) #-- here is a generated cluster (31 clusters of 13 subjects) readmission <- transform(readmission,group=id%%31+1) #-- we compute predictions of death #-- we extract last row of each subject for the time of death readmission <- aggregate(readmission,by=list(readmission\$id), FUN=function(x){x[length(x)]})[,-1] ##-- predictions on a Cox proportional hazard model --## cox <- frailtyPenal(Surv(t.stop,death)~sex+dukes, n.knots=10,kappa=10000,data=readmission) #-- construction of the data frame for predictions datapred <- data.frame(sex=0,dukes=0) datapred\$sex <- as.factor(datapred\$sex) levels(datapred\$sex)<- c(1,2) datapred\$dukes <- as.factor(datapred\$dukes) levels(datapred\$dukes)<- c(1,2,3) datapred[1,] <- c(1,2) # man, dukes 2 datapred[2,] <- c(2,3) # woman, dukes 3 #-- prediction of death for two patients between 100 and 100+w, #-- with w in (50,100,...,1900) pred.cox <- prediction(cox,datapred,t=100,window=seq(50,1900,50)) plot(pred.cox) #-- prediction of death for two patients between t and t+400, #-- with t in (100,150,...,1500) pred.cox2 <- prediction(cox,datapred,t=seq(100,1500,50),window=400) plot(pred.cox2) ##-- predictions on a shared frailty model for clustered data --## sha <- frailtyPenal(Surv(t.stop,death)~cluster(group)+sex+dukes, n.knots=10,kappa=10000,data=readmission) #-- marginal prediction # a group must be specified but it does not influence the results # in the marginal predictions setting datapred\$group[1:2] <- 1 pred.sha.marg <- prediction(sha,datapred,t=100,window=seq(50,1900,50)) plot(pred.sha.marg) #-- conditional prediction, given a specific cluster (group=5) datapred\$group[1:2] <- 5 pred.sha.cond <- prediction(sha,datapred,t=100,window=seq(50,1900,50), conditional = TRUE) plot(pred.sha.cond) ##-- marginal prediction of a recurrent event, on a shared frailty model data(readmission) datapred <- data.frame(t.stop=0,event=0,id=0,sex=0,dukes=0) datapred\$sex <- as.factor(datapred\$sex) levels(datapred\$sex)<- c(1,2) datapred\$dukes <- as.factor(datapred\$dukes) levels(datapred\$dukes)<- c(1,2,3) datapred[1,] <- c(100,1,1,1,2) #man, dukes 2, 3 recurrent events datapred[2,] <- c(200,1,1,1,2) datapred[3,] <- c(300,1,1,1,2) datapred[4,] <- c(350,0,2,1,2) #man, dukes 2 0 recurrent event #-- Shared frailty model with gamma distribution sha <- frailtyPenal(Surv(t.stop,event)~cluster(id)+sex+dukes,n.knots=10, kappa=10000,data=readmission) pred.sha.rec.marg <- prediction(sha,datapred,t=200,window=seq(50,1900,50), event='Recurrent',MC.sample=100) plot(pred.sha.rec.marg,conf.bands=TRUE) ##-- conditional prediction of a recurrent event, on a shared frailty model pred.sha.rec.cond <- prediction(sha,datapred,t=200,window=seq(50,1900,50), event='Recurrent',conditional = TRUE,MC.sample=100) plot(pred.sha.rec.cond,conf.bands=TRUE) ##################################################### ######## prediction on a JOINT frailty model ######## ##################################################### data(readmission) ##-- predictions of death on a joint model --## joi <- frailtyPenal(Surv(t.start,t.stop,event)~cluster(id) +sex+dukes+terminal(death),formula.terminalEvent=~sex +dukes,data=readmission,n.knots=10,kappa=c(100,100),recurrentAG=TRUE) #-- construction of the data frame for predictions datapredj <- data.frame(t.stop=0,event=0,id=0,sex=0,dukes=0) datapredj\$sex <- as.factor(datapredj\$sex) levels(datapredj\$sex) <- c(1,2) datapredj\$dukes <- as.factor(datapredj\$dukes) levels(datapredj\$dukes) <- c(1,2,3) datapredj[1,] <- c(100,1,1,1,2) datapredj[2,] <- c(200,1,1,1,2) datapredj[3,] <- c(300,1,1,1,2) datapredj[4,] <- c(400,1,1,1,2) datapredj[5,] <- c(380,1,2,1,2) #-- prediction of death between 100 and 100+500 given relapses pred.joint0 <- prediction(joi,datapredj,t=100,window=500,event = "Terminal") print(pred.joint0) #-- prediction of death between 100 and 100+w given relapses # (with confidence intervals) pred.joint <- prediction(joi,datapredj,t=100,window=seq(50,1500,50), event = "Terminal",MC.sample=100) plot(pred.joint,conf.bands=TRUE) # each y-value of the plot corresponds to the prediction between [100,x] #-- prediction of death between t and t+500 given relapses pred.joint2 <- prediction(joi,datapredj,t=seq(100,1000,50), window=500,event = "Terminal") plot(pred.joint2) # each y-value of the plot corresponds to the prediction between [x,x+500], #or in the next 500 #-- prediction of relapse between 100 and 100+w given relapses # (with confidence intervals) pred.joint <- prediction(joi,datapredj,t=100,window=seq(50,1500,50), event = "Recurrent",MC.sample=100) plot(pred.joint,conf.bands=TRUE) # each y-value of the plot corresponds to the prediction between [100,x] #-- prediction of relapse and death between 100 and 100+w given relapses # (with confidence intervals) pred.joint <- prediction(joi,datapredj,t=100,window=seq(50,1500,50), event = "Both",MC.sample=100) plot(pred.joint,conf.bands=TRUE) # each y-value of the plot corresponds to the prediction between [100,x] ############################################################################# ### prediction on a 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) #-- construction of the data-frame for predictions #-- biomarker observations datapredj_longi <- data.frame(id = 0, year = 0, tumor.size = 0, treatment = 0, age = 0, who.PS = 0, prev.resection = 0) datapredj_longi\$treatment <- as.factor(datapredj_longi\$treatment) levels(datapredj_longi\$treatment) <- 1:2 datapredj_longi\$age <- as.factor(datapredj_longi\$age) levels(datapredj_longi\$age) <- 1:3 datapredj_longi\$who.PS <- as.factor(datapredj_longi\$who.PS) levels(datapredj_longi\$who.PS) <- 1:3 datapredj_longi\$prev.resection <- as.factor(datapredj_longi\$prev.resection) levels(datapredj_longi\$prev.resection) <- 1:2 # patient 1: increasing tumor size datapredj_longi[1,] <- c(1, 0,1.2 ,2,1,1,1) datapredj_longi[2,] <- c(1,0.3,1.4,2,1,1,1) datapredj_longi[3,] <- c(1,0.6,1.9,2,1,1,1) datapredj_longi[4,] <- c(1,0.9,2.5,2,1,1,1) datapredj_longi[5,] <- c(1,1.5,3.9,2,1,1,1) # patient 2: decreasing tumor size datapredj_longi[6,] <- c(2, 0,1.2 ,2,1,1,1) datapredj_longi[7,] <- c(2,0.3,0.7,2,1,1,1) datapredj_longi[8,] <- c(2,0.5,0.3,2,1,1,1) datapredj_longi[9,] <- c(2,0.7,0.1,2,1,1,1) datapredj_longi[10,] <- c(2,0.9,0.1,2,1,1,1) #-- terminal event datapredj <- data.frame(id = 0, treatment = 0, age = 0, who.PS = 0, prev.resection = 0) datapredj\$treatment <- as.factor(datapredj\$treatment) levels(datapredj\$treatment) <- 1:2 datapredj\$age <- as.factor(datapredj\$age) levels(datapredj\$age) <- 1:3 datapredj\$who.PS <- as.factor(datapredj\$who.PS) datapredj\$prev.resection <- as.factor(datapredj\$prev.resection) levels(datapredj\$prev.resection) <- 1:2 levels(datapredj\$who.PS) <- 1:3 datapredj[1,] <- c(1,2,1,1,1) datapredj[2,] <- c(2,2,1,1,1) model.spli.CL <- longiPenal(Surv(time1, state) ~ age + treatment + who.PS + prev.resection, tumor.size ~ year * treatment + age + who.PS , colorectalSurv, data.Longi = colorectalLongi, random = c("1", "year"), id = "id", link = "Current-level", left.censoring = -3.33, n.knots = 6, kappa = 1) #-- prediction of death between 1 year and 1+2 given history of the biomarker pred.jointLongi0 <- prediction(model.spli.CL, datapredj, datapredj_longi, t = 1, window = 2) print(pred.jointLongi0) #-- prediction of death between 1 year and 1+w given history of the biomarker pred.jointLongi <- prediction(model.spli.CL, datapredj, datapredj_longi, t = 1, window = seq(0.5, 2.5, 0.2), MC.sample = 100) plot(pred.jointLongi, conf.bands = TRUE) # each y-value of the plot corresponds to the prediction between [1,x] #-- prediction of death between t and t+0.5 given history of the biomarker pred.jointLongi2 <- prediction(model.spli.CL, datapredj, datapredj_longi, t = seq(1, 2.5, 0.5), window = 0.5, MC.sample = 100) plot(pred.jointLongi2, conf.bands = TRUE) # each y-value of the plot corresponds to the prediction between [x,x+0.5], #or in the next 0.5 ############################################################################# ##### marginal prediction on a JOINT NESTED model for a terminal event ###### ############################################################################# #*--Warning! You can compute this prediction method with ONLY ONE family #*--by dataset of prediction. #*--Please make sure your data frame contains a column for individuals AND a #*--column for the reference number of the family chosen. data(readmission) readmissionNested <- transform(readmission,group=id%%30+1) #-- construction of the data frame for predictions : #-- family 5 was selected for the prediction DataPred <- readmissionNested[which(readmissionNested\$group==5),] #-- Fitting the model modJointNested_Splines <- frailtyPenal(formula = Surv(t.start, t.stop, event)~subcluster(id)+ cluster(group) + dukes + terminal(death),formula.terminalEvent =~dukes, data = readmissionNested, recurrentAG = TRUE,n.knots = 8, kappa = c(9.55e+9, 1.41e+12), initialize = TRUE) #-- Compute prediction over the individuals 274 and 4 of the family 5 predRead <- prediction(modJointNested_Splines, data=DataPred,t=500, window=seq(100,1500,200), conditional=FALSE, individual = c(274, 4)) ######################################################################### ##### prediction on TRIVARIATE JOINT model (linear and non-linear) ###### ######################################################################### data(colorectal) data(colorectalLongi) #-- construction of the data frame for predictions #-- history of recurrences and terminal event datapredj <- data.frame(time0 = 0, time1 = 0, new.lesions = 0, id = 0, treatment = 0, age = 0, who.PS = 0, prev.resection =0) datapredj\$treatment <- as.factor(datapredj\$treatment) levels(datapredj\$treatment) <- 1:2 datapredj\$age <- as.factor(datapredj\$age) levels(datapredj\$age) <- 1:3 datapredj\$who.PS <- as.factor(datapredj\$who.PS) levels(datapredj\$who.PS) <- 1:3 datapredj\$prev.resection <- as.factor(datapredj\$prev.resection) levels(datapredj\$prev.resection) <- 1:2 datapredj[1,] <- c(0,0.4,1,1,2,1,1,1) datapredj[2,] <- c(0.4,1.2,1,1,2,1,1,1) datapredj[3,] <- c(0,0.5,1,2,2,1,1,1) # Linear trivariate joint model # (computation takes around 40 minutes) model.trivPenal <-trivPenal(Surv(time0, time1, new.lesions) ~ cluster(id) + age + treatment + who.PS + 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 = TRUE, n.knots = 6, kappa=c(0.01, 2), method.GH="Pseudo-adaptive", n.nodes=7, init.B = c(-0.07, -0.13, -0.16, -0.17, 0.42, #recurrent events covarates -0.23, -0.1, -0.09, -0.12, 0.8, -0.23, #terminal event covariates 3.02, -0.30, 0.05, -0.63, -0.02, -0.29, 0.11, 0.74)) #biomarker covariates #-- prediction of death between 1 year and 1+2 pred.jointTri0 <- prediction(model.trivPenal, datapredj, datapredj_longi, t = 1, window = 2) print(pred.jointTri0) #-- prediction of death between 1 year and 1+w pred.jointTri <- prediction(model.trivPenal, datapredj, datapredj_longi, t = 1, window = seq(0.5, 2.5, 0.2), MC.sample = 100) plot(pred.jointTri, conf.bands = TRUE) #-- prediction of death between t and t+0.5 pred.jointTri2 <- prediction(model.trivPenal, datapredj, datapredj_longi, t = seq(1, 2.5, 0.5), window = 0.5, MC.sample = 100) plot(pred.jointTri2, conf.bands = TRUE) ############################### # 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") #-- prediction of death between 1 year and 1+2 pred.jointTriNL0 <- prediction(model.trivPenalNL, datapredj, datapredj_longi, t = 1, window = 2) print(pred.jointTriNL0) #-- prediction of death between 1 year and 1+w pred.jointTriNL <- prediction(model.trivPenalNL, datapredj, datapredj_longi, t = 1, window = seq(0.5, 2.5, 0.2), MC.sample = 100) plot(pred.jointTriNL, conf.bands = TRUE) #-- prediction of death between t and t+0.5 pred.jointTriNL2 <- prediction(model.trivPenalNL, datapredj, datapredj_longi, t = seq(2, 3, 0.2), window = 0.5, MC.sample = 100) plot(pred.jointTriNL2, conf.bands = TRUE) ## End(Not run) ```

frailtypack documentation built on Dec. 20, 2021, 5:07 p.m.