Title: | Kaplan-Meier Multiple Imputation for the Analysis of Cumulative Incidence Functions in the Competing Risks Setting |
---|---|
Description: | Performs a Kaplan-Meier multiple imputation to recover the missing potential censoring information from competing risks events, so that standard right-censored methods could be applied to the imputed data sets to perform analyses of the cumulative incidence functions (Allignol and Beyersmann, 2010 <doi:10.1093/biostatistics/kxq018>). |
Authors: | Arthur Allignol <[email protected]> |
Maintainer: | Arthur Allignol <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.5.5 |
Built: | 2024-11-01 03:37:52 UTC |
Source: | https://github.com/aallignol/kmi |
This function fits Cox proportional hazards models to each imputed data set to estimate the regression coefficients in a proportional subdistribution hazards model, and pools the results.
cox.kmi(formula, imp.data, df.complete = Inf, ...)
cox.kmi(formula, imp.data, df.complete = Inf, ...)
formula |
A formula object, with the response on the left of a
|
imp.data |
An object of class |
df.complete |
Complete data degrees of freedom. |
... |
Further arguments for the |
Fits a Cox proportional hazards model on each imputed data set to
estimate the regression coefficients in a proportional
subdistribution hazards model, and pools the results, using the
MIcombine
function of the mitools package.
An object of class cox.kmi
including the following components:
coefficients |
Pooled regression coefficient estimates |
variance |
Pooled variance estimate |
nimp |
Number of multiple imputations |
df |
degrees of freedom |
call |
The matched call |
individual.fit |
A list of |
Arthur Allignol, [email protected]
coxph
,
MIcombine
, print.cox.kmi
,
summary.cox.kmi
data(icu.pneu) if (require(survival)) { set.seed(1313) imp.dat <- kmi(Surv(start, stop, status) ~ 1, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) fit.kmi <- cox.kmi(Surv(start, stop, event == 2) ~ pneu, imp.dat) summary(fit.kmi) ### Now using the censoring-complete data fit <- coxph(Surv(start, adm.cens.exit, event == 2) ~ pneu, icu.pneu) summary(fit) ## estimation of the censoring distribution adjusted on covariates dat.cova <- kmi(Surv(start, stop, status) ~ age + sex, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) fit.kmi2 <- cox.kmi(Surv(start, adm.cens.exit, event == 2) ~ pneu + age, dat.cova) summary(fit.kmi2) }
data(icu.pneu) if (require(survival)) { set.seed(1313) imp.dat <- kmi(Surv(start, stop, status) ~ 1, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) fit.kmi <- cox.kmi(Surv(start, stop, event == 2) ~ pneu, imp.dat) summary(fit.kmi) ### Now using the censoring-complete data fit <- coxph(Surv(start, adm.cens.exit, event == 2) ~ pneu, icu.pneu) summary(fit) ## estimation of the censoring distribution adjusted on covariates dat.cova <- kmi(Surv(start, stop, status) ~ age + sex, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) fit.kmi2 <- cox.kmi(Surv(start, adm.cens.exit, event == 2) ~ pneu + age, dat.cova) summary(fit.kmi2) }
This data set is a random sample drawn from the SIR-3 study that aimed at analysing the effect of nosocomial infections on the length of ICU stay. Patients were included in the study if they had stayed at least 1 day in the unit. The sample includes information to assess the effect of nosocomial pneumonia on the length of stay. The endpoint is either discharge alive from the ICU or dead in the unit. These data are censoring complete as the censoring time is known for all patients.
data(icu.pneu)
data(icu.pneu)
A data frame with 1421 observations on the following 8 variables.
id
Individual patient id.
start
Start of the observation time.
stop
Failure time.
status
Censoring status. 0 if the observation is censored, 1 otherwise.
event
Event type. 2 is death in ICU, 3 is discharge alive
pneu
Nosocomial pneumonia indicator.
adm.cens.exit
Exit times for patients discharged alive are replaced by their administrative censoring times.
age
Age at inclusion
sex
Sex. F
for female and M
for male
Beyersmann, J., Gastmeier, P., Grundmann, H., Baerwolff, S., Geffers, C., Behnke, M., Rueden, H., and Schumacher, M. Use of multistate models to assess prolongation of intensive care unit stay due to nosocomial infection. Infection Control and Hospital Epidemiology, 27:493-499, 2006.
Beyersmann, J. and Schumacher, M. (2008). Time-dependent covariates in the proportional hazards model for competing risks. Biostatistics, 9:765–776.
data(icu.pneu)
data(icu.pneu)
The function performs a non parametric multiple imputation that aims at recovering the missing potential censoring times from competing events.
kmi(formula, data, id = NULL, etype, failcode = 1, nimp = 10, epsilon = 1, bootstrap = FALSE, nboot = 10)
kmi(formula, data, id = NULL, etype, failcode = 1, nimp = 10, epsilon = 1, bootstrap = FALSE, nboot = 10)
formula |
A |
data |
A data.frame in which to interpret the variables given in
the formula, |
id |
Used to identify individual subjects when one subject can
have several rows of data, e.g., with time-dependent covariates. Set
to |
etype |
Variable specifying the type of competing event. When
|
failcode |
Indicates the failure cause of interest. Imputation will be performed on the other competing events. Default is 1. |
nimp |
Number of multiple imputation. Default is 10. |
epsilon |
When the last time is an event, a censoring time equal
to |
bootstrap |
Logical. Whether to estimate the censoring distribution using bootstrap samples. Default is FALSE. |
nboot |
If |
It was shown that if censoring times are observed for all individuals, methods for standard right-censored survival data can be used to analyse cumulative incidence functions from competing risks (Fine and Gray 1999). Therefore the idea proposed by Ruan and Gray (2008) is to impute potential censoring times for individuals who have failed from the competing events. The censoring times are imputed from the conditional Kaplan-Meier estimator of the censoring distribution.
Estimation of the censoring distribution may be improved through bootstrapping. Estimation might also be improved fitting a model for the censoring distribution. When covariates are given, a proportional hazards model on the hazard of censoring is fit. The censoring times are then imputed from the estimated model.
The competing risks model formulation in formula
mimics the one
in survfit
.
An object of class kmi
with the following components:
imputed.data |
A list of matrices giving the imputed times in the first column and imputed event type in the second column. The event status for imputed times take value 0 (censored). |
original.data |
The original data set |
info |
Gives the names of the time and event indicator column in the original data set. |
call |
The matched call. |
When a proportional hazards model is fit for modelling the censoring distribution, the censoring times are imputed from the imputed model. When there is missing covariate information for the prediction, mean imputation is used.
This multiple imputation technique does not work for left-truncated data.
Arthur Allignol, [email protected]
Ruan, P.K. and Gray, R.J. (2008). Analyses of cumulative incidence functions via non-parametric multiple imputation. Statistics in Medicine, 27(27):5709–5724.
Allignol, A. and Beyersmann, J. (2010). Software for fitting nonstandard proportional subdistribution hazards models. Biostatistics, doi:10.1093/biostatistics/kxq018
Fine, J.P. and Gray, R.J. (1999). A Proportional Hazards Model for the Subdistribution of a Competing Risk. Journal of the American Statistical Association. 94(446):496–509.
icu.pneu
, cox.kmi
,
Surv
, survfit
data(icu.pneu) if (require(survival)) { dat <- kmi(Surv(start, stop, status) ~ 1, data = icu.pneu, etype = event, id= id, failcode = 2, nimp = 5) ## another way to specify the formula if there is no status ## variable icu.pneu$ev <- icu.pneu$event icu.pneu$ev[icu.pneu$status == 0] <- 0 dat <- kmi(Surv(start, stop, ev != 0) ~ 1, data = icu.pneu, etype = ev, id= id, failcode = 2, nimp = 5) ## with covariates to model the censoring distribution dat.cova <- kmi(Surv(start, stop, status) ~ age + sex, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) }
data(icu.pneu) if (require(survival)) { dat <- kmi(Surv(start, stop, status) ~ 1, data = icu.pneu, etype = event, id= id, failcode = 2, nimp = 5) ## another way to specify the formula if there is no status ## variable icu.pneu$ev <- icu.pneu$event icu.pneu$ev[icu.pneu$status == 0] <- 0 dat <- kmi(Surv(start, stop, ev != 0) ~ 1, data = icu.pneu, etype = ev, id= id, failcode = 2, nimp = 5) ## with covariates to model the censoring distribution dat.cova <- kmi(Surv(start, stop, status) ~ age + sex, data = icu.pneu, etype = event, id = id, failcode = 2, nimp = 5) }
Print method for cox.kmi
objects.
## S3 method for class 'cox.kmi' print(x, print.ind = FALSE, ...)
## S3 method for class 'cox.kmi' print(x, print.ind = FALSE, ...)
x |
An object of class |
print.ind |
A logical specifying whether to print the results of the analyses performed on each imputed data set. By default, only the pooled estimates are printed. |
... |
Further arguments |
No value returned
Arthur Allignol, [email protected]
Print method for summary.cox.kmi
objects.
## S3 method for class 'summary.cox.kmi' print(x, digits = max(getOption("digits") - 3, 3), signif.stars = getOption("show.signif.stars"), print.ind = FALSE, ...)
## S3 method for class 'summary.cox.kmi' print(x, digits = max(getOption("digits") - 3, 3), signif.stars = getOption("show.signif.stars"), print.ind = FALSE, ...)
x |
An object of class |
digits |
Significant digits to print. |
signif.stars |
Logical. If TRUE, 'significance stars' are printed for each coefficient. |
print.ind |
Logical specifying whether to print a summary of the models fitted on each imputed data set. Default is FALSE |
... |
Further arguments |
No value returned
Arthur Allignol, [email protected]
Provides a summary of the fitted model.
## S3 method for class 'cox.kmi' summary(object, conf.int = 0.95, scale = 1, ...)
## S3 method for class 'cox.kmi' summary(object, conf.int = 0.95, scale = 1, ...)
object |
An object of class |
conf.int |
Level of the confidence intervals. Default is 0.95 |
scale |
Vector of scale factors for the coefficients, default to 1. The confidence limits are for the risk change associated with one scale unit. |
... |
Further arguments |
An object of class summary.cox.kmi
with the following
components:
call |
The matched call |
coefficients |
A matrix with 5 columns including the regression coefficients, subdistribution hazard ratios, standard-errors, t-statistics and corresponding two-sided p-values. |
conf.int |
A matrix with 4 columns that consists of the subdistribution hazard ratios, exp(-coef) and the lower and upper bounds of the confidence interval. |
individual.fit |
A list of |
Arthur Allignol, [email protected]
cox.kmi
, print.summary.cox.kmi
,
summary.coxph