---
title: "-3- Compute Probabilities given Bounds and Drift"
output:
  rmarkdown::html_vignette:
    toc: true
    toc_depth: 4
description: >
  This vignette shows how to use GroupSeq to compute group sequential
  probabilities under both H0 or H1.
vignette: >
  %\VignetteIndexEntry{-3- Compute Probabilities given Bounds and Drift}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r knitr-setup, include = FALSE}
library(knitr)
knitr::opts_chunk$set(
  comment = "#",
  prompt = F,
  tidy = FALSE,
  cache = FALSE,
  collapse = T,
  echo = FALSE,
  dpi = 300,
  fig.width = 5, fig.height = 5
)

old <- options(width = 100L, digits = 10)
```


This vignette builds right on
[-2- Compute Drift given Power and Bounds](https://rpahl.github.io/GroupSeq/articles/task-2-compute-drift.html)
so if you haven't seen the vignette it is recommended to visit this one first.

Taking forward the example from the last vignette, we want three stages of
manual bounds and enter a drift of `3.3553`.

```{r, out.width = "35%", echo = FALSE, fig.alt = "task-3-example-manual-bounds"}
include_graphics("figures/task3-example-manual-bounds.png")
```

which `CALCULATE`s to

```{r, out.width = "50%", fig.alt = "task-3-example-manual-bounds-result"}
include_graphics("figures/task3-example-manual-bounds-results.png")
```

yielding about 90% of cumulative exit probability, which corresponds to the
study power assuming a standardized effect size of 3.3553. To see the type
I error of this design, that is, the probability under H0, we simply set the
drift to zero.

```{r, out.width = "35%", fig.alt = "task-3-example-manual-bounds-zero-drift"}
include_graphics("figures/task3-example-manual-bounds-zero-drift.png")
```

Re`CALCULATE` gives

```{r, out.width = "50%", fig.alt = "task-3-example-manual-bounds-zero-drift-results"}
include_graphics("figures/task3-example-manual-bounds-zero-drift-results.png")
```

thereby resulting in a type I error of about 16.3%, which clearly exceeds the
typically allowed level of 5%. As such the design is not valid.

To get closer to 5% we now could start adjusting the bounds bit by bit.
For example, as the design already spends 15.8% of alpha at stage 1, lets
increase the first stage bound to two.

```{r, out.width = c("40%", "55%"), echo = FALSE, fig.show = "hold", fig.alt = "manual-bounds-zero-drift-adjusted"}
include_graphics("figures/task3-example-manual-bounds-zero-drift-adjusted.png")
include_graphics("figures/task3-example-manual-bounds-zero-drift-adjusted-results.png")
```

The type I error drops to about 3.8% so now we are a bit too conservative and
could further adjust. If we set the last bound to 2 as well, we actually end
up with a classic Pocock design.

```{r, out.width = c("40%", "55%"), echo = FALSE, fig.show = "hold", fig.alt = "manual-pocock"}
include_graphics("figures/task3-manual-Pocock.png")
include_graphics("figures/task3-manual-Pocock-results.png")
```

Very close already and of course the easiest way to get a Pocock design with
exactly 5% alpha level is to abort manual bounds and revert back to using
the corresponding function.

```{r, out.width = c("40%", "55%"), echo = FALSE, fig.show = "hold", fig.alt = "exact-pocock-bounds"}
include_graphics("figures/task3-exact-Pocock.png")
include_graphics("figures/task3-exact-Pocock-results.png")
```

Last but not least lets calculate the power for this design, if the drift is 2,

```{r, out.width = c("40%", "55%"), echo = FALSE, fig.show = "hold", fig.alt = "exact-pocock-drift"}
include_graphics("figures/task3-exact-Pocock-drift2.png")
include_graphics("figures/task3-exact-Pocock-drift2-results.png")
```

which apparently gives about 56.6%.

In the last vignette of this series we will see how to
[-4- Compute Confidence Interval](https://rpahl.github.io/GroupSeq/articles/task-4-compute-CI.html)s
at the final stage of a group sequential study.



```{r, include = FALSE}
options(old)
```
