| 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)