psborrow.t2e {psBayesborrow} | R Documentation |
Simulation study of hybrid control design with Bayesian dynamic borrowing incorporating propensity score matched external control: time-to-event outcome
Description
Simulation study is conducted to assess operating characteristics of hybrid control design with Bayesian dynamic borrowing, where the concurrent control is augmented by external control. The external controls are selected from external control pool using a propensity score matching. Commensurate power prior is used for Bayesian dynamic borrowing. The time-to-event outcome is applicable.
Usage
psborrow.t2e(
n.CT, n.CC, nevent.C, n.ECp, nevent.ECp, n.EC, accrual,
out.mevent.CT, out.mevent.CC, driftHR,
cov.C, cov.cor.C, cov.EC, cov.cor.EC, cov.effect,
psmatch.cov,
method.psest="glm", method.pslink="logit",
method.whomatch, method.matching, method.psorder, n.boot=100,
analysis.cov, method.borrow,
chains=2, iter=4000, warmup=floor(iter/2), thin=1,
alternative="greater", sig.level=0.025, nsim)
Arguments
n.CT |
Number of patients in treatment group in the current trial. |
n.CC |
Number of patients in concurrent control group in the current trial. |
nevent.C |
Number of events in treatment and concurrent control group in the current trial. |
n.ECp |
Number of patients in external control pool. |
nevent.ECp |
Number of events in external control pool. |
n.EC |
Number of patients in external control. |
accrual |
Accrual rate, defined as the number of enrolled patients per month. |
out.mevent.CT |
True median time to event in treatment group in the current trial. |
out.mevent.CC |
True median time to event in concurrent control group in the current trial. |
driftHR |
Hazard ratio between concurrent and external control for which the bias should be plotted (hazard in external control divided by hazard in concurrent control). |
cov.C |
List of covariate distributions for treatment and concurrent
control group in the current trial. Continuous and binary covariate are
applicable. The continuous covariate is assumed to follow a normal
distribution; for example, specified as
|
cov.cor.C |
Matrix of correlation coefficients for each pair of covariate for treatment and concurrent control group in the current trial, specified as Gaussian copula parameter. |
cov.EC |
List of covariate distributions for external control. The
continuous covariate is assumed to follow a normal distribution; for example,
specified as |
cov.cor.EC |
Matrix of correlation coefficients for each pair of covariate for external control, specified as Gaussian copula parameter. |
cov.effect |
Vector of covariate effects on the outcome, specified as hazard ratio per one unit increase in continuous covariate or as hazard ratio between categories for binary covariate. |
psmatch.cov |
Vector of names of covariates which are used for the
propensity score matching. The names of covariates must be included in
|
method.psest |
Method of estimating the propensity score. Allowable
options include, for example, |
method.pslink |
Link function used in estimating the propensity score.
Allowable options depend on the specific |
method.whomatch |
Options of who to match. Allowable options include
|
method.matching |
Matching method. Allowable options include
|
method.psorder |
Order that the matching takes place when a nearest
neighbor matching is used. Allowable options include |
n.boot |
Number of bootstrap sampling, which must be specified when
|
analysis.cov |
Vector of names of covariates which are used for the
Bayesian analysis with commensurate prior. The names of covariates must be
included in |
method.borrow |
List of information borrowing method. |
chains |
Number of Markov chains in MCMC sampling. The default value is
|
iter |
Number of iterations for each chain (including warmup) in MCMC
sampling. The default value is |
warmup |
Number of warmup (burnin) iterations per chain in MCMC
sampling. The default value is |
thin |
Period for saving samples in MCMC sampling. The default value
is |
alternative |
Alternative hypothesis to be tested ("greater" or "less").
The default value is |
sig.level |
Significance level. The default value is
|
nsim |
Number of simulated trials. |
Details
The simulation study consists of three part: data generation
conducted by trial.simulation.t2e
function, propensity score matching
conducted by psmatch
function, and Bayesian analysis with commensurate
prior conducted by commensurate.t2e
function. Users can specify
different sets of covariates for the propensity score matching and the
Bayesian analysis.
Value
The psborrow.t2e
returns a list containing the following objects:
reject |
Data frame containing results of Bayesian one-sided hypothesis
testing (whether or not the posterior probability that the log hazard ratio
is greater or less than 0 exceeds 1 minus significance level): |
theta |
Data frame containing posterior mean, median, and sd of log hazard ratio. |
ov |
Data frame containing (1) overlapping coefficient of propensity score densities between treatment versus concurrent control plus external control and between concurrent control versus external control, (2) overlapping coefficient of continuous covariate densities between treatment versus concurrent control plus external control and between concurrent control versus external control, and (3) rate difference of binary covariate between treatment versus concurrent control plus external control and between concurrent control versus external control. |
n.CT |
Number of patients in treatment group in the current trial. |
n.CC |
Number of patients in concurrent control group in the current trial. |
n.ECp |
Number of patients in external control pool. |
n.EC |
Number of patients in external control. |
drift |
Hazard ratio between concurrent and external control. |
true.theta |
True log hazard ratio |
method.psest |
Method of estimating the propensity score. |
method.pslink |
Link function used in estimating the propensity score. |
method.whomatch |
Option of who to match. |
method.matching |
Propensity score matching method. |
method.psorder |
Order that the matching takes place when a nearest neighbor matching is used. |
Examples
n.CT <- 100
n.CC <- 50
nevent.C <- 100
n.ECp <- 200
nevent.ECp <- 180
n.EC <- 50
accrual <- 16
out.mevent.CT <- 6
out.mevent.CC <- 6
driftHR <- 1
cov.C <- list(list(dist="norm",mean=0,sd=1,lab="cov1"),
list(dist="binom",prob=0.4,lab="cov2"))
cov.cor.C <- rbind(c( 1,0.1),
c(0.1, 1))
cov.EC <- list(list(dist="norm",mean=0,sd=1,lab="cov1"),
list(dist="binom",prob=0.4,lab="cov2"))
cov.cor.EC <- rbind(c( 1,0.1),
c(0.1, 1))
cov.effect <- c(0.9,0.9)
psmatch.cov <- c("cov1","cov2")
method.whomatch <- "conc.treat"
method.matching <- "optimal"
method.psorder <- NULL
analysis.cov <- c("cov1")
method.borrow <- list(list(prior="noborrow"),
list(prior="normal",scale=0.5))
nsim <- 5
psborrow.t2e(
n.CT=n.CT, n.CC=n.CC, nevent.C=nevent.C,
n.ECp=n.ECp, nevent.ECp=nevent.ECp, n.EC=n.EC, accrual=accrual,
out.mevent.CT=out.mevent.CT, out.mevent.CC=out.mevent.CC, driftHR=driftHR,
cov.C=cov.C, cov.cor.C=cov.cor.C,
cov.EC=cov.EC, cov.cor.EC=cov.cor.EC, cov.effect=cov.effect,
psmatch.cov=psmatch.cov, method.whomatch=method.whomatch,
method.matching=method.matching, method.psorder=method.psorder,
analysis.cov=analysis.cov, method.borrow=method.borrow,
chains=1, iter=100, nsim=nsim)