Generates the sequence of probability points
`(1:m - a)/(m + (1-a)-a)`

where `m`

is either `n`

, if `length(n)==1`

, or
`length(n)`

.

`ppoints(n, a = if(n `

n

either the number of points generated or a vector of observations.

a

the offset fraction to be used; typically in \((0,1)\).

If \(0 < a < 1\), the resulting values are within \((0,1)\)
(excluding boundaries).
In any case, the resulting sequence is symmetric in \([0,1]\), i.e.,
`p + rev(p) == 1`

.

`ppoints()`

is used in `qqplot`

and `qqnorm`

to generate
the set of probabilities at which to evaluate the inverse distribution.

The choice of `a`

follows the documentation of the function of the
same name in Becker *et al* (1988), and appears to have been
motivated by results from Blom (1958) on approximations to expect normal
order statistics (see also `quantile`

).

The probability points for the continuous sample quantile types 5 to 9
(see `quantile`

) can be obtained by taking `a`

as,
respectively, 1/2, 0, 1, 1/3, and 3/8.

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
*The New S Language*.
Wadsworth & Brooks/Cole.

Blom, G. (1958)
*Statistical Estimates and Transformed Beta Variables.*
Wiley

# NOT RUN { ppoints(4) # the same as ppoints(1:4) ppoints(10) ppoints(10, a = 1/2) ## Visualize including the fractions : require(graphics) # } # NOT RUN { p.ppoints <- function(n, ..., add = FALSE, col = par("col")) { pn <- ppoints(n, ...) if(add) points(pn, pn, col = col) else { tit <- match.call(); tit[[1]] <- quote(ppoints) plot(pn,pn, main = deparse(tit), col=col, xlim = 0:1, ylim = 0:1, xaxs = "i", yaxs = "i") abline(0, 1, col = adjustcolor(1, 1/4), lty = 3) } if(!add && requireNamespace("MASS", quietly = TRUE)) text(pn, pn, as.character(MASS::fractions(pn)), adj = c(0,0)-1/4, cex = 3/4, xpd = NA, col=col) abline(h = pn, v = pn, col = adjustcolor(col, 1/2), lty = 2, lwd = 1/2) } p.ppoints(4) p.ppoints(10) p.ppoints(10, a = 1/2) p.ppoints(21) p.ppoints(8) ; p.ppoints(8, a = 1/2, add=TRUE, col="tomato") # }