Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CompRiskReg

A Python package for competing risks regression and cumulative incidence estimation. Implements and translates the methods from the R cmprsk package.

Installation

pip install CompRiskReg

Overview

In survival analysis with competing events, standard Kaplan-Meier and Cox regression can be misleading because they treat competing events as independent censoring. This package provides two core methods designed for this setting:

  • Cumulative Incidence Function (CIF) — Aalen-Johansen estimator with Gray's K-sample test for comparing groups
  • Fine-Gray regression — Subdistribution hazard model for covariate-adjusted inference on the CIF

API and Use

cuminc

Estimates the CIF for each group-cause combination and optionally tests equality across groups using Gray's K-sample test.

importnumpyasnpfromCompRiskRegimportcuminc, timepointsrng=np.random.default_rng(42)
n=200ftime=rng.exponential(scale=1.0, size=n)
fstatus=rng.choice([0, 1, 2], size=n, p=[0.3, 0.4, 0.3])
group=rng.choice(["A", "B"], size=n)
result=cuminc(ftime, fstatus, group=group)
# Access CIF estimates for group A, cause 1curve=result["A 1"]
print(curve["time"]) # event timesprint(curve["est"]) # CIF estimatesprint(curve["var"]) # variance estimates# Gray's test comparing groups (present when >1 group)print(result["Tests"]) # columns: [test stat, p-value, df]

crr

Fits the Fine-Gray subdistribution hazard model.

fromCompRiskRegimportcrrn=200ftime=rng.exponential(scale=1.0, size=n)
fstatus=rng.choice([0, 1, 2], size=n, p=[0.3, 0.4, 0.3])
cov1=rng.standard_normal(size=(n, 2))
fit=crr(ftime, fstatus, cov1=cov1, failcode=1, cencode=0)
print(fit.coef) # estimated coefficientsprint(fit.converged) # whether Newton-Raphson converged# Summary table (coef, exp(coef), SE, z, p-value)summary=fit.summary()
print(summary["coef"])
print(summary["conf_int"])
# Predict CIF for new subjectsnew_cov=np.array([[0.5, -1.0], [1.0, 0.0]])
pred=fit.predict(cov1=new_cov)

crr also supports time-varying covariates via the cov2 and tf arguments, where tf is a callable that maps a vector of times to a covariate matrix.

Dependencies

  • Python >= 3.8
  • NumPy >= 1.20
  • SciPy >= 1.8.0

About

Translation of R's cmprsk package

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages