Package 'PoPdesign'

Title: Posterior Predictive (PoP) Design for Phase I Clinical Trials
Description: The primary goal of phase I clinical trials is to find the maximum tolerated dose (MTD). To reach this objective, we introduce a new design for phase I clinical trials, the posterior predictive (PoP) design. The PoP design is an innovative model-assisted design that is as simply as the conventional algorithmic designs as its decision rules can be pre-tabulated prior to the onset of trial, but is of more flexibility of selecting diverse target toxicity rates and cohort sizes. The PoP design has desirable properties, such as coherence and consistency. Moreover, the PoP design provides better empirical performance than the BOIN and Keyboard design with respect to high average probabilities of choosing the MTD and slightly lower risk of treating patients at subtherapeutic or overly toxic doses.
Authors: Chenqi Fu [aut], Xinying Fang [aut, cre], Shouhao Zhou [aut]
Maintainer: Xinying Fang <[email protected]>
License: GPL-2
Version: 1.1.0
Built: 2024-10-29 06:34:54 UTC
Source: CRAN

Help Index


Generate the dose escalation and de-escalation boundaries for single-agent trials.

Description

Use this function to generate the dose escalation and deescalation boundaries for single-agent trials.

Usage

get.boundary.pop(target, n, cohortsize, cutoff, K, cutoff_e)

Arguments

target

the target DLT rate

n

total sample size

cohortsize

the cohort size

cutoff

the cutoff for the predictive Bayes Factor (PrBF). Users can specify either a value or a function for cutoff. If PrBF < cutoff, we assign the next cohort of patients to an adjacent dose based on observed DLT. Otherwise, the evidence is in favor of H0jH_{0j} and we need to retain the current dose.

K

number of dose levels. It is required when argument cutoff is a function that requires K.

cutoff_e

the cutoff for the dose exclusion rule. If PrBF0,1<E(nj)PrBF_{0,1}<E(n_j), the evidence is in favor of H1jH_{1j}. If π^j<ϕ\hat{\pi}_j < \phi, the current dose is deemed as subtherapeutic and we exclude the current dose and lower doses; If π^j>ϕ\hat{\pi}_j > \phi, the current dose is overly toxic and we exclude the current dose and higher doses.

Details

We assume that there are JJ pre-specified dose levels of the drug of interest. Let d1,d2,,dJd_1,d_2,\ldots,d_J denote these dose levels. The dose-limiting toxicity (DLT) is assessed as a binary outcome, experiencing toxicity or not. The true dose toxicity is monotonically increasing as the dose level increases. Let ϕ\phi be the target toxicity rate and πj\pi_j be the true dose-toxicity of dose level djd_j, for j=1,2,,Jj=1,2,\ldots,J.

We formulate our hypothesis as:

H0j:πj=ϕH_{0j}: \pi_j=\phi

H1j:πjϕH_{1j}: \pi_j\ne\phi

H0jH_{0j} indicates that djd_j is the desired MTD so that we should stay; H1jH_{1j} reflects the current dose is either below or above the MTD so that we should transit to a lower or upper dose level. Whether escalate or de-escalate the dose is straightforward: if the observed toxicity rate is above the target toxicity rate ϕ\phi, we de-escalate the dose; if the observed toxicity rate is below ϕ\phi, we escalate the dose.

With the hypothesis, the predictive Bayes factor comparing H0jH_{0j} and H1jH_{1j} is given by

PrBF0,1=ϕyi(1ϕ)njyjB(yj+1,njyj+1)njexp(1)B(yj+2,njyj+1)yjB(yj+1,njyj+2)njyjPrBF_{0,1}=\frac{\phi^{y_i}(1-\phi)^{n_j-y_j}B(y_j+1,n_j-y_j+1)^{n_j}exp(1)}{B(y_j+2,n_j-y_j+1)^{y_j}B(y_j+1,n_j-y_j+2)^{n_j-y_j}}

where xjx_j is the toxicity response of the ith subject among njn_j subjects that received dose djd_j, for j=1,2,,Jj=1,2,\ldots,J. yjy_j denotes the sum of toxicity response. We assume that

