# Working with priors

Internally, **adoptr** is built around the joint distribution of a test statistic and the unknown location parameter of interest given a sample size, i.e. \[
\mathcal{L}\big[(X_i, \theta)\,|\,n_i\big]
\] where \(X_i\) is the stage-\(i\) test statistic and \(n_i\) the corresponding sample size. The distribution class for \(X_i\) is defined by specifying a `DataDistribution`

object, e.g., a normal distribution

```
library(adoptr)
datadist <- Normal()
```

To completely specify the marginal distribution of \(X_i\), the distribution of \(\theta\) must also be specified. The classical case where \(\theta\) is considered fixed, emerges as special case when a single parameter value has probability mass 1.

### Discrete priors

The simplest supported prior class are discrete `PointMassPrior`

priors. To specify a discrete prior, one simply specifies the vector of pivot points with positive mass and the vector of corresponding probability masses. E.g., consider an example where the point \(\delta = 0.1\) has probability mass \(0.4\) and the point \(\delta = 0.25\) has mass \(1 - 0.4 = 0.6\).

`disc_prior <- PointMassPrior(c(0.1, 0.25), c(0.4, 0.6))`

For details on the provided methods, see `?DiscretePrior`

.

### Continuous priors

**adoptr** also supports arbitrary continuous priors with support on compact intervals. For instance, we could consider a prior based on a truncated normal via:

```
cont_prior <- ContinuousPrior(
pdf = function(x) dnorm(x, mean = 0.3, sd = 0.2),
support = c(-2, 3)
)
```

For details on the provided methods, see `?ContinuousPrior`

.

### Conditioning

In practice, the most important operation will be conditioning. This is important to implement type one and type two error rate constraints. Consider, e.g., the case of power. Typically, a power constraint is imposed on a single point in the alternative, e.g. using the constraint

```
Power(Normal(), PointMassPrior(.4, 1)) >= 0.8
#> -Pr[x2>=c2(x1)] <= -0.8
```

If uncertainty about the true response rate should be incorporated in the design, it makes sense to assume a continuous prior on \(\theta\). In this case, the prior should be conditioned for the power constraint to avoid integrating over the null hypothesis:

```
Power(Normal(), condition(cont_prior, c(0, 3))) >= 0.8
#> -Pr[x2>=c2(x1)] <= -0.8
```