Learn R Programming

JM (version 1.5-2)

predict: Predictions for Joint Models

Description

Calculates predicted values for the longitudinal part of a joint model.

Usage

# S3 method for jointModel
predict(object, newdata, type = c("Marginal", "Subject"),
    interval = c("none", "confidence", "prediction"), level = 0.95, idVar = "id", 
    FtTimes = NULL, M = 300, returnData = FALSE, scale = 1.6, ...)

Value

If se.fit = FALSE a numeric vector of predicted values, otherwise a list with components pred the predicted values, se.fit the standard error for the fitted values, and low and upp the lower and upper limits of the confidence interval. If returnData = TRUE, it returns the data frame newdata with the previously mentioned components added.

Arguments

object

an object inheriting from class jointModel.

newdata

a data frame in which to look for variables with which to predict.

type

a character string indicating the type of predictions to compute, marginal or subject-specific. See Details.

interval

a character string indicating what type of intervals should be computed.

level

a numeric scalar denoting the tolerance/confidence level.

idVar

a character string indicating the name of the variable in newdata that corresponds to the subject identifier; required when type = "Subject".

FtTimes

a list with components numeric vectors denoting the time points for which we wish to compute subject-specific predictions after the last available measurement provided in newdata. For each subject in newdata the default is a sequence of 25 equally spaced time points from the last available measurement to the maximum follow-up time of all subjects (plus a small quantity). This argument is only used when type = "Subject".

M

numeric scalar denoting the number of Monte Carlo samples. See Details.

returnData

logical; if TRUE the data frame supplied in newdata is returned augmented with the outputs of the function.

scale

a numeric value setting the scaling of the covariance matrix of the empirical Bayes estimates in the Metropolis step during the Monte Carlo sampling.

...

additional arguments; currently none is used.

Author

Dimitris Rizopoulos d.rizopoulos@erasmusmc.nl

Details

When type = "Marginal", this function computes predicted values for the fixed-effects part of the longitudinal submodel. In particular, let \(X\) denote the fixed-effects design matrix calculated using newdata. The predict() calculates \(\hat{y} = X \hat{\beta}\), and if interval = "confidence", \(var(\hat{y}) = X V X^t\), with \(V\) denoting the covariance matrix of \(\hat{\beta}\). Confidence intervals are constructed under the normal approximation.

When type = "Subject", this functions computes subject-specific predictions for the longitudinal outcome based on the joint model. This accomplished with a Monte Carlo simulation scheme, similar to the one described in survfitJM. The only difference is in Step 3, where for interval = "confidence" \(y_i^* = X_i \beta^* + Z_i b_i^*\), whereas for interval = "prediction" \(y_i^*\) is a random vector from a normal distribution with mean \(X_i \beta^* + Z_i b_i^*\) and standard deviation \(\sigma^*\). Based on this Monte Carlo simulation scheme we take as estimate of \(\hat{y}_i\) the average of the M estimates \(y_i^*\) from each Monte Carlo sample. Confidence intervals are constructed using the percentiles of \(y_i^*\) from the Monte Carlo samples.

References

Rizopoulos, D. (2012) Joint Models for Longitudinal and Time-to-Event Data: with Applications in R. Boca Raton: Chapman and Hall/CRC.

See Also

jointModel

Examples

Run this code
if (FALSE) {
# linear mixed model fit
fitLME <- lme(log(serBilir) ~ drug * year, 
    random = ~ year | id, data = pbc2)
# survival regression fit
fitSURV <- survreg(Surv(years, status2) ~ drug, 
    data = pbc2.id, x = TRUE)
# joint model fit, under the (default) Weibull model
fitJOINT <- jointModel(fitLME, fitSURV, timeVar = "year")

DF <- with(pbc2, expand.grid(drug = levels(drug),
    year = seq(min(year), max(year), len = 100)))
Ps <- predict(fitJOINT, DF, interval = "confidence", return = TRUE)
require(lattice)
xyplot(pred + low + upp ~ year | drug, data = Ps,
    type = "l", col = c(2,1,1), lty = c(1,2,2), lwd = 2,
    ylab = "Average log serum Bilirubin")


# Subject-specific predictions
ND <- pbc2[pbc2$id == 2, ]
Ps.ss <- predict(fitJOINT, ND, type = "Subject",
  interval = "confidence", return = TRUE)
require(lattice)
xyplot(pred + low + upp ~ year | id, data = Ps.ss,
    type = "l", col = c(2,1,1), lty = c(1,2,2), lwd = 2,
    ylab = "Average log serum Bilirubin")
}

Run the code above in your browser using DataLab