require(visit); set.seed(10000);

Phase I clinical trials are the first step in drug development to apply a new drug or drug combination on humans. Typical designs of Phase I trials use toxicity as the primary endpoint and aim to find the maximum tolerable dosage. However, these designs are generally inapplicable for the development of cancer vaccines because the primary objectives of a cancer vaccine Phase I trial often include determining whether the vaccine shows biologic activity.

R package **visit** implements a dose escalation algorithm that simultaneously
accounts for immunogenicity and toxicity. It uses lower dose levels as the
reference for determining if the current dose level is optimal in terms of
immune response. It also ensures subject safety by capping the toxicity rate
with a given upper bound. These two criteria are simultaneously evaluated using
an intuitive decision region.

Users are referred to the following paper for details of the **visit** design:

Wang, C., Rosner, G. L., & Roden, R. B. (2019). A Bayesian design for phase I cancer therapeutic vaccine trials. Statistics in medicine, 38(7), 1170-1189.

The package **visit** can be installed directly from *CRAN*:

install.packages("visit"); require(visit);

Some packages (e.g., *shiny*) are required to run the graphical user interface for *visit,
but are not required to run *visit through a *R* terminal.

Simulation studies are necessary for evaluating study characteristics for a
specific study design. **visit** provides functions for conducting simulation
studies and summarizing the simulation results.

The first step in the simulation studies is usually to specify the simulation
scenarios. This is done in **visit** by the function *vtScenario*:

tox <- c(0.07, 0.23, 0.66); res <- c(0.50, 0.17, 0.59); rho <- c(0.98, 0.40, 0.46); scenario <- vtScenario(tox = tox, res = res, rho = rho); summary(scenario);

The simulation scenarios are constructed using the level-specific DLT risk rates (*tox*),
immune response rates (*res*), and odds ratios (*rho*). The result is a class *VTTRUEPS* object
which has S3 methods *summary* and "plot".

```
summary(scenario);
```

oldpar <- par(mfrow = c(1,2)); plot(scenario, draw.curves = 1:2, main = "Marginal DLT Risk and Response Rates"); plot(scenario, draw.curves = 3:6, main = "Joint DLT Risk and Response Rates"); par(oldpar);

Prior knowledge about the DLT risk rates and the prior choices of the parametric
model parameters should be encapsulate into a class
*VTPRIOR* object by the function *vtPriorPar*. Details of the parameters can be
found in Wang el. al. (2019).

tau <- c(0.39, 0.87, 0.49); prior <- vtPriorPar(tau = tau, sdalpha = 10, sdrho = 10);

The main simulation function in the **visit** package is the *vtSimu* function.
The function requires a class *VTRUEPS* object for simulation scenarios and a
class "VTPRIOR" class object for priors and other design parameters including
*etas* for the lower and upper boundary of DLT risks, *size.cohort* for cohort
sizes, etc. Probability model needs to be specified by *prob.mdl*. The options
are *NONPARA* for non-parametric model, NONPARA+ for non-parametric model with
$\rho=1$, *PARA* for partially parametric model, and *PARA+* for partially
parametric model with $\rho=1$.

simu <- vtSimu(n.rep = 100, trueps = scenario, size.cohort = 5, size.level = 10, etas = c(0.3, 0.7), dec.cut = c(0.45, 0.55, 0.75), prob.mdl = "NONPARA+");

The result is a class *VTSIMUT* object with S3 methods *summary* and *summary2*.

sum.1 <- summary(simu); print(sum.1);

sum.2 <- summary2(simu); print(sum.2);

During the conduction of a Phase I study, the *visit** package provide functions
to carry our the interim analysis and provide decisions about dose escalation.

To perform the interim analysis, the current level of observation and the
previous level of observation is needed. Decision cuts, lower and upper bound of
DLT risk, prob.mdl, and priors are all optional arguments. Please refer to the
**visit** package PDF for details on the result *decision map*.

etas <- c(0.1, 0.3) dec.cut <- c(0.6,0.6,0.6) cur.obs.y <- c(3, 2, 1, 1) prev.obs.y <- c(5, 2, 0, 0) rst.inter <- vtInterim(cur.obs.y, prev.obs.y = prev.obs.y, prob.mdl = "NONPARA", etas = etas, dec.cut = dec.cut, nsmp = 2000); plot(rst.inter);

A function *vtTrack* is provided to visualize the entire progress of the study,
including the observed data and dose escalation decisions. The required data is
a five column matrix, with the first column indicating the dose level, and the
rest should indicate the observed number of patients with *No DLT, No
Response*, *No DLT, Response*, *DLT, No Response*, and *DLT, Response*.

obs <- rbind(c(1, 6, 4, 3, 6), c(2, 4, 9, 3, 3), c(3, 2, 6, 6, 5)); vtTrack(obs, end.width = 0.8);

The **visit** package provides a web-based GUI for composite endpoint analysis.
The GUI can be accessed by

```
vtShiny();
```

**Any scripts or data that you put into this service are public.**

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.