# Design of the DEFUSE3 Trial In ASSISTant: Adaptive Subgroup Selection in Group Sequential Trials

```### get knitr just the way we like it

knitr::opts_chunk\$set(
message = FALSE,
warning = FALSE,
error = FALSE,
tidy = FALSE,
cache = FALSE
)
```

## Continuous Rankin Simulations

Here, we present the calculations for the initial design of the DEFUSE3 trial based on [@Lai2014191] and [@Lai201593]. The trial parameters are fixed as follows.

```library(ASSISTant)
##Fix randomization vector N, errors, eps
trialParameters <- list(N = c(200, 340, 476), type1Error = 0.025,
eps = 1/2, type2Error = 0.1)
```

The design parameters are the following for various scenarios.

```designParameters <- list(
nul0 = list(prevalence = rep(1/6, 6), mean = matrix(0, 2, 6),
sd = matrix(1, 2, 6)),
alt1 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6),
c(0.5, 0.4, 0.3, 0, 0, 0)),
sd = matrix(1, 2, 6)),
alt2 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6),
c(0.5, 0.5, 0, 0, 0, 0)),
sd = matrix(1,2, 6)),
alt3 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6), rep(0.36, 6)),
sd = matrix(1,2, 6)),
alt4 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6), rep(0.30, 6)),
sd = matrix(1,2, 6)),
alt5 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6),
c(0.4, 0.3, 0.2, 0, 0, 0)),
sd = matrix(1,2, 6)),
alt6 = list(prevalence = rep(1/6, 6), mean = rbind(rep(0, 6),
c(0.5, 0.5, 0.3, 0.3, 0.1, 0.1)),
sd = matrix(1,2, 6))
)
```

### The NULL Scenario

```defuse3 <- DEFUSE3Design\$new(trialParameters = trialParameters,
numberOfSimulations = 500,
designParameters = designParameters\$nul0,
showProgress = FALSE)
print(defuse3)
```
```result <- defuse3\$explore(numberOfSimulations = 500,
showProgress = FALSE,
rngSeed = 28912)
analysis <- defuse3\$analyze(result)
print(defuse3\$summary(analysis))
```

### The ALT1 Scenario

```result1 <- defuse3\$explore(numberOfSimulations = 500,
trueParameters = designParameters\$alt1,
showProgress = FALSE,
rngSeed = 737218)
analysis1 <- defuse3\$analyze(result1)
print(defuse3\$summary(analysis1))
```

### The ALT2 Scenario

```result2 <- defuse3\$explore(numberOfSimulations = 500,
trueParameters = designParameters\$alt2,
showProgress = FALSE,
rngSeed = 928812)
analysis2 <- defuse3\$analyze(result2)
print(defuse3\$summary(analysis2))
```

## Discrete Rankin Simulations

### The Discretized Scenarios

The discretized scenarios are designed to generally mimic the trends above in the alternatives. However, we have a problem: we cannot simulatenously match the mean and sd of the alternatives above. (Actually, we can, but not with Rankin scores 0 through 6. The software can easily be modified to generate discrete values where the values are 0 to 6 divided by the standard deviation of the respective distribution, for example.)

Also in future versions, I need to allow for more general support values for the scores, not just 0 through 6. Easy to do, but not done yet.

Some types of distributions:

```null.uniform <- rep(1, 7L) ## uniform on 7 support points
hourglass <- c(1, 2, 2, 1, 2, 2, 1)
inverted.hourglass <- c(2, 1, 1, 2, 1, 1, 2)
bottom.heavy <- c(2, 2, 2, 1, 1, 1, 1)
bottom.heavier <- c(3, 3, 2, 2, 1, 1, 1)
bottom.loaded <- c(4, 4, 3, 3, 2, 1, 1)
top.heavy <- c(1, 1, 1, 1, 2, 2, 2)
top.heavier <- c(1, 1, 1, 2, 2, 3, 3)
top.loaded <- c(1, 1, 2, 3, 3, 4, 4)
```

It is instructive to see what the means and standard deviations are.

``````r
knitr::kable(
sapply(list(null = null.uniform,
hourglass = hourglass,
inv.hourglass = inverted.hourglass,
bot.heavy = bottom.heavy,
bot.heavier = bottom.heavier,
top.heavy = top.heavy,
top.heavier = top.heavier,
computeMeanAndSD)
)
```

With this in mind, we can reel off some runs. Phil, you mentioned you wanted \$J = 2\$, which I adhere to, below.

```designParameters <- list(
nul0 = list(prevalence = rep(1, 2),
ctlDist = null.uniform,
trtDist = cbind(null.uniform,
null.uniform)),
alt1 = list(prevalence = rep(1, 2),
ctlDist = null.uniform,
null.uniform)),
alt2 = list(prevalence = rep(1, 2),
ctlDist = null.uniform,
trtDist = cbind(null.uniform,
)
```

### The NULL Scenario

```discDefuse3 <- DEFUSE3Design\$new(trialParameters = trialParameters,
numberOfSimulations = 5000,
discreteData = TRUE,
designParameters = designParameters\$nul0,
showProgress = FALSE)
print(discDefuse3)
```
```result <- discDefuse3\$explore(numberOfSimulations = 50,
showProgress = FALSE,
rngSeed = 3783)
analysis <- discDefuse3\$analyze(result)
print(discDefuse3\$summary(analysis))
```

### The ALT1 Scenario

```result1 <- discDefuse3\$explore(numberOfSimulations = 50,
trueParameters = designParameters\$alt1,
showProgress = FALSE,
rngSeed = 28912)
analysis1 <- discDefuse3\$analyze(result1)
print(discDefuse3\$summary(analysis1))
```

### The ALT2 Scenario

```result2 <- discDefuse3\$explore(numberOfSimulations = 50,
trueParameters = designParameters\$alt2,
showProgress = FALSE,
rngSeed = 931)
analysis2 <- discDefuse3\$analyze(result2)
print(discDefuse3\$summary(analysis2))
```

## Try the ASSISTant package in your browser

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

ASSISTant documentation built on Dec. 2, 2022, 5:12 p.m.