yjBin(nj,πj)y_j \sim Bin(n_j,\pi_j)

According to the calibration of the PrBF, a decision rule based on PrBF0,1PrBF_{0,1} is: 1. If PrBF0,1>C(nj)PrBF_{0,1}>C(n_j), the evidence is in favor of H0jH_{0j} and we need to retain the current dose; 2. Otherwise, we assign the next cohort of patients to an adjacent dose according to the observed DLT π^j=yj/nj\hat{\pi}_j = y_j/n_j, such as:

(a) If π^j<ϕ\hat{\pi}_j < \phi, we escalate the dose;

(b) If π^j>ϕ\hat{\pi}_j > \phi, we de-escalate the dose.

For patient safety and trial efficiency, the PoP design employs a dose exclusion rule. On the one hand, if the PrBF based on the observed DLT indicates a dose is above the MTD with a certain evidence, we exclude the current dose and doses above to avoid treating patients at an overly toxic dose; on the other hand, if the PrBF implies that a dose is substantially below the MTD, we eliminate the current dose and doses below to prevent wasting patients at a subtherapeutic dose. Such a dose exclusion rule is as follow:

If PrBF0,1<E(nj)PrBF_{0,1}<E(n_j), the evidence is in favor of H1jH_{1j} and:

1. If π^j<ϕ\hat{\pi}_j < \phi, the current dose is deemed as subtherapeutic and we exclude the current dose and lower doses;

2. If π^j>ϕ\hat{\pi}_j > \phi, the current dose is overly toxic and we exclude the current dose and higher doses.

Once all the doses are eliminated from further investigation, the trial is terminated early. The selection of the cut-off value for the dose exclusion is critical for the performance of the PoP design, because it ensure the safety of the patients and efficiency of the design by influencing the early termination rule. The exclusion boundaries in the table above were determined using E(nj)=exp(1)E(n_j)=exp(-1).

Value

get.boundary.pop() returns a list object, including the corresponding decision tables $out.boundary and $out.full.boundary.

Examples

## get the dose escalation and deescalation boundaries for PoP design with
## the target DLT rate of 0.3, maximum sample size of 30, and cohort size of 3
bound <- get.boundary.pop(target=0.5, n = 15, cohortsize = 3,
                          cutoff=2.5,K=4,cutoff_e=5/24)
summary(bound) # get the descriptive summary of the boundary
plot(bound)    # plot the flowchart of the design along with decision boundaries

Operating characteristics for single-agent trials

Description

Generate the operating characteristics of the PoP design by simulating trials.

Usage

get.oc.pop(target,n,cohortsize,titration,skeleton,n.trial,cutoff,cutoff_e,
                     risk.cutoff,earlyterm,start,seed)

Arguments

target

the target DLT rate

n

total sample size

cohortsize

the cohort size

titration

default is TRUE. Set titration=TRUE to perform dose escalation with cohort size = 1 to accelerate dose escalation at the beginning of the trial.

skeleton

a vector containing the true toxicity probabilities of the investigational dose levels.

n.trial

the total number of trials to be simulated

cutoff

the cutoff for the predictive Bayes Factor (PrBF). Users can specify either a value or a function for cutoff. If PrBF < cutoff, we assign the next cohort of patients to an adjacent dose based on observed DLT. Otherwise, the evidence is in favor of H0jH_{0j} and we need to retain the current dose.

cutoff_e

the cutoff for the dose exclusion rule. If PrBF0,1<E(nj)PrBF_{0,1}<E(n_j), the evidence is in favor of H1jH_{1j}. If π^j<ϕ\hat{\pi}_j < \phi, the current dose is deemed as subtherapeutic and we exclude the current dose and lower doses; If π^j>ϕ\hat{\pi}_j > \phi, the current dose is overly toxic and we exclude the current dose and higher doses.

risk.cutoff

the cutoff to eliminate an over/under toxic dose. We recommend the default value of (risk.cutoff=0.8) for general use.

earlyterm

the early termination parameter.

start

specify the starting dose level. Default value is 1.

seed

