cmpp
is an R package designed to facilitate parametric
modeling and inference for cumulative incidence functions (CIFs) in
competing risks scenarios. The package implements methods discussed in
seminal works by Jeong and Fine (2006, 2007), with efficient computation
powered by Rcpp for high-performance applications.
Competing risks occur when multiple types of events prevent the observation of a particular event of interest. Traditional survival analysis often misrepresents such data, as it fails to account for competing risks. This package provides parametric methods for cumulative incidence functions (CIFs), offering a more direct and interpretable analysis than traditional cause-specific hazard models.
To install the package:
# Install from GitHub
::install_github("stats9/cmpp")
devtools
# for windows
## after download cmpp zip file
install.packages('cmpp_0.0.1.zip', repos = NULL, type = "win-binary")
# for linux or mac
## after download cmpp tar.gz file
install.packages('cmpp_0.0.1.tar.gz', repos = NULL, type = "source")
library(cmpp)
# Example data
<- matrix(rnorm(300, 1, 2), nrow = 100, ncol = 3)
features <- sample(c(0, 1), 100, replace = TRUE)
delta1 <- 1 - delta1
delta2 <- rexp(100, rate = 1/10)
time
# Initialize the Cmpp model
Initialize(features, time, delta1, delta2, h = 1e-5)
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
# Estimate parameters using the Generalized odds rate (GOR)
<- rep(0.001, 2 * (ncol(features) + 3))
initial_params <- rep(0.001, 2 * (ncol(features) + 2))
initial_params2 <- estimate_parameters_GOR(initial_params)
result print(result)
# Estimate parameters using the Proportional Odds Model (POM)
<- estimate_parameters_POM(initial_params2)
result_pom print(result_pom)
# Estimate parameters using the Proportional Hazards Model (PHM)
<- estimate_parameters_PHM(initial_params2)
result_phm print(result_phm)
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
# Compute CIFs for competing risks
<- CIF_res1(rep(0.001, 4))
cif_results print(cif_results)
# Plot CIFs with confidence intervals
<- CIF_Figs(rep(0.001, 4), timee)
Res print(Res)
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
# Fit a Fine-Gray model
<- FineGray_Model(
result_fg CovarNames = c("Covar1", "Covar2", "Covar3"),
Failcode = 1,
RiskNames = c("Event1", "Event2")
)print(result_fg$Results) # Summary of the Fine-Gray model
print(result_fg$Plot) # Plot of the CIFs
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
<- Cmpp_CIF(
result_cif featureID = c(1, 2),
featureValue = c(0.5, 1.2),
RiskNames = c("Event1", "Event2"),
TypeMethod = "GOR",
predTime = seq(0, 10, by = 0.5)
)print(result_cif$Plot$Plot_InputModel) # Plot for the specified model
print(result_cif$CIF$CIFAdjusted) # Adjusted CIF values
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
<- GetData()
datt
# Estimate variance of parameters using bootstrap
<- bootstrap_variance(datt$features, datt$timee,
results $delta1, datt$delta2, rep(0.001, 4), n_bootstrap = 500)
dattprint(results$variances)
print(results$bootstrap_estimates)
library(cmpp)
# Load example data
<- matrix(rnorm(300, 1, 2), nrow = 100, ncol = 3)
features <- sample(c(0, 1), 100, replace = TRUE)
delta1 <- 1 - delta1
delta2 <- rexp(100, rate = 1/10)
time
# Initialize the Cmpp model
Initialize(features, time, delta1, delta2, h = 1e-5)
# Estimate parameters
<- rep(0.001, 2 * (ncol(features) + 3))
initial_params <- estimate_parameters_GOR(initial_params)
params print(params)
# Compute CIFs
<- CIF_res1(rep(0.001, 4))
cif_results print(cif_results)
# Plot CIFs
<- CIF_Figs(rep(0.01, 4), time)
Res print(Res)
library(cmpp)
data("fertility_data")
<- names(fertility_data)
Nam $Education
fertility_data<- make_Dummy(fertility_data, features = c("Education"))
datt <- datt$New_Data
datt 'Primary_Secondary'] <- datt$`Education:2`
datt['Higher_Education'] <- datt$`Education:3`
datt[$`Education:2` <- datt$`Education:3` <- NULL
datt<- make_Dummy(datt, features = 'Event')$New_Data
datt2 <- datt2$`Event:2`
d1 <- datt2$`Event:3`
d2 <- datt2[c('age', 'Primary_Secondary', 'Higher_Education')] |>
feat data.matrix()
<- datt2[['time']]
timee Initialize(feat, timee, d1, d2, 1e-10)
<- GetData()
data print(data$features) # Feature matrix
print(data$timee) # Failure times
print(data$delta1) # Indicator for the first competing event
print(data$delta2) # Indicator for the second competing event
<- Cmpp_CIF(
result featureID = c(1, 2),
featureValue = c(0.5, 1.2),
RiskNames = c("Event1", "Event2"),
TypeMethod = "GOR",
predTime = seq(0, 10, by = 0.5)
)print(result$Plot$Plot_InputModel) # Plot for the specified model
print(result$Plot$PlotAdjusted_AllModels) # Adjusted CIFs for all models
print(result$CIF$CIFAdjusted) # Adjusted CIF values