# 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