ic_scmprisk_spTran_copula {CopulaCenR} | R Documentation |
Copula regression models with semi-parametric transformation margins for semi-competing risk data under interval-censoring and left-truncation
Description
Fits a copula model with semi-parametric transformation margins for semi-competing risk data under interval-censoring and left-truncation.
Usage
ic_scmprisk_spTran_copula(
data,
var_list,
copula = "Copula2",
l1 = 0,
u1,
m1 = 3,
r1 = 1,
l2 = 0,
u2,
m2 = 3,
r2 = 1,
method = "BFGS",
iter = 1000,
stepsize = 1e-05,
control = list(),
eta_ini = NULL
)
Arguments
data |
a data frame; must have |
var_list |
the list of covariates to be fitted into the copula model. |
copula |
Types of copula model, only Copula2 is supported at this stage. |
l1 |
for non-terminal event, the left bound for all |
u1 |
for non-terminal event, the right bound for all |
m1 |
for non-terminal event, integer, degree of Berstein polynomials for both margins; default is 3 |
r1 |
for non-terminal event, postive transformation parameter for the semiparametric transformation marginal model. |
l2 |
for terminal event, the left bound for all |
u2 |
for terminal event, the right bound for all |
m2 |
for terminal event, integer, degree of Berstein polynomials for both margins; default is 3 |
r2 |
for terminal event, postive transformation parameter for the semiparametric transformation marginal model. |
method |
optimization method (see ?optim); default is "BFGS"; also can be "Newton" (see ?nlm). |
iter |
number of iterations when method is |
stepsize |
size of optimization step when method is |
control |
a list of control parameters for methods other than |
eta_ini |
a vector of initial values for copula parameters, default is NULL |
Details
The input data must be a data frame. with columns id
(sample id),
Left
(0 if left-censoring), Right
(Inf if right-censoring),
status
(0 for right-censoring, 1 for interval-censoring or left-censoring),
timeD
(for terminal event), statusD
,A
(0 if no left truncation),
and covariates
. The function does not allow Left
== Right
.
The supported copula model in this version is "Copula2"
.
The "Copula2"
model is a two-parameter copula model that incorporates Clayton
and Gumbel
as special cases.
The parametric generator functions of copula functions are list below:
The Two-parameter copula (Copula2) has a generator
\phi_{\eta}(t) = \{1/(1+t^{\alpha})\}^{\kappa},
with \alpha \in (0,1], \kappa > 0
and Kendall's \tau = 1-2\alpha\kappa/(2\kappa+1)
.
The marginal semiparametric transformation models are built based on Bernstein polynomials, which is formulated below:
S(t|Z) = \exp[-G\{\Lambda(t) e^{Z^{\top}\beta}\}],
where t
is time, Z
is covariate,
\beta
is coefficient and \Lambda(t)
is an unspecified function with infinite dimensions.
We approximate \Lambda(t)
in a sieve space constructed by Bernstein polynomials with degree m
. By default, m=3
.
In the end, all model parameters are estimated by the sieve estimators (Sun and Ding, In Press).
The G(\cdot)
function is the transformation function with a parameter r > 0
, which has a form of
G(x) = \frac{(1+x)^r - 1}{r}
, when 0 < r \leq 2
and G(x) = \frac{\log\{1 + (r-2)x\}}{r - 2}
when r > 2
.
When r = 1
, the marginal model becomes a proportional hazards model;
when r = 3
, the marginal model becomes a proportional odds model.
In practice, m
and r
can be selected based on the AIC value.
Optimization methods can be all methods (except "Brent"
) from optim
, such as
"Nelder-Mead"
, "BFGS"
, "CG"
, "L-BFGS-B"
, "SANN"
.
Users can also use "Newton"
(from nlm
).
Value
a CopulaCenR
object summarizing the model.
Can be used as an input to general S3
methods including
summary
, print
, coef
,
logLik
, AIC
, BIC
.
Source
Tao Sun, Yunlong Li, Zhengyan Xiao, Ying Ding, Xiaojun Wang (2022). Semiparametric copula method for semi-competing risks data subject to interval censoring and left truncation: Application to disability in elderly. Statistical Methods in Medical Research (Accepted).
Examples
# fit a Copula2-Semiparametric model
data("data_scmprisk")
copula2_sp <- ic_scmprisk_spTran_copula(data = data_scmprisk,
var_list = c("x1"), copula = "Copula2",
l1=0, u1 = 21, m1 = 3, r1 = 1,
l2=0, u2 = 21, m2 = 3, r2 = 1,
)
summary(copula2_sp)