Title: | Phase I/II Adaptive Dose-Finding Design for Combination Studies |
---|---|
Description: | Phase I/II adaptive dose-finding design for combination studies where toxicity rates are supposed to increase with both agents. |
Authors: | Marie-Karelle Riviere [aut], Jacques-Henri Jourdan [aut, cre] |
Maintainer: | Jacques-Henri Jourdan <[email protected]> |
License: | GPL-3 |
Version: | 3.1-4 |
Built: | 2024-11-04 06:04:40 UTC |
Source: | https://github.com/cran/dfcomb |
Phase I/II adaptive dose-finding design for combination studies where toxicity rates are supposed to increase with both agents.
The DESCRIPTION file:
Package: | dfcomb |
Type: | Package |
Title: | Phase I/II Adaptive Dose-Finding Design for Combination Studies |
Version: | 3.1-4 |
Date: | 2024-09-30 |
Authors@R: | c(person(given = "Marie-Karelle", family = "Riviere", role = "aut"), person(given = "Jacques-Henri", family = "Jourdan", role = c("aut", "cre"), email = "[email protected]")) |
Copyright: | src/arms.c and src/arms.h are copyright Wally Gilks. All other files are copyright Sanofi-Aventis R&D, Institut de Recherches Internationales Servier and Institut national de la sante et de la recherche medicale. |
Description: | Phase I/II adaptive dose-finding design for combination studies where toxicity rates are supposed to increase with both agents. |
License: | GPL-3 |
Depends: | R (>= 3.2.3) |
LinkingTo: | BH (>= 1.55), Rcpp, RcppProgress (>= 0.2.1) |
NeedsCompilation: | yes |
Packaged: | 2024-09-30 15:13:53 UTC; jjourdan |
Author: | Marie-Karelle Riviere [aut], Jacques-Henri Jourdan [aut, cre] |
Maintainer: | Jacques-Henri Jourdan <[email protected]> |
Date/Publication: | 2024-09-30 15:50:04 UTC |
Repository: | https://jhjourdan.r-universe.dev |
RemoteUrl: | https://github.com/cran/dfcomb |
RemoteRef: | HEAD |
RemoteSha: | 5806455e0c5c7fdd9ae8bf617bdc6497f313b281 |
Index of help topics:
CombIncrease_next Combination determination with logistic model CombIncrease_sim Combination design Simulator using Logistic model dfcomb-package Phase I/II Adaptive Dose-Finding Design for Combination Studies
Marie-Karelle Riviere [aut], Jacques-Henri Jourdan [aut, cre]
Maintainer: Jacques-Henri Jourdan <[email protected]>
Riviere MK, Yuan Y, Dubois F, Zohar S (2014). A Bayesian dose-finding design for drug combination clinical trials based on the logistic model. Pharm Stat, 13, 4:247-57.
CombIncrease_next
is used to determine the next or recommended combination in a phase I combination clinical trial using the design proposed by Riviere et al. entitled "A Bayesian dose-finding design for drug combination clinical trials based on the logistic model".
CombIncrease_next(ndose_a1, ndose_a2, target, target_min, target_max, prior_tox_a1, prior_tox_a2, cohort, final, pat_incl, dose_adm1, dose_adm2, tite=FALSE, toxicity, time_full=0, time_tox=0, time_follow=0, c_e=0.85, c_d=0.45, c_stop=0.95, c_t=0.5, c_over=0.25, cmin_overunder=2, cmin_mtd=3, cmin_recom=1, early_stop=1, alloc_rule=1, nburn=2000, niter=5000)
CombIncrease_next(ndose_a1, ndose_a2, target, target_min, target_max, prior_tox_a1, prior_tox_a2, cohort, final, pat_incl, dose_adm1, dose_adm2, tite=FALSE, toxicity, time_full=0, time_tox=0, time_follow=0, c_e=0.85, c_d=0.45, c_stop=0.95, c_t=0.5, c_over=0.25, cmin_overunder=2, cmin_mtd=3, cmin_recom=1, early_stop=1, alloc_rule=1, nburn=2000, niter=5000)
ndose_a1 |
Number of dose levels for agent 1. |
ndose_a2 |
Number of dose levels for agent 2. |
target |
Toxicity (probability) target. |
target_min |
Minimum of the targeted toxicity interval. |
target_max |
Maximum of the targeted toxicity interval. |
prior_tox_a1 |
A vector of initial guesses of toxicity probabilities associated with the doses of agent 1. Must be of length |
prior_tox_a2 |
A vector of initial guesses of toxicity probabilities associated with the doses of agent 2. Must be of length |
cohort |
Cohort size. |
final |
A boolean with value TRUE if the trial is finished and the recommended combination for further phases should be given, or FALSE (default value) if the combination determination is performed for the next cohort of patients. |
pat_incl |
Current number of patients included. |
dose_adm1 |
A vector indicating the dose levels of agents 1 administered to each patient included in the trial. Must be of length |
dose_adm2 |
A vector indicating the dose levels of agents 2 administered to each patient included in the trial. Must be of length |
tite |
A boolean indicating if the toxicity is considered as a time-to-event outcome (TRUE), or as a binary outcome (default value FALSE). |
toxicity |
A vector of observed toxicities (DLTs) for each patient included in the trial. Must be of length |
time_full |
Full follow-up time window. This argument is used only if tite=TRUE. |
time_tox |
A vector of times-to-toxicity for each patient included in the trial. If no toxicity was observed for a patient, must be filled with +Inf. Must be of length |
time_follow |
A vector of follow-up times for each patient included in the trial. Must be of length |
c_e |
Probability threshold for dose-escalation. The default value is set at 0.85. |
c_d |
Probability threshold for dose-deescalation. The default value is set at 0.45. |
c_stop |
Probability threshold for early trial termination. The default value is set at 0.95. |
c_t |
Probability threshold for early trial termination for finding the MTD (see details). The default value is set at 0.5. |
c_over |
Probability threshold to control over-dosing (see details). |
cmin_overunder |
Minimum number of cohorts to be included at the lowest/highest combination before possible early trial termination for over-toxicity or under-toxicity (see details). The default value is set at 2. |
cmin_mtd |
Minimum number of cohorts to be included at the recommended combination before possible early trial termination for finding the MTD (see details). The default value is set at 3. |
cmin_recom |
Minimum number of cohorts to be included at the recommended combination at the end of the trial. The default value is set at 1. |
alloc_rule |
Interger (1, 2, or 3) indicating which allocation rule is used (see details). The default value is set at 1. |
early_stop |
Interger (1, 2, or 3) indicating which early stopping rule is used (see details). The default value is set at 1. |
nburn |
Number of burn-in for HMC. The default value is set at 2000. |
niter |
Number of iterations for HMC. The default value is set at 5000. |
Allocation rule:
alloc_rule=1
(Riviere et al 2014):
If P(toxicity probability at combination (i,j) < target
) > c_e
: among combinations in the neighborhood (-1, +1), (0, +1), (+1, 0), (+1, -1), choose the combination with a higher estimated toxicity probability than the current combination and with the estimated toxicity probability closest to target
.
If P(toxicity probability at combination (i,j) > target
) > 1-c_d
: among neighborhood (-1, +1), (-1, 0), (0, -1), (+1, -1), choose the combination with a lower estimated toxicity probability than the current combination and with the estimated toxicity probability closest to target
.
Otherwise, remain on the same combination.
alloc_rule=2
: Among combinations already tested and combinations in the neighborhood (-1, 0), (-1, +1), (0, +1), (+1, 0), (+1, -1), (0, -1), (-1, -1) of a combination tested, choose the combination with the highest posterior probability to be in the targeted interval [target_min
, target_max
] while controling overdosing i.e. P(toxicity probability at combination (i,j) > target_max
) < c_over
.
alloc_rule=3
: Among combinations in the neighborhood (-1, 0), (-1, +1), (0, +1), (+1, 0), (+1, -1), (0, -1), (-1, -1) of the current combination, choose the combination with the highest posterior probability to be in the targeted interval [target_min
, target_max
] while controling overdosing i.e. P(toxicity probability at combination (i,j) > target_max
) < c_over
.
Early stopping for over-dosing:
If the current combination is the lowest (1, 1) and at least cmin_overunder
cohorts have been included at that combination and P(toxicity probability at combination (i,j) > target
) >= c_stop
then stop the trial and do not recommend any combination.
Early stopping for under-dosing:
If the current combination is the highest and at least cmin_overunder
cohorts have been included at that combination and P(toxicity probability at combination (i,j) < target
) >= c_stop
then stop the trial and do not recommend any combination.
Early stopping for identifying the MTD:
early_stop=1
(Riviere et al 2014):
No stopping rule, include patients until maximum sample size is reached.
early_stop=2
:
If the next recommended combination has been tested on at least cmin_mtd
cohorts and has a posterior probability to be in the targeted interval [target_min
, target_max
] that is >= c_t
and also control overdosing i.e. P(toxicity probability at current combination > target_max
) < c_over
then stop the trial and recommend this combination.
early_stop=3
:
If at least cmin_mtd
cohorts have been included at the next recommended combination then stop the trial and recommend this combination.
Stopping at the maximum sample size:
If the maximum sample size is reached and no stopping rule is met, then the recommended combination is the one that was tested on at least cmin_recom
cohorts and with the highest posterior probability to be in the targeted interval [target_min
, target_max
].
An object of class "CombIncrease_next" is returned, consisting of determination of the next combination and estimations. Objects generated by CombIncrease_next
contain at least the following components:
n_pat_comb |
Number of patients per combination. |
n_tox_comb |
Number of observed toxicities per combination. |
pi |
Estimated toxicity probabilities (if the start-up ended). |
ptox_inf |
Estimated probabilities that the toxicity probability is inferior to |
ptox_inf_targ |
Estimated probabilities of underdosing, i.e. to be inferior to |
ptox_targ |
Estimated probabilities to be in the targeted interval [ |
ptox_sup_targ |
Estimated probabilities of overdosing, i.e. to be superior to |
(cdose1 , cdose2)
|
NEXT RECOMMENDED COMBINATION. |
inconc |
Boolean indicating if trial must stop for under/over dosing. |
early_conc |
Boolean indicating if trial can be stopped earlier for finding the MTD. |
Jacques-Henri Jourdan and Marie-Karelle Riviere-Jourdan [email protected]
Riviere, M-K., Yuan, Y., Dubois, F., and Zohar, S. (2014). A Bayesian dose-finding design for drug combination clinical trials based on the logistic model. Pharmaceutical Statistics.
prior_a1 = c(0.12, 0.2, 0.3, 0.4, 0.5) prior_a2 = c(0.2, 0.3, 0.4) toxicity1 = c(0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1) dose1 = c(1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4) dose2 = c(1,1,1,2,2,2,3,3,3,2,2,2,1,1,1,1,1,1) t_tox = c(rep(+Inf,8),2.9,+Inf,4.6,+Inf,+Inf,+Inf,+Inf,+Inf,+Inf,5.2) follow = c(rep(6,15), 4.9, 3.1, 1.3) next1 = CombIncrease_next(ndose_a1=5, ndose_a2=3, target=0.3, target_min=0.2, target_max=0.4, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, cohort=3, final=FALSE, pat_incl=18, dose_adm1=dose1, dose_adm2=dose2, toxicity=toxicity1, c_over=1, cmin_overunder=3, cmin_recom=1, early_stop=1, alloc_rule=1) next1 next2 = CombIncrease_next(ndose_a1=5, ndose_a2=3, target=0.3, target_min=0.2, target_max=0.4, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, cohort=3, final=FALSE, pat_incl=18, dose_adm1=dose1, dose_adm2=dose2, tite=TRUE, time_full=6, time_tox=t_tox, time_follow=follow, c_over=1, cmin_overunder=3, cmin_recom=1, early_stop=1, alloc_rule=1) next2
prior_a1 = c(0.12, 0.2, 0.3, 0.4, 0.5) prior_a2 = c(0.2, 0.3, 0.4) toxicity1 = c(0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1) dose1 = c(1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4) dose2 = c(1,1,1,2,2,2,3,3,3,2,2,2,1,1,1,1,1,1) t_tox = c(rep(+Inf,8),2.9,+Inf,4.6,+Inf,+Inf,+Inf,+Inf,+Inf,+Inf,5.2) follow = c(rep(6,15), 4.9, 3.1, 1.3) next1 = CombIncrease_next(ndose_a1=5, ndose_a2=3, target=0.3, target_min=0.2, target_max=0.4, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, cohort=3, final=FALSE, pat_incl=18, dose_adm1=dose1, dose_adm2=dose2, toxicity=toxicity1, c_over=1, cmin_overunder=3, cmin_recom=1, early_stop=1, alloc_rule=1) next1 next2 = CombIncrease_next(ndose_a1=5, ndose_a2=3, target=0.3, target_min=0.2, target_max=0.4, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, cohort=3, final=FALSE, pat_incl=18, dose_adm1=dose1, dose_adm2=dose2, tite=TRUE, time_full=6, time_tox=t_tox, time_follow=follow, c_over=1, cmin_overunder=3, cmin_recom=1, early_stop=1, alloc_rule=1) next2
CombIncrease_sim
is used to generate simulation replicates of phase I clinical trial for combination studies where the toxicity and efficacy of both agents is assumed to increase with the dose using the design proposed by Riviere et al. entitled "A Bayesian dose-finding design for drug combination clinical trials based on the logistic model".
CombIncrease_sim(ndose_a1, ndose_a2, p_tox, target, target_min, target_max, prior_tox_a1, prior_tox_a2, n_cohort, cohort, tite=FALSE, time_full=0, poisson_rate=0, nsim, c_e=0.85, c_d=0.45, c_stop=0.95, c_t=0.5, c_over=0.25, cmin_overunder=2, cmin_mtd=3, cmin_recom=1, startup=1, alloc_rule=1, early_stop=1, init_dose_1=1, init_dose_2=1, nburn=2000, niter=5000, seed=14061991)
CombIncrease_sim(ndose_a1, ndose_a2, p_tox, target, target_min, target_max, prior_tox_a1, prior_tox_a2, n_cohort, cohort, tite=FALSE, time_full=0, poisson_rate=0, nsim, c_e=0.85, c_d=0.45, c_stop=0.95, c_t=0.5, c_over=0.25, cmin_overunder=2, cmin_mtd=3, cmin_recom=1, startup=1, alloc_rule=1, early_stop=1, init_dose_1=1, init_dose_2=1, nburn=2000, niter=5000, seed=14061991)
ndose_a1 |
Number of dose levels for agent 1. |
ndose_a2 |
Number of dose levels for agent 2. |
p_tox |
A matrix of the true toxicity probabilities associated with the combinations. True toxicity probabilities should be entered with agent 1 in row and agent 2 in column, with increasing toxicity probabilities with both row and column numbers (see examples). |
target |
Toxicity (probability) target. |
target_min |
Minimum of the targeted toxicity interval. |
target_max |
Maximum of the targeted toxicity interval. |
prior_tox_a1 |
A vector of initial guesses of toxicity probabilities associated with the doses of agent 1. Must be of length |
prior_tox_a2 |
A vector of initial guesses of toxicity probabilities associated with the doses of agent 2. Must be of length |
n_cohort |
Total number of cohorts to include in the trial. |
cohort |
Cohort size. |
tite |
A boolean indicating if the toxicity is considered as a time-to-event outcome (TRUE), or as a binary outcome (default value FALSE). |
time_full |
Full follow-up time window. This argument is used only if tite=TRUE. |
poisson_rate |
A value indicating the rate for the Poisson process used to simulate patient arrival, i.e. expected number of arrivals per observation window. This argument is used only if tite=TRUE. |
nsim |
Number of simulations. |
c_e |
Probability threshold for dose-escalation. The default value is set at 0.85. |
c_d |
Probability threshold for dose-deescalation. The default value is set at 0.45. |
c_stop |
Probability threshold for early trial termination due to over-toxicity or under-toxicity (see details). The default value is set at 0.95. |
c_t |
Probability threshold for early trial termination for finding the MTD (see details). The default value is set at 0.5. |
c_over |
Probability threshold to control over-dosing (see details). |
cmin_overunder |
Minimum number of cohorts to be included at the lowest/highest combination before possible early trial termination for over-toxicity or under-toxicity (see details). The default value is set at 2. |
cmin_mtd |
Minimum number of cohorts to be included at the recommended combination before possible early trial termination for finding the MTD (see details). The default value is set at 3. |
cmin_recom |
Minimum number of cohorts to be included at the recommended combination at the end of the trial. The default value is set at 1. |
startup |
Interger (0, 1, 2, or 3) indicating which start-up phase is used (see details). The default value is set at 1. |
alloc_rule |
Interger (1, 2, or 3) indicating which allocation rule is used (see details). The default value is set at 1. |
early_stop |
Interger (1, 2, or 3) indicating which early stopping rule is used (see details). The default value is set at 1. |
init_dose_1 |
Initial dose for agent 1. The default is 1. |
init_dose_2 |
Initial dose for agent 2. The default is 1. |
nburn |
Number of burn-in for HMC. The default value is set at 2000. |
niter |
Number of iterations for HMC. The default value is set at 5000. |
seed |
Seed of the random number generator. Default value is set at 14061991. |
Start-up phase:
startup=0
: No startup phase: the first tested combination is forced to be the initial combination. The following ones use the normal allocation rule..
startup=1
(Riviere et al 2014): Begin at the initial combination and increase both agent (+1, +1) until the first toxicity is observed or maximum combination is reached.
startup=2
: Begin at the initial combination and increase agent 1 (+1, 0) until a toxicity is observed or maximum dose is reached. Then begin at (init_dose1,init_dose2+1) and increase agent 2 (0, +1) until a toxicity is observed or maximum dose is reached.
startup=3
: Begin at the initial combination and increase alternatively each agent (+1, 0) then (0, +1) until the first toxicity is observed or maximum combination is reached.
Allocation rule:
alloc_rule=1
(Riviere et al 2014):
If P(toxicity probability at combination (i,j) < target
) > c_e
: among combinations in the neighborhood (-1, +1), (0, +1), (+1, 0), (+1, -1), choose the combination with a higher estimated toxicity probability than the current combination and with the estimated toxicity probability closest to target
.
If P(toxicity probability at combination (i,j) > target
) > 1-c_d
: among neighborhood (-1, +1), (-1, 0), (0, -1), (+1, -1), choose the combination with a lower estimated toxicity probability than the current combination and with the estimated toxicity probability closest to target
.
Otherwise, remain on the same combination.
alloc_rule=2
: Among combinations already tested and combinations in the neighborhood (-1, 0), (-1, +1), (0, +1), (+1, 0), (+1, -1), (0, -1), (-1, -1) of a combination tested, choose the combination with the highest posterior probability to be in the targeted interval [target_min
, target_max
] while controling overdosing i.e. P(toxicity probability at combination (i,j) > target_max
) < c_over
.
alloc_rule=3
: Among combinations in the neighborhood (-1, 0), (-1, +1), (0, +1), (+1, 0), (+1, -1), (0, -1), (-1, -1) of the current combination, choose the combination with the highest posterior probability to be in the targeted interval [target_min
, target_max
] while controling overdosing i.e. P(toxicity probability at combination (i,j) > target_max
) < c_over
.
Early stopping for over-dosing:
If the current combination is the lowest (1, 1) and at least cmin_overunder
cohorts have been included at that combination and P(toxicity probability at combination (i,j) > target
) >= c_stop
then stop the trial and do not recommend any combination.
Early stopping for under-dosing:
If the current combination is the highest and at least cmin_overunder
cohorts have been included at that combination and P(toxicity probability at combination (i,j) < target
) >= c_stop
then stop the trial and do not recommend any combination.
Early stopping for identifying the MTD:
early_stop=1
(Riviere et al 2014):
No stopping rule, include patients until maximum sample size is reached.
early_stop=2
:
If the next recommended combination has been tested on at least cmin_mtd
cohorts and has a posterior probability to be in the targeted interval [target_min
, target_max
] that is >= c_t
and also control overdosing i.e. P(toxicity probability at current combination > target_max
) < c_over
then stop the trial and recommend this combination.
early_stop=3
:
If at least cmin_mtd
cohorts have been included at the next recommended combination then stop the trial and recommend this combination.
Stopping at the maximum sample size:
If the maximum sample size is reached and no stopping rule is met, then the recommended combination is the one that was tested on at least cmin_recom
cohorts and with the highest posterior probability to be in the targeted interval [target_min
, target_max
].
An object of class "CombIncrease_sim" is returned, consisting of the operating characteristics of the design specified. Objects generated by CombIncrease_sim
contain at least the following components:
rec_dose |
Percentage of combination selection. |
n_pat_dose |
Mean number of patients at each combination. |
n_tox_dose |
Mean number of toxicities at each combination. |
inconc |
Percentage of inclusive trials. |
early_conc |
Percentage of trials stopping with criterion for finding MTD. |
nsim |
Number of simulations (if function stopped while executed, return the current number of simulations performed with associated other outputs). |
pat_tot |
Total mean number of patients accrued. |
tab_pat |
Vector with the number of patients included for each simulation. |
Jacques-Henri Jourdan and Marie-Karelle Riviere-Jourdan [email protected]
Riviere, M-K., Yuan, Y., Dubois, F., and Zohar, S. (2014). A Bayesian dose-finding design for drug combination clinical trials based on the logistic model. Pharmaceutical Statistics.
p_tox_sc1 = matrix(c(0.05,0.10,0.15,0.30,0.45, 0.10,0.15,0.30,0.45,0.55, 0.15,0.30,0.45,0.50,0.60),nrow=5,ncol=3) prior_a1 = c(0.12, 0.2, 0.3, 0.4, 0.5) prior_a2 = c(0.2, 0.3, 0.4) sim1 = CombIncrease_sim(ndose_a1=5, ndose_a2=3, p_tox=p_tox_sc1, target=0.30, target_min=0.20, target_max=0.40, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, n_cohort=20, cohort=3, tite=FALSE, nsim=2000, c_over=1, cmin_overunder=3, cmin_recom=1, startup=1, alloc_rule=1, early_stop=1, seed=14061991) sim1 # Dummy example, running quickly useless = CombIncrease_sim(ndose_a1=3, ndose_a2=2, p_tox=matrix(c(0.05,0.15,0.30,0.15,0.30,0.45),nrow=3), target=0.30, target_min=0.20, target_max=0.40, prior_tox_a1=c(0.2,0.3,0.4), prior_tox_a2=c(0.2,0.3), n_cohort=2, cohort=2, nsim=1)
p_tox_sc1 = matrix(c(0.05,0.10,0.15,0.30,0.45, 0.10,0.15,0.30,0.45,0.55, 0.15,0.30,0.45,0.50,0.60),nrow=5,ncol=3) prior_a1 = c(0.12, 0.2, 0.3, 0.4, 0.5) prior_a2 = c(0.2, 0.3, 0.4) sim1 = CombIncrease_sim(ndose_a1=5, ndose_a2=3, p_tox=p_tox_sc1, target=0.30, target_min=0.20, target_max=0.40, prior_tox_a1=prior_a1, prior_tox_a2=prior_a2, n_cohort=20, cohort=3, tite=FALSE, nsim=2000, c_over=1, cmin_overunder=3, cmin_recom=1, startup=1, alloc_rule=1, early_stop=1, seed=14061991) sim1 # Dummy example, running quickly useless = CombIncrease_sim(ndose_a1=3, ndose_a2=2, p_tox=matrix(c(0.05,0.15,0.30,0.15,0.30,0.45),nrow=3), target=0.30, target_min=0.20, target_max=0.40, prior_tox_a1=c(0.2,0.3,0.4), prior_tox_a2=c(0.2,0.3), n_cohort=2, cohort=2, nsim=1)