Fits a copula model with semi-parametric transformation margins for semi-competing risk data under interval-censoring and left-truncation.
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
)a CopulaCenR object summarizing the model.
Can be used as an input to general S3 methods including
summary, print, coef,
logLik, AIC, BIC.
a data frame; must have id (subject id), Left (0 if left-censoring for non-terminal event),
Right (Inf if right-censoring for non-terminal event), status (0 for right-censoring,
1 for interval-censoring or left-censoring of non-terminal event), timeD (observed terminal event),
statusD (for terminal event), A (left truncation time, 0 if none), and covariates by column.
the list of covariates to be fitted into the copula model.
Types of copula model, only Copula2 is supported at this stage.
for non-terminal event, the left bound for all Left and Right endpoints of observed finite intervals;
default is 0.
for non-terminal event, the right bound for all Left and Right endpoints of observed finite intervals;
has to be a finite value
for non-terminal event, integer, degree of Berstein polynomials for both margins; default is 3
for non-terminal event, postive transformation parameter for the semiparametric transformation marginal model.
for terminal event, the left bound for all Left and Right endpoints of observed finite intervals;
default is 0.
for terminal event, the right bound for all Left and Right endpoints of observed finite intervals;
has to be a finite value
for terminal event, integer, degree of Berstein polynomials for both margins; default is 3
for terminal event, postive transformation parameter for the semiparametric transformation marginal model.
optimization method (see ?optim); default is "BFGS"; also can be "Newton" (see ?nlm).
number of iterations when method is "Newton";
default is 300.
size of optimization step when method is "Newton";
default is 1e-5.
a list of control parameters for methods other than "Newton";
see ?optim.
a vector of initial values for copula parameters, default is NULL
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).
# 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)
Run the code above in your browser using DataLab