the seed for random number generation. Default is 123.

Details

TBD

Value

get.oc.pop() returns the operating characteristics of the PoP design as a list, including:

(1) selection percentage at each dose level ($sel.pct),

(2) the number of patients treated at each dose level ($num.p),

(3) the number of toxicities observed at each dose level ($num.tox),

(4) the average number of toxicities,

(5) the average number of patients,

(6) the percentage of early stopping without selecting the MTD ($early),

(7) risk of underdosing 80% or more of patients ($risk.under),

(8) risk of overdosing 80% or more of patients ($risk.over)

References

Brunk, H., Barlow, R. E., Bartholomew, D. J. & Bremner, J. M (1972, ISBN-13: 978-0471049708).

Examples

## get the operating characteristics for single-agent trials
oc <- get.oc.pop(target=0.3,n=15,cohortsize=3,titration=TRUE,
                 cutoff=2.5,cutoff_e=5/24,
                 skeleton=c(0.3,0.4,0.5,0.6),n.trial=1000,
                     risk.cutoff=0.8,earlyterm=TRUE,start=1, seed=123)

summary(oc) # summarize design operating characteristics
plot(oc)

Plot the flowchart and simulation results for PoP designs

Description

Plot the objects returned by other functions, including (1) flowchart of PoP design; (2) operating characteristics of the design, including selection percentage and the number of patients treated at each dose; (3) the estimate of toxicity probability for each dose and corresponding 95% credible interval

Usage

## S3 method for class 'pop'
plot(x, ...)

Arguments

x

the object returned by other functions

...

ignored arguments

Value

plot() returns a figure or a series of figures depending on the object entered


Generate descriptive summary for objects returned by other functions

Description

Generate descriptive summary for objects returned by other functions.

Usage

## S3 method for class 'pop'
print(x, ...)

Arguments

x

the object returned by other functions

...

ignored arguments

Details

print() prints the objects returned by other functions.

Value

print() prints the objects returned by other functions.


Maximum tolerated dose (MTD) selection for single-agent trials

Description

Select the maximum tolerated dose (MTD) when the single-agent trial is completed

Usage

select.mtd.pop(target, n.pts, n.tox)

Arguments

target

the target DLT rate

n.pts

a vector containing the number of patients treated at each dose level

n.tox

a vector containing the number of patients who experienced dose-limiting toxicity at each dose level

Value

select.mtd.pop() returns (1) selected MTD ($MTD), (2) isotonic estimate of the DLT probablity at each dose and associated

References

Brunk, H., Barlow, R. E., Bartholomew, D. J. & Bremner, J. M (1972, ISBN-13: 978-0471049708).

Examples

### select the MTD for PoP trial
n <- c(4, 4, 16, 8, 0)
y <- c(0, 0, 5, 5, 0)
selmtd <- select.mtd.pop(target=0.3,n.pts=n, n.tox=y)
summary(selmtd)
plot(selmtd)

Generate descriptive summary for objects returned by other functions in PoPdesign

Description

Generate descriptive summary for objects returned by other functions.

Usage

## S3 method for class 'pop'
summary(object, ...)

Arguments

object

the object returned by other functions.

...

ignored arguments

Value

summary() prints the objects returned by other functions.

Examples

## summarize the results returned by get.boundary.pop()
bound <- get.boundary.pop(n = 15, cohortsize = 3, target=0.3,
                          cutoff=exp(1), K=3,cutoff_e=exp(-1))
summary(bound)

## summarize the results returned by get.oc.pop()
oc <- get.oc.pop(target=0.3,n=15,cohortsize=3,titration=TRUE,
                 cutoff=TRUE,cutoff_e=exp(-1),skeleton=c(0.3,0.4,0.5,0.6),n.trial=1000,
                 risk.cutoff=0.8,earlyterm=TRUE,start=1)
summary(oc)

### summarize the results returned by select.mtd.pop()
n <- c(3, 3, 15, 9, 0)
y <- c(0, 0, 4, 4, 0)
selmtd <- select.mtd.pop(target=0.3,n.pts=n, n.tox=y)
summary(selmtd)