Computes the predicted probability of success (PoS) for a phase III clinical trial by integrating early-phase efficacy data – objective response rate (ORR) and/or progression-free survival (PFS) – with prior beliefs about study success. The prior distribution for the benchmark PoS is specified as a Beta distribution, parameterized by its mean and variance. Treatment effect estimation for ORR supports both two-arm and single-arm designs, with the latter incorporating historical control information.
Usage
gen_pos(
target_hr,
J,
nevents3,
hr_bound,
omega_mean = 0.52,
omega_var = 0.02,
est_obs_pfs,
low_obs_pfs,
upp_obs_pfs,
obs_pfs_conf_level = 0.95,
thres = 0.01,
n_trt2,
n_ctrl2,
n_resp_trt2,
n_resp_ctrl2,
low_soc_rr,
upp_soc_rr,
ci_rr = 0.8,
use_orr = FALSE,
single_arm = FALSE,
use_pfs = FALSE,
het_degree_p2 = "small",
het_degree_p3 = "very small",
ratio = 1,
indication = 6,
m_0 = NA,
m_1 = NA,
nu_0 = NA,
nu_1 = NA,
lm_sd = NA,
niter = 1000,
nchains = 1,
ncores = 1,
seed,
plots_out = FALSE,
...
)Arguments
- target_hr
target hazard ration in phase 3 study (i.e., under alternative hypothesis)
- J
number of planned analyses in phase 3 study
- nevents3
numeric vector of target number of events in phase 3 study
- hr_bound
numeric vector of hazard ratio bounds for analyses in phase 3 study
- omega_mean
Mean of the Beta prior for
omega.omegais the probability that a treatment effect comes from a enthusiastic prior component, i.e., initial benchmarking probability for the study success- omega_var
Variance of the Beta prior for
omega.- est_obs_pfs
estimated PFS hazard ratio based on prior/earlier study
- low_obs_pfs
lower bound of estimated PFS hazard ratio based on prior/earlier study
- upp_obs_pfs
upper bound of estimated PFS hazard ratio based on prior/earlier study
- obs_pfs_conf_level
confidence level for the estimated PFS hazard ratio bounds, Default: 0.95
- thres
probability of either lack treatment effect under the enthusiastic prior or substantial treatment effect under the pessimistic prior. Should be set to a small value, close to 0, Default: 0.01
- n_trt2
sample size in treatment arm from a prior/earlier study
- n_ctrl2
sample size in control arm from a prior/earlier study
- n_resp_trt2
number of responses in treatment arm from a prior/earlier study
- n_resp_ctrl2
number of responses in control arm from a prior/earlier study
- low_soc_rr
Lower bound of historical control response rate for single-arm estimation.
- upp_soc_rr
Upper bound of historical control response rate for single-arm estimation.
- ci_rr
Confidence level for control response rate bounds, Default: 0.8.
- use_orr
whether response data from a prior/earlier study should be used, Default: FALSE
- single_arm
whether ORR data is from a single-arm trial, Default: FALSE.
- use_pfs
whether PFS data from a prior/earlier study should be used, Default: FALSE
- het_degree_p2
indicates the degree of heterogeneity of a study level parameter for a prior/earlier study and must be one of "large", "substantial", "moderate", "small", "very small", Default: 'small'.
- het_degree_p3
indicates the degree of heterogeneity of a study level parameter for a phase 3 study and must be one of "large", "substantial", "moderate", "small", "very small", Default: 'very small'
- ratio
randomization ratio of experimental arm compared to control
- indication
Integer from 1 to 6 for selecting indication-specific ORR-PFS regression parameters, as follows: 1 = hematologic malignancies 2 = gynecologic cancers 3 = thoracic cancers 4 = other solid tumors 5 = breast cancer 6 = any tumor type Default: 6
- m_0
intercept for linear regression of log treatment effect of PFS on log treatment effect on response. A value is expected only when
use_orr = TRUEanduse_pfs = TRUE. Auto-filled based onindicationif not supplied.- m_1
slope for linear regression of log treatment effect of PFS on log treatment effect on response. A value is expected only when
use_orr = TRUEanduse_pfs = TRUE. Auto-filled based onindicationif not supplied.- nu_0
standard error of
m_0. A value is expected only whenuse_orr = TRUEanduse_pfs = TRUE. Auto-filled based onindicationif not supplied.- nu_1
standard error of
m_1. A value is expected only whenuse_orr = TRUEanduse_pfs = TRUE. Auto-filled based onindicationif not supplied.- lm_sd
linear regression residual variance of log treatment effect of PFS on log treatment effect on response. A value is expected only when
use_orr = TRUEanduse_pfs = TRUE. Auto-filled based onindicationif not supplied.- niter
number of iterations to be used in stan run, Default: 1000
- nchains
number of chains to be used in stan run, Default: 4
- ncores
number of cores to be used in stan run, Default: 4
- seed
seed to be used in stan run
- plots_out
whether plots for MCMC chains and autocorrelation should be printed, Default: FALSE
- ...
params to pass to stan run
Value
tibble of PoS estimates, the corresponding standard errors for
each analysis, and the posterior mean and variance for omega.
If plots_out is turned on, then the MCMC chains mixing and
autocorrelation plots are provided as well.
Examples
# Using both ORR and PFS from a prior single-arm study with a Beta prior on
# omega
gen_pos(
target_hr = 0.70,
J = 2,
nevents3 = c(370, 468),
hr_bound = c(0.7790, 0.8204),
thres = 0.01,
omega_mean = 0.3,
omega_var = 0.03,
est_obs_pfs = 0.73,
low_obs_pfs = 0.61,
upp_obs_pfs = 0.91,
use_pfs = TRUE,
n_trt2 = 100,
n_resp_trt2 = 40,
low_soc_rr = 0.05,
upp_soc_rr = 0.2,
use_orr = TRUE,
single_arm = TRUE,
ncores = 1,
nchains = 1,
seed = 222
)
#>
#> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 7e-06 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.07 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1:
#> Chain 1:
#> Chain 1: Iteration: 1 / 1000 [ 0%] (Warmup)
#> Chain 1: Iteration: 100 / 1000 [ 10%] (Warmup)
#> Chain 1: Iteration: 200 / 1000 [ 20%] (Warmup)
#> Chain 1: Iteration: 300 / 1000 [ 30%] (Warmup)
#> Chain 1: Iteration: 400 / 1000 [ 40%] (Warmup)
#> Chain 1: Iteration: 500 / 1000 [ 50%] (Warmup)
#> Chain 1: Iteration: 501 / 1000 [ 50%] (Sampling)
#> Chain 1: Iteration: 600 / 1000 [ 60%] (Sampling)
#> Chain 1: Iteration: 700 / 1000 [ 70%] (Sampling)
#> Chain 1: Iteration: 800 / 1000 [ 80%] (Sampling)
#> Chain 1: Iteration: 900 / 1000 [ 90%] (Sampling)
#> Chain 1: Iteration: 1000 / 1000 [100%] (Sampling)
#> Chain 1:
#> Chain 1: Elapsed Time: 0.015 seconds (Warm-up)
#> Chain 1: 0.011 seconds (Sampling)
#> Chain 1: 0.026 seconds (Total)
#> Chain 1:
#> Warning: There were 1 divergent transitions after warmup. See
#> https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
#> to find out why this is a problem and how to eliminate them.
#> Warning: Examine the pairs() plot to diagnose sampling problems
#> Warning: Bulk Effective Samples Size (ESS) is too low, indicating posterior means and medians may be unreliable.
#> Running the chains for more iterations may help. See
#> https://mc-stan.org/misc/warnings.html#bulk-ess
#> Warning: Tail Effective Samples Size (ESS) is too low, indicating posterior variances and tail quantiles may be unreliable.
#> Running the chains for more iterations may help. See
#> https://mc-stan.org/misc/warnings.html#tail-ess
#> # A tibble: 2 × 5
#> J pos pos_se omega_mean omega_var
#> <int> <dbl> <dbl> <dbl> <dbl>
#> 1 1 0.634 0.0215 0.350 0.0304
#> 2 2 0.748 0.0194 0.350 0.0304