Skip to contents

[Experimental]

This function is used to identify the efficacy boundary and futility boundary based on rules in @details.

Usage

boundsPredprob(
  looks,
  Nmax = max(looks),
  p0,
  tT,
  phiL,
  phiU,
  parE = c(1, 1),
  weights
)

Arguments

looks

(numeric):
A vector of number of patients in each look.

Nmax

(number):
maximum number of patients at the end of the trial in the E group.

p0

(number):
lower Futility threshold of response rate.

tT

(number):
threshold of which assumed truep exceeds acceptable threshold of p0.

phiL

(number):
lower threshold on the predictive probability.

phiU

(number):
upper threshold on the predictive probability.

parE

(numeric):
the beta parameters matrix, with K rows and 2 columns, corresponding to the beta parameters of the K components.

weights

(numeric):
the mixture weights of the beta mixture prior.

Value

A matrix for each same size in looks. For each sample size, the following is returned:

  • xL : the maximum number of responses that meet the futility threshold.

  • pL : response rate corresponding to xL.

  • predL : predictive probability corresponding to xL

  • postL: posterior probability corresponding to xL.

  • pL_upper_ci : upper bound of one sided 95% CI for the response rate based on an exact binomial test.

  • xU : the minimal number of responses that meet the efficacy threshold.

  • pU : response rate corresponding to xU.

  • predU : predictive probability corresponding to xU.

  • postU: posterior probability corresponding to xU.

  • pU_lower_ci : lower bound of one sided 95% CI for the response rate based on exact binomial test.

Details

see also predprob() The following rules are Decision 1 rules: Efficacy boundary: find minimum x (xU) where Pr(Pr(RR > p0 | data) >= tT | x) >= phiU, Futility boundary: find maximum x (xL) where Pr(Pr(RR > p0 | data) >= tT | x) =< phiL

Examples

# 40 pts trial with interim looks after each 10 patients.
# Final efficacy decision if more than 80% probability to be above 20% ORR,
# Final futility decision otherwise.
# Interim efficacy decision if more than 90% predictive probability reach this or
# Efficacy look Pr(Pr(RR > p0 | x, Y) >= tT | x) >= phiU,
# Interim futility decision if less than 10% predictive probability or
# Futility look Pr(Pr(RR > p0 | x, Y) >= tT | x) =< phiL
# Uniform prior (i.e. beta(1, 1)) on the ORR:
boundsPredprob(
  looks = c(10, 20, 30, 40),
  p0 = 0.20,
  tT = 0.80,
  phiL = 0.60,
  phiU = 0.90
)
#>    looks xL     pL  predL  postL pL_upper_ci xU   pU  predU  postU pU_lower_ci
#> 10    10  2 0.2000 0.4543 0.6174      0.5069  4 0.40 0.9287 0.9496      0.1500
#> 20    20  4 0.2000 0.3258 0.5860      0.4010  7 0.35 0.9600 0.9569      0.1773
#> 30    30  7 0.2333 0.4640 0.7300      0.3939  9 0.30 0.9604 0.9254      0.1663
#> 40    40  9 0.2250 0.0000 0.7040      0.3598 10 0.25 1.0000 0.8177      0.1424

# 25 pts trial with interim looks at 7 and 15 pts.
# Efficacy decision if more than 80% probability to be above 20% ORR,
# Final futility decision otherwise.
# Interim efficacy decision if more than 90% predictive probability reach this or
# Efficacy look Pr(Pr(RR > p0 | x, Y) >= tT | x) >= phiU,
# Interim futility decision if less than 60% predictive probability or
# Futility look Pr(Pr(RR > p0 | x, Y) >= tT | x) =< phi
# with mixed prior and weights:
boundsPredprob(
  looks = c(7, 15, 25),
  p0 = 0.20,
  tT = 0.80,
  phiL = 0.60,
  phiU = 0.90,
  parE = cbind(c(1, 1), c(3, 10)),
  weights = c(0.2, 0.8)
)
#>    looks xL     pL  predL  postL pL_upper_ci xU     pU  predU  postU
#> 7      7  3 0.4286 0.5342 0.7006      0.7747  5 0.7143 0.9732 0.9753
#> 15    15  5 0.3333 0.4961 0.7211      0.5774  7 0.4667 0.9748 0.9512
#> 25    25  7 0.2800 0.0000 0.6786      0.4622  8 0.3200 1.0000 0.8166
#>    pU_lower_ci
#> 7       0.3413
#> 15      0.2437
#> 25      0.1703