The CoxAalenCR package implements the
additive-multiplicative Cox-Aalen subdistribution hazard regression
model for competing risks data as developed by Li and Long (2019). The
package offers:
Let \(T_i = \min(\tilde{T}_i, C_i)\) be the observed time, \(\Delta_i = I(\tilde{T}_i \le C_i)\) the censoring indicator, and \(\varepsilon_i \in \{1, 2\}\) the cause of failure. The subdistribution hazard for cause 1 (the event of interest) is:
\[\lambda_1(t; X, Z) = (\alpha^T(t)X) \exp(\beta^T Z)\]
where: - \(X\) is a \(q \times 1\) vector of additive covariates with time-varying effects \(\alpha(t)\), - \(Z\) is a \(p \times 1\) vector of multiplicative covariates with constant effects \(\beta\).
The cumulative incidence function (CIF) for cause 1 is:
\[F_1(t; X, Z) = 1 - \exp\left\{-\int_0^t (\alpha^T(u)X) \exp(\beta^T Z) du\right\}\]
We simulate a dataset under the Cox censoring scenario with 20% censoring:
set.seed(123)
dat <- simulate_coxaalen(
n = 150,
p = 0.3,
alpha = 1.0,
beta1 = 1.0,
beta2 = 1.0,
censoring = "cox",
cens_rate = 0.20
)
head(dat)
#> time status X Z W
#> 1 0.003154266 2 0.2875775 0.8474532 0.8474532
#> 2 0.745514750 1 0.7883051 0.4975273 0.4975273
#> 3 0.457827643 1 0.4089769 0.3879090 0.3879090
#> 4 0.004339406 1 0.8830174 0.2464490 0.2464490
#> 5 0.410499488 1 0.9404673 0.1110965 0.1110965
#> 6 0.563480914 1 0.0455565 0.3899944 0.3899944
table(dat$status)
#>
#> 0 1 2
#> 26 88 36The package provides a formula interface where additive and
multiplicative covariates are separated by |:
fit <- cox_aalen(
formula = survival::Surv(time, status) ~ X | Z,
data = dat,
W = ~ W,
weight_type = "cox"
)
summary(fit)
#> =================================================================
#> Cox-Aalen Subdistribution Hazard Model for Competing Risks
#> =================================================================
#> Weight type : cox
#> Sample size (n) : 150
#> Additive covariates : 2
#> Multiplicative covariates: 1
#> Max follow-up time (tau): 4.8139
#> Convergence : TRUE (in 3 iterations)
#>
#> ----- Multiplicative Coefficients (beta) ------------------------
#> Estimate StdErr z_value p_value
#> Z 0.3845 0.3836 1.0025 0.3161
#>
#> ----- Cumulative Additive Coefficients A(t) (selected quantiles) -
#> (Intercept) X
#> t=0 -0.0075 0.0260
#> t=0.084 0.0060 0.2684
#> t=0.328 0.0450 0.5370
#> t=0.888 0.0808 1.0385
#> t=4.814 0.4216 1.8449
#>
#> ----- Censoring Model Coefficients (gamma) ----------------------
#> Estimate StdErr
#> W 1.3803 0.7234We can test whether the effect of covariate \(X\) is indeed time-varying using the supremum test:
set.seed(123)
test_res <- time_varying_test(fit, B = 100)
print(test_res)
#> Goodness-of-Fit Test for Time-Varying Covariate Effects
#> Resampling iterations (B): 100
#>
#> Covariate Sup_Stat p_value_sup CvM_Stat p_value_cvm
#> 1 (Intercept) 0.3806 0.01 0.0910 0.04
#> 2 X 0.7037 0.04 0.6132 0.02
#>
#> Note: Low p-values (< 0.05) reject constant effects in favor of time-varying effects.We predict cumulative incidence functions for subjects with different covariate values:
new_profiles <- data.frame(
X = c(0.2, 0.8),
Z = c(0.5, 0.5)
)
pred <- predict(fit, newdata = new_profiles, se.fit = TRUE)
# Plot predicted CIF curves
plot_cif(fit, newdata = cbind(1, new_profiles$X), newZ = matrix(new_profiles$Z, ncol = 1))The package includes the clinical trial dataset of 641 women aged 50 or older with early breast cancer:
data(tamoxifen)
head(tamoxifen)
#> time status age pathsize treatment
#> 1 0.87 2 78.7 1.11 1
#> 2 8.38 0 61.4 0.10 1
#> 3 2.20 2 69.7 2.06 1
#> 4 10.52 0 72.1 0.32 1
#> 5 9.41 0 70.1 0.51 0
#> 6 9.40 0 65.5 0.10 0
table(tamoxifen$status)
#>
#> 0 1 2
#> 490 52 99
# Fit Cox-Aalen model with age and treatment in additive part and pathsize in multiplicative part
fit_tam <- cox_aalen(
formula = survival::Surv(time, status) ~ age + treatment | pathsize,
data = tamoxifen,
W = ~ age,
weight_type = "cox"
)
summary(fit_tam)
#> =================================================================
#> Cox-Aalen Subdistribution Hazard Model for Competing Risks
#> =================================================================
#> Weight type : cox
#> Sample size (n) : 641
#> Additive covariates : 3
#> Multiplicative covariates: 1
#> Max follow-up time (tau): 10.38
#> Convergence : TRUE (in 3 iterations)
#>
#> ----- Multiplicative Coefficients (beta) ------------------------
#> Estimate StdErr z_value p_value
#> pathsize 0.0572 0.148 0.3868 0.6989
#>
#> ----- Cumulative Additive Coefficients A(t) (selected quantiles) -
#> (Intercept) age treatment
#> t=0.87 0.0015 0e+00 0.0029
#> t=3.67 0.0344 -1e-04 -0.0060
#> t=5.81 -0.0141 9e-04 -0.0048
#> t=8.56 0.0431 8e-04 -0.0203
#> t=10.38 0.2092 0e+00 -0.0497
#>
#> ----- Censoring Model Coefficients (gamma) ----------------------
#> Estimate StdErr
#> age -8e-04 0.0053