# Using the generalized pivotal quantities

The *generalized pivotal quantities* were introduced by Weerahandi. These are random variables, which are simulated by the function `rGPQ`

.

Statistical inference based on the generalized pivotal quantities is similar to Bayesian posterior inference. For example, a generalized confidence interval of a parameter is obtained by taking the quantiles of the generalized pivotal quantity associated to this parameter.

## Generalized confidence interval

Below is an example. We derive generalized confidence intervals for the three parameters defining the ANOVA model as well as for the total variance.

```
library(AOV1R)
dat <- simAOV1R(I = 20, J = 5, mu = 10, sigmab = 1, sigmaw = 1)
fit <- aov1r(y ~ group, data = dat)
nsims <- 50000L
gpq <- rGPQ(fit, nsims)
gpq[["GPQ_sigma2tot"]] <- with(gpq, GPQ_sigma2b + GPQ_sigma2w)
# Generalized confidence intervals:
t(vapply(gpq, quantile, numeric(2L), probs = c(2.5, 97.5)/100))
```

```
#> 2.5% 97.5%
#> GPQ_mu 9.8270838 10.674387
#> GPQ_sigma2b 0.2433838 1.526248
#> GPQ_sigma2w 0.8020371 1.503742
#> GPQ_sigma2tot 1.2547967 2.658914
```

## Generalized prediction interval

Here we generate simulations of the generalized predictive distribution:

`ypred <- with(gpq, rnorm(nsims, GPQ_mu, sqrt(GPQ_sigma2tot)))`

And then we get the generalized prediction interval by taking quantiles:

`quantile(ypred, probs = c(2.5, 97.5)/100)`

```
#> 2.5% 97.5%
#> 7.586075 12.972425
```

## One-sided generalized tolerance intervals

To get the bound of a one-sided generalized tolerance interval with tolerance level \(p\) and confidence level \(1-\alpha\), generate the simulations of the generalized pivotal quantity associated to the \(100p\%\)-quantile of the distribution of the response, then take the \(100\alpha\%\)-quantile of these simulations for the right-sided tolerance interval and the \(100(1-\alpha)\%\)-quantile for the left-sided tolerance interval:

```
p <- 90/100
alpha <- 2.5/100
z <- qnorm(p)
GPQ_lowerQuantile <- with(gpq, GPQ_mu - z*sqrt(GPQ_sigma2tot))
GPQ_upperQuantile <- with(gpq, GPQ_mu + z*sqrt(GPQ_sigma2tot))
c(
quantile(GPQ_lowerQuantile, probs = alpha),
quantile(GPQ_upperQuantile, probs = 1-alpha)
)
```

```
#> 2.5% 97.5%
#> 7.943014 12.557365
```