Type: | Package |
Title: | Generalized Bayesian Optimal Phase II Design (G-BOP2) |
Version: | 0.1.3 |
Depends: | R (≥ 4.1.0) |
Maintainer: | Wanni Lei <wanni.lei17@gmail.com> |
Description: | Provides functions for implementing the Generalized Bayesian Optimal Phase II (G-BOP2) design using various Particle Swarm Optimization (PSO) algorithms, including: - PSO-Default, based on Kennedy and Eberhart (1995) <doi:10.1109/ICNN.1995.488968>, "Particle Swarm Optimization"; - PSO-Quantum, based on Sun, Xu, and Feng (2004) <doi:10.1109/ICCIS.2004.1460396>, "A Global Search Strategy of Quantum-Behaved Particle Swarm Optimization"; - PSO-Dexp, based on StehlĂk et al. (2024) <doi:10.1016/j.asoc.2024.111913>, "A Double Exponential Particle Swarm Optimization with Non-Uniform Variates as Stochastic Tuning and Guaranteed Convergence to a Global Optimum with Sample Applications to Finding Optimal Exact Designs in Biostatistics"; - and PSO-GO. |
Imports: | tidyr, R6, Rcpp, doParallel, foreach, dplyr, stats, globpso, parallel, utils, RcppArmadillo |
Suggests: | knitr, rmarkdown, roxygen2, testthat (≥ 3.0.0), R.rsp |
LinkingTo: | Rcpp, RcppArmadillo, RcppEigen |
Config/parallel: | false |
Config/testthat/edition: | 3 |
VignetteBuilder: | R.rsp |
License: | GPL-2 |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
NeedsCompilation: | yes |
Packaged: | 2025-04-22 14:38:06 UTC; wanni |
Author: | Xinying Fang [aut], Wanni Lei [aut, cre], Shouhao Zhou [aut] |
Repository: | CRAN |
Date/Publication: | 2025-04-22 15:50:07 UTC |
PSOGO: Power maximizing design with efficacy and toxicity boundaries
Description
This function implements PSOGO to find a power maximizing design with efficacy and toxicity boundaries.
Arguments
design |
fixed as "optimal", cannot be modified by user |
pso_method |
method for single PSO, choose from "default", "quantum" or "dexp" |
nlooks |
number of interim looks |
skip_efficacy |
default is NULL, indicate skip efficacy as 1 and not skip as 0 in a vector |
skip_toxicity |
default is NULL, indicate skip toxicity as 1 and not skip as 0 in a vector |
totalPatients |
number of total patients |
Nmin_cohort1 |
maximum number of patients |
Nmin_increase |
minimum number of first cohort |
p01 |
H0 for efficacy |
p02 |
H0 for toxicity |
p03 |
H0 for Eff and Tox |
p11 |
H1 for efficacy |
p12 |
H1 for toxicity |
p13 |
H1 for Eff and Tox |
err_eff |
Type I error rate: Efficacious but toxic |
err_tox |
Type I error rate: Safe but futile |
err_all |
Type I error rate: Futile and toxic |
power_eff |
power: Efficacious but toxic |
power_tox |
power: Safe but futile |
power_all |
power: Futile and toxic |
nSwarm |
nSwarm in PSO |
maxIter |
maxIter in PSO |
nParallel |
number of PSO ensemble |
seed |
Random seed for reproducibility |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_maxP_TE(
# design = "optimal",
# nlooks = 1,
# skip_efficacy = NULL,
# skip_toxicity = NULL,
# totalPatients = 50,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# p01 = 0.15,
# p02 = 0.16,
# p03 = 0.024,
# p11 = 0.4,
# p12 = 0.08,
# p13 = 0.032,
# err_eff = 1,
# err_tox = 1 ,
# err_all = 0.1,
# power_eff = 0.8,
# power_tox = 0.8,
# power_all = 0.8,
# nParallel = 3,
# seed = 5321,
# pso_method = "default",
# nSwarm = 32,
# maxIter = 100)
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_singleE() manually for real optimization.")
PSOGO: Power maximizing design with dual boundaries
Description
This function implements PSOGO to find a power maximizing design with dual boundaries.
Arguments
design |
fixed as "optimal", which can not be modified by user |
nlooks |
number of interim looks |
p0 |
Null hypothesis response rate |
p1 |
Alternative hypothesis response rate |
err1 |
Type I error rate |
nParallel |
number of pso ensemble |
minPower |
power |
totalPatients |
total patients |
Nmin_cohort1 |
minimum number of first cohort |
Nmin_increase |
minimum number of increase in each cohort |
pso_method |
"all" for using three distinct pso, otherwise indicate single pso method |
seed |
seed for pso |
nSwarm |
nSwarm for pso |
maxIter |
maxIter for pso |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_maxP_dualE(
# nlooks = 1,
# p0 = 0.2,
# p1 = 0.4,
# err1 = 0.05,
# minPower = 0.8,
# totalPatients = 26,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# pso_method = "default",
# nParallel = 3,
# seed = 1024,
# nSwarm = 64,
# maxIter = 200
# )
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_singleE() manually for real optimization.")
PSOGO: Power maximizing design with single boundary for futility
Description
This function implements PSOGO to find a power maximizing design with single boundary for futility.
Usage
GBOP2_maxP_singleE(
nlooks = 1,
p0 = 0.2,
p1 = 0.4,
err1 = 0.05,
minPower = 0.8,
totalPatients = 5,
Nmin_cohort1 = 1,
Nmin_increase = 1,
pso_method = "default",
nParallel = 3,
seed = 1024,
nSwarm = 64,
maxIter = 200
)
Arguments
nlooks |
number of interim looks |
p0 |
Null hypothesis response rate |
p1 |
Alternative hypothesis response rate |
err1 |
Type I error rate |
minPower |
power |
totalPatients |
total number of patients |
Nmin_cohort1 |
minimum number of first cohort |
Nmin_increase |
minimum number of increase in each cohort |
pso_method |
"all" for using three distinct pso, otherwise indicate single pso method |
nParallel |
number of pso ensemble |
seed |
Random seed for reproducibility |
nSwarm |
nSwarm for pso |
maxIter |
maxIter for pso |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_maxP_singleE(
# nlooks = 1,
# p0 = 0.2,
# p1 = 0.4,
# err1 = 0.05,
# minPower = 0.8,
# totalPatients = 26,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# pso_method = "default",
# nParallel = 3,
# seed = 1024,
# nSwarm = 64,
# maxIter = 200
# )
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_singleE() manually for real optimization.")
PSOGO: Optimal/Minimax design with efficacy and toxicity boundaries
Description
This function implements PSOGO to find an optimal or minimax design with efficacy and toxicity boundaries.
Usage
GBOP2_minSS_TE(
design = "optimal",
unified.u = 1,
nlooks = 1,
skip_efficacy = NULL,
skip_toxicity = NULL,
maxPatients = 26,
Nmin_cohort1 = 13,
Nmin_increase = 13,
p01 = 0.3,
p02 = 0.4,
p03 = 0.2,
p11 = 0.6,
p12 = 0.2,
p13 = 0.15,
err_eff = 0.1,
err_tox = 0.1,
err_all = 0.05,
power_eff = 0.8,
power_tox = 0.8,
power_all = 0.8,
pso_method = "all",
nParallel = 3,
seed = 1324,
nSwarm = 32,
maxIter = 100
)
Arguments
design |
choose from "optimal", "minimax", or "unified" |
unified.u |
specify when design = "unified", u in zero to one |
nlooks |
number of interim looks |
skip_efficacy |
default is NULL, indicate skip efficacy as 1 and not skip as 0 in a vector |
skip_toxicity |
default is NULL, indicate skip toxicity as 1 and not skip as 0 in a vector |
maxPatients |
maximum number of patients |
Nmin_cohort1 |
minimum number of first cohort |
Nmin_increase |
minimum number of increase in each cohort |
p01 |
H0 for efficacy |
p02 |
H0 for toxicity |
p03 |
H0 for Eff and Tox |
p11 |
H1 for efficacy |
p12 |
H1 for toxicity |
p13 |
H1 for Eff and Tox |
err_eff |
Type I error rate: Efficacious but toxic |
err_tox |
Type I error rate: Safe but futile |
err_all |
Type I error rate: Futile and toxic |
power_eff |
power: Efficacious but toxic |
power_tox |
power: Safe but futile |
power_all |
power: Futile and toxic |
pso_method |
"all" for using three distinct pso, otherwise indicate single pso method |
nParallel |
number of pso ensemble |
seed |
Random seed for reproducibility |
nSwarm |
nSwarm in PSO |
maxIter |
maxIter in PSO |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_minSS_TE(
# design = "optimal",
# unified.u = 1,
# nlooks = 1,
# skip_efficacy = NULL,
# skip_toxicity = NULL,
# maxPatients = 25,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# p01 = 0.3,
# p02 = 0.4,
# p03 = 0.2,
# p11 = 0.6,
# p12 = 0.2,
# p13 = 0.15,
# err_eff = 0.1,
# err_tox = 0.1,
# err_all = 0.05,
# power_eff = 0.8,
# power_tox = 0.8,
# power_all = 0.8,
# pso_method = "default",
# nParallel = 3,
# seed = 5321,
# nSwarm = 64,
# maxIter = 100
# )
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_singleE() manually for real optimization.")
PSOGO: Optimal/Minimax design with dual boundaries
Description
This function implements PSOGO to find an optimal or minimax design with dual boundaries.
Usage
GBOP2_minSS_dualE(
design = "optimal",
unified.u = unified.u,
weight = 1,
nlooks = 1,
p0 = 0.2,
p1 = 0.4,
err1 = 0.05,
minPower = 0.8,
maxPatients = 5,
Nmin_cohort1 = 1,
Nmin_increase = 1,
pso_method = "default",
nParallel = 3,
seed = 123,
nSwarm = 64,
maxIter = 200
)
Arguments
design |
choose from "optimal", "minimax", or "unified" |
unified.u |
specify when design = "unified", u in zero to one |
weight |
weight of sample size under null |
nlooks |
number of interim looks |
p0 |
Null hypothesis response rate |
p1 |
Alternative hypothesis response rate |
err1 |
Type I error rate |
minPower |
power |
maxPatients |
maximum number of patients |
Nmin_cohort1 |
minimum number of first cohort |
Nmin_increase |
minimum number of increase in each cohort |
pso_method |
"all" for using three distinct pso, otherwise indicate single pso method |
nParallel |
number of pso ensemble |
seed |
seed for pso |
nSwarm |
nSwarm for pso |
maxIter |
maxIter for pso |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_minSS_dualE(
# design = "optimal",
# unified.u = unified.u,
# nlooks = 1,
# p0 = 0.2,
# p1 = 0.4,
# err1 = 0.05,
# minPower = 0.8,
# weight = 1,
# maxPatients = 25,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# pso_method = "default",
# nParallel = 3,
# seed = 123,
# nSwarm = 64,
# maxIter = 200
# )
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_dualE() manually for real optimization.")
PSOGO: Optimal/Minimax design with single boundary for futility
Description
This function implements PSOGO to find an optimal or minimax design with single boundary for futility.
Usage
GBOP2_minSS_singleE(
design = "optimal",
unified.u = 1,
weight = 1,
nlooks = 2,
p0 = 0.2,
p1 = 0.4,
err1 = 0.05,
minPower = 0.8,
maxPatients = 5,
Nmin_cohort1 = 1,
Nmin_increase = 1,
pso_method = "default",
nParallel = 3,
seed = 456,
nSwarm = 64,
maxIter = 200
)
Arguments
design |
choose from "optimal", "minimax", or "unified" |
unified.u |
specify when design = "unified", u in zero to one |
weight |
weight of sample size under null |
nlooks |
number of interim looks |
p0 |
Null hypothesis response rate |
p1 |
Alternative hypothesis response rate |
err1 |
Type I error rate |
minPower |
power |
maxPatients |
maximum number of patients |
Nmin_cohort1 |
minimum number of first cohort |
Nmin_increase |
minimum number of increase in each cohort |
pso_method |
"all" for using three distinct pso, otherwise indicate single pso method |
nParallel |
number of pso ensemble |
seed |
Random seed for reproducibility |
nSwarm |
nSwarm for pso |
maxIter |
maxIter for pso |
Details
Parallel computing is only used when the user explicitly sets nCore > 1. No more than 2 cores should be used
unless the user is aware and permits it. The function defaults to sequential execution. If multiple analyses
are planned, consider using init_cluster(nCore)
and stop_cluster()
manually to control the backend.
Value
A list on design parameters and operating characteristics
Examples
# init_cluster(2)
# GBOP2_minSS_singleE(
# design = "optimal",
# unified.u = 1,
# nlooks = 1,
# p0 = 0.2,
# p1 = 0.4,
# err1 = 0.05,
# minPower = 0.8,
# weight = 1,
# maxPatients = 25,
# Nmin_cohort1 = 10,
# Nmin_increase = 5,
# pso_method = "default",
# nParallel = 3,
# seed = 1024,
# nSwarm = 64,
# maxIter = 200
# )
# stop_cluster() # Only if init_cluster() was used
#
message("Run GBOP2_minSS_singleE() manually for real optimization.")
Get current cluster
Description
Returns the current parallel cluster object, if initialized.
Usage
get_cluster()
Value
A cluster object or NULL.
Initialize parallel cluster
Description
Creates and registers a parallel backend using the specified number of cores. Falls back to sequential execution if nCore <= 1.
Usage
init_cluster(nCore = 2)
Arguments
nCore |
Number of cores to use (default is 2). |
Stop and clean up the cluster
Description
Stops the currently running parallel cluster and reverts to sequential execution.
Usage
stop_cluster()
Summary function Summary function for gbop2 objects
Description
Summary function Summary function for gbop2 objects
Usage
## S3 method for class 'gbop2'
summary(object, ...)
Arguments
object |
GBOP2_maxP_dualE GBOP2_maxP_singleE GBOP2_maxP_TE GBOP2_minSS_dualE GBOP2_minSS_singleE GBOP2_minSS_TE |
... |
ignored arguments |
Value
A summary table
Examples
design <- GBOP2_minSS_singleE(
design = "optimal",
unified.u = 1,
nlooks = 1,
p0 = 0.2,
p1 = 0.4,
err1 = 0.05,
minPower = 0.8,
weight = 1,
maxPatients = 25,
Nmin_cohort1 = 10,
Nmin_increase = 5,
pso_method = "default",
nParallel = 1,
seed = 1024,
nSwarm = 64,
maxIter = 200
)
summary(design)