| Type: | Package |
| Title: | A Pairwise Likelihood Augmented Cox Estimator for Left-Truncated Data |
| Version: | 0.1.3 |
| Description: | A semi-parametric estimation method for the Cox model with left-truncated data using augmented information from the marginal of truncation times. |
| Depends: | R (≥ 3.2.0), survival (≥ 2.38-3) |
| Imports: | Rcpp (≥ 0.12.1), |
| Suggests: | testthat |
| License: | GPL (≥ 3) |
| URL: | https://github.com/942kid/plac |
| BugReports: | https://github.com/942kid/plac/issues |
| LinkingTo: | Rcpp, RcppEigen |
| RoxygenNote: | 7.2.3 |
| Encoding: | UTF-8 |
| NeedsCompilation: | yes |
| Packaged: | 2023-07-02 03:47:49 UTC; uuoofan |
| Author: | Fan Wu [aut, cre] |
| Maintainer: | Fan Wu <fannwu@umich.edu> |
| Repository: | CRAN |
| Date/Publication: | 2023-07-02 04:00:02 UTC |
A Package for Computating the Pairwise Likelihood Augmented Cox Estimator for Left-Truncated Data.
Description
This package provides both lower-level C++ functions (PLAC_TI(), PLAC_TV() and PLAC_TvR()) and an R wrapper function PLAC() to calculate the pairwise likelihood augmented Cox estimator for left-truncated survival data as proposed by Wu et al. (2018).
Wrapper Function PLAC()
This R wrapper function calls different C++ function depending on the covariate types data has.
C++ Functions
The three C++ functions PLAC_TI(), PLAC_TV() and PLAC_TvR() provide a direct interface to the algorithm in case that users need to supply more flexible time-dependent coavriates other than indicator functions.
References
Wu, F., Kim, S., Qin, J., Saran, R., & Li, Y. (2018). A pairwise likelihood augmented Cox estimator for left‐truncated data. Biometrics, 74(1), 100-108.
Calculate the PLAC estimator when a time-dependent indicator presents
Description
Both a conditional approach Cox model and a pairwise likelihood augmented estimator are fitted and the corresponding results are returned in a list.
Usage
PLAC(
ltrc.formula,
ltrc.data,
id.var = "ID",
td.type = "none",
td.var = NULL,
t.jump = NULL,
init.val = NULL,
max.iter = 100,
print.result = TRUE,
...
)
Arguments
ltrc.formula |
a formula of of the form |
ltrc.data |
a data.frame of the LTRC dataset including the responses, time-invariate covariates and the jump times for the time-depnencent covariate. |
id.var |
the name of the subject id in |
td.type |
the type of the time-dependent covariate. Either one of
|
td.var |
the name of the time-dependent covariate in the output. |
t.jump |
the name of the jump time variable in |
init.val |
a list of the initial values of the coefficients and the baseline hazard function for the PLAC estimator. |
max.iter |
the maximal number of iteration for the PLAC estimator |
print.result |
logical, if a brief summary of the regression coefficient estiamtes should be printed out. |
... |
other arguments |
Details
ltrc.formula should have the same form as used in
coxph(); e.g., Surv(A, Y, D) ~ Z1 + Z2. where (A, Y,
D) are the truncation time, the survival time and the status indicator
((tstart, tstop, event) as in coxph).
td.type is used to determine which C++ function will be
invoked: either PLAC_TI (if td.type = "none"), PLAC_TD
(if td.type = "independent") or PLAC_TDR) (if td.type
%in% c("post-trunc", "pre-post-trunc")). For td.type =
"post-trunc", the pre-truncation values for the time-dependent covariate
will be set to be zero for all subjects.
Value
a list of model fitting results for both conditional approach and the PLAC estimators.
Event.TimeOrdered distinct observed event times
bRegression coefficients estiamtes
se.bModel-based SEs of the regression coefficients estiamtes
H0Estimated cumulative baseline hazard function
se.H0Model-based SEs of the estimated cumulative baseline hazard function
sandwichThe sandwich estimator for (beta, lambda)
kThe number of iteration for used for the PLAC estimator
summA brief summary of the covariates effects
References
Wu, F., Kim, S., Qin, J., Saran, R., & Li, Y. (2018). A pairwise likelihood augmented Cox estimator for left‐truncated data. Biometrics, 74(1), 100-108.
Examples
# When only time-invariant covariates are involved
dat1 = sim.ltrc(n = 40)$dat
PLAC(ltrc.formula = Surv(As, Ys, Ds) ~ Z1 + Z2,
ltrc.data = dat1, td.type = "none")
# When there is a time-dependent covariate that is independent of the truncation time
dat2 = sim.ltrc(n = 40, time.dep = TRUE,
distr.A = "binomial", p.A = 0.8, Cmax = 5)$dat
PLAC(ltrc.formula = Surv(As, Ys, Ds) ~ Z,
ltrc.data = dat2, td.type = "independent",
td.var = "Zv", t.jump = "zeta")
# When there is a time-dependent covariate that depends on the truncation time
dat3 = sim.ltrc(n = 40, time.dep = TRUE, Zv.depA = TRUE, Cmax = 5)$dat
PLAC(ltrc.formula = Surv(As, Ys, Ds) ~ Z,
ltrc.data = dat3, td.type = "post-trunc",
td.var = "Zv", t.jump = "zeta")
C++ Function for Solving the PLAC Estimator. (with time-dependent convariates independent of A^*)
Description
C++ Function for Solving the PLAC Estimator. (with time-dependent convariates independent of A^*)
Usage
PLAC_TD(Z, ZFV_, X, W, Ind1, Ind2, Dn, b, h, K = 100L)
Arguments
Z |
matrix for all the covariates history. |
ZFV_ |
matrix for all covariates at the each individual's observed survival time. |
X |
the response matrix (As, Xs, Ds). |
W |
the ordered observed event times. |
Ind1 |
risk-set indicators. |
Ind2 |
truncation pair indicators. |
Dn |
number of ties at each observed event time. |
b |
initial values of the regression coefficients. |
h |
initial values of the baseline hazard function. |
K |
maximal iteration number, the default is |
Value
list of model fitting results for both conditional approach and the PLAC estimator.
C++ Function for Solving the PLAC Estimator. (with time-dependent convariates depending on A^*)
Description
C++ Function for Solving the PLAC Estimator. (with time-dependent convariates depending on A^*)
Usage
PLAC_TDR(ZF, ZFV_, Z, X, W, Ind1, Ind2, Dn, b, h, K = 100L)
Arguments
ZF |
matrix for all the time-invariant covariates. |
ZFV_ |
matrix for all covariates at the each individual's observed survival time. |
Z |
matrix for all the covariates history. |
X |
the response matrix (As, Xs, Ds). |
W |
the ordered observed event times. |
Ind1 |
risk-set indicators. |
Ind2 |
truncation pair indicators. |
Dn |
number of ties at each observed event time. |
b |
initial values of the regression coefficients. |
h |
initial values of the baseline hazard function. |
K |
maximal iteration number, the default is |
Value
list of model fitting results for both conditional approach and the PLAC estimator.
C++ Function for Solving the PLAC Estimator. (with time-invariant convariates only)
Description
C++ Function for Solving the PLAC Estimator. (with time-invariant convariates only)
Usage
PLAC_TI(Z, X, W, Ind1, Ind2, Dn, b, h, K = 100L)
Arguments
Z |
matrix for all the covariates history. |
X |
the response matrix (As, Xs, Ds). |
W |
the ordered observed event times. |
Ind1 |
risk-set indicators. |
Ind2 |
truncation pair indicators. |
Dn |
number of ties at each observed event time. |
b |
initial values of the regression coefficients. |
h |
initial values of the baseline hazard function. |
K |
maximal iteration number, the default is |
Value
list of model fitting results for both conditional approach and the PLAC estimator.
Generate truncation-pair indicators
Description
Generate truncation-pair indicators
Usage
PwInd(X, W)
Arguments
X |
the response matrix (As, Xs, Ds). |
W |
the ordered observed event times. |
Value
the truncation-pair indicators of the form I(w_k <= A_i)
I(w_k <= XA_j).
Generate risk-set indicators
Description
Generate risk-set indicators
Usage
SgInd(X, W)
Arguments
X |
the response matrix (As, Xs, Ds). |
W |
the ordered observed event times. |
Value
risk-set indicators Y_i(w_k) of the form I(A_i <= w_k <= X_i).
Generate time-depependent covariate indicators
Description
Generate time-depependent covariate indicators
Usage
TvInd(zeta, W)
Arguments
zeta |
the change point (jump time) of Z_v(t). |
W |
the ordered observed event times. |
Value
the time-depependent covariate of the form Z_v(t) = I(w_k > zeta).
Generate time-depependent covariate indicators
Description
Generate time-depependent covariate indicators
Usage
TvInd2(eta, zeta, W)
Arguments
eta |
a random variable of the Z_v(t) value before the change point. |
zeta |
the change point (jump time). |
W |
the ordered observed event times. |
Value
the time-depependent covariate indicators of the form Z_v(t) = eta * I(w_k <= zeta).
Calulate the Values of the cumulative Hazard at Fixed Times
Description
Calulate the Values of the cumulative Hazard at Fixed Times
Usage
cum.haz(est, t.eval = c(0.25, 0.75))
Arguments
est |
an object of the class |
t.eval |
time points at which the Lambda(t) is evaluated (for both conditional apporach and the PLAC estimator). |
Value
a list containing the estiamtes and SEs of Lambda(t) for both conditional apporach and the PLAC estimator.
Examples
dat1 = sim.ltrc(n = 50)$dat
est = PLAC(ltrc.formula = Surv(As, Ys, Ds) ~ Z1 + Z2,
ltrc.data = dat1, td.type = "none")
H = cum.haz(est, t.eval = seq(0.1, 0.9, 0.1))
H$L
H$se.L
Perform the paired log-rank test.
Description
Perform the paired log-rank test on the truncation times and the residual survival times to check the stationarity assumption (uniform truncation assumption) of the left-truncated right-censored data.
Usage
plr(dat, A.name = "As", Y.name = "Ys", D.name = "Ds")
Arguments
dat |
a data.frame of left-truncated right-censored data. |
A.name |
the name of the truncation time variable in |
Y.name |
the name of the survival time variable in |
D.name |
the name of the event indicator in |
Value
a list containing the test statistic and the p-value of the paired log-rant test.
References
Jung, S.H. (1999). Rank tests for matched survival data. Lifetime Data Analysis, 5(1):67-79.
Examples
dat = sim.ltrc(n = 50, distr.A = "weibull")$dat
plr(dat)
Generate left-truncated (and right-cencored) data from the Cox model.
Description
Various baseline survival functions and truncation distribution are
available. Censoring rate can be designated through tuning the parameter
Cmax; Cmas = Inf means no censoring.
Usage
sim.ltrc(
n = 200,
b = c(1, 1),
Z.type = c("C", "B"),
time.dep = FALSE,
Zv.depA = FALSE,
A.depZ = FALSE,
distr.T = "weibull",
shape.T = 2,
scale.T = 1,
meanlog.T = 0,
sdlog.T = 1,
distr.A = "weibull",
shape.A = 1,
scale.A = 5,
p.A = 0.3,
b.A = c(0, 0),
Cmax = Inf,
fix.seed = NULL
)
Arguments
n |
the sample size. |
b |
a numeric vector for true regression coefficients. |
Z.type |
a vector indicating the type of the time-invariant covariates;
|
time.dep |
logical, whether there is the time-dependent covariate (only one indicator function Zv = I(t >= zeta) is supported); the default is FALSE. |
Zv.depA |
logical, whether the time-dependent covariate |
A.depZ |
logical, whether the truncation times depends on the covariate Z. |
distr.T |
the baseline survival time (T*) distribution ("exp" or "weibull"). |
shape.T |
the shape parameter for the Weibull distribution of T*. |
scale.T |
the scale parameter for the Weibull distributiof of T*. |
meanlog.T |
the mean for the log-normal distribution of T*. |
sdlog.T |
the sd for the log-normal distribution of T*. |
distr.A |
the baseline truncation time (A*) distribution: either of
|
shape.A |
the shape parameter for the Weibull distribution of A*. |
scale.A |
the scale parameter for the Weibull distribution of A*. |
p.A |
the success probability for the binomial distribution of A*. |
b.A |
the vector of coefficients for the model of A on the covariates. |
Cmax |
the upper bound of the uniform distribution of the censoring time (C). |
fix.seed |
an optional random seed for simulation. |
Value
a list with a data.frame containing the biased sample of
survival times (Ys) and truncation times (As),
the event indicator (Ds) and the covariates (Zs);
a vector of certain quantiles of Ys (taus);
the censoring proportion (PC) and the truncation proportion
(PT).
Examples
# With time-invariant covariates only
sim1 = sim.ltrc(n = 40)
head(sim1$dat)
# With one time-dependent covariate
sim2 = sim.ltrc(n = 40, time.dep = TRUE,
distr.A = "binomial", p.A = 0.8, Cmax = 5)
head(sim2$dat)
# With one time-dependent covariate with dependence on the truncation time
sim3 = sim.ltrc(n = 40, time.dep = TRUE, Zv.depA = TRUE, Cmax = 5)
head(sim3$dat)