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.Time
Ordered distinct observed event times
b
Regression coefficients estiamtes
se.b
Model-based SEs of the regression coefficients estiamtes
H0
Estimated cumulative baseline hazard function
se.H0
Model-based SEs of the estimated cumulative baseline hazard function
sandwich
The sandwich estimator for (beta, lambda)
k
The number of iteration for used for the PLAC estimator
summ
A 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)