The splineCox
package provides functions for fitting
spline-based Cox regression models. These models allow for flexible
baseline hazard shapes and efficient model selection based on
log-likelihood. The package supports predefined baseline hazard shapes
as well as user-defined numeric vectors, which are normalized to have an
L1 norm of 1.
## Warning: package 'joint.Cox' was built under R version 4.2.3
## Loading required package: survival
The dataOvarian
dataset from the joint.Cox
package contains time-to-event data, event indicators, and covariates
for ovarian cancer patients.
## t.event event t.death death group CXCL12
## GSM432220 1650 0 1650 0 4 1.3059416
## GSM432221 30 1 30 1 4 1.2862164
## GSM432222 720 0 720 0 4 -1.3690315
## GSM432223 450 1 780 0 4 1.6132696
## GSM432224 510 1 990 1 4 0.6115144
## GSM432225 1110 0 1110 0 4 -0.5214953
We fit a spline-based Cox regression model using three predefined baseline hazard shapes: “constant”, “increase”, and “decrease”.
# Define variables
t.event <- dataOvarian$t.event
event <- dataOvarian$event
Z <- dataOvarian$CXCL12
M <- c("constant", "increase", "decrease")
# Fit the model
reg2 <- splineCox.reg2(t.event, event, Z, model = M, plot = TRUE)
## $model
## [1] "constant"
##
## $parameter
## [1] 0.125 0.250 0.250 0.250 0.125
##
## $beta
## estimate SE Lower Upper
## 0.21342140 0.04250986 0.13010207 0.29674073
##
## $gamma
## estimate SE Lower Upper
## 4.8603503 0.2037146 4.4610697 5.2596309
##
## $loglik
## LogLikelihood AIC BIC
## -4603.751 9211.501 9221.323
##
## $other_loglik
## Loglikelihodd
## increase -4629.807
## decrease -4611.546
The package also allows users to specify custom numeric vectors to define the baseline hazard shape. These vectors will be normalized to have an L1 norm of 1.
# Define custom numeric vectors for baseline hazard shapes
custom_models <- list(c(0.1, 0.2, 0.3, 0.2, 0.2), c(0.2, 0.3, 0.3, 0.1, 0.1))
# Fit the model
reg2_custom <- splineCox.reg2(t.event, event, Z, model = custom_models, plot = TRUE)
## $model
## [1] 0.2 0.3 0.3 0.1 0.1
##
## $parameter
## [1] 0.2 0.3 0.3 0.1 0.1
##
## $beta
## estimate SE Lower Upper
## 0.20680947 0.04245562 0.12359645 0.29002249
##
## $gamma
## estimate SE Lower Upper
## 3.4358301 0.1440085 3.1535735 3.7180866
##
## $loglik
## LogLikelihood AIC BIC
## -4601.307 9206.615 9216.436
##
## $other_loglik
## Loglikelihodd
## c(0.1, 0.2, 0.3, 0.2, 0.2) -4611.873
The output of the model includes: - The best-fitting baseline hazard
shape or normalized custom vector. - Estimates for the regression
coefficients (beta
) and the baseline hazard scale parameter
(gamma
). - Log-likelihood for model selection. - A plot of
the estimated baseline hazard function with 95% confidence intervals (if
plot = TRUE
).
Below are the results from the predefined shapes example:
## $model
## [1] "constant"
##
## $parameter
## [1] 0.125 0.250 0.250 0.250 0.125
##
## $beta
## estimate SE Lower Upper
## 0.21342140 0.04250986 0.13010207 0.29674073
##
## $gamma
## estimate SE Lower Upper
## 4.8603503 0.2037146 4.4610697 5.2596309
##
## $loglik
## LogLikelihood AIC BIC
## -4603.751 9211.501 9221.323
##
## $other_loglik
## Loglikelihodd
## increase -4629.807
## decrease -4611.546
And here are the results from the custom numeric vectors example:
## $model
## [1] 0.2 0.3 0.3 0.1 0.1
##
## $parameter
## [1] 0.2 0.3 0.3 0.1 0.1
##
## $beta
## estimate SE Lower Upper
## 0.20680947 0.04245562 0.12359645 0.29002249
##
## $gamma
## estimate SE Lower Upper
## 3.4358301 0.1440085 3.1535735 3.7180866
##
## $loglik
## LogLikelihood AIC BIC
## -4601.307 9206.615 9216.436
##
## $other_loglik
## Loglikelihodd
## c(0.1, 0.2, 0.3, 0.2, 0.2) -4611.873
The splineCox
package (version 0.0.4 and later) provides
the spline.copula
function, which implements a flexible
B-spline copula model based on the five-parameter M-spline basis. This
allows users to model dependence structures between two variables on the
unit square \([0, 1]^2\), supporting
both the copula density and distribution
function.
R
) with various built-in
presets (e.g., independence, positive/negative dependence, tail
dependence, etc.).joint.Cox
package’s
M.spline
and I.spline
basis functions for
computation.Below is an example illustrating how to visualize the density of the independence copula and a positively dependent copula.
library(ggplot2)
N <- 50
u <- v <- seq(from = 0, to = 1, length.out = N)
U <- rep(u, N)
V <- rep(v, each = N)
# Positive Exchangeable
c.data <- data.frame(
U = U, V = V,
C = spline.copula(U, V, R = "PE1", density = TRUE, mat = FALSE)
)
ggplot(aes(x=U, y=V), data=c.data) +
geom_contour(aes(x=U,y=V,z=C,colour=after_stat(level)),
data=c.data,bins=25)+xlab("u")+ylab("v")
# Negative Exchangeable
c.data <- data.frame(
U = U, V = V,
C = spline.copula(U, V, R = "NE3", density = TRUE, mat = FALSE)
)
ggplot(aes(x=U, y=V), data=c.data) +
geom_contour(aes(x=U,y=V,z=C,colour=after_stat(level)),
data=c.data,bins=25)+xlab("u")+ylab("v")