Skip to contents

See Czado et al. (2009).


pit(x, ...)
# S3 method for default
pit(x, pdistr, J = 10, relative = TRUE, ..., plot = list())



numeric vector representing the observed counts.


either a list of predictive cumulative distribution functions for the observations x, or (the name of) a single predictive CDF used for all x (with potentially varying arguments ...). It is checked that the predictive CDF returns 0 at x=-1. The name of its first argument can be different from x, e.g., pdistr="pnbinom" is possible.
If pdistr is a single function and no additional ... arguments are supplied, pdistr is assumed to be vectorized, i.e., it is simply called as pdistr(x) and pdistr(x-1). Otherwise, the predictive CDF is called sequentially and does not need to be vectorized.


the number of bins of the histogram.


logical indicating if relative frequency or the density should be plotted. Due to a historical bug, relative=TRUE (the default) actually plots a density histogram while relative=FALSE plots relative frequencies.


ignored if pdistr is a list. Otherwise, such additional arguments are used in sequential calls of pdistr via mapply(pdistr, x, ...).


a list of arguments for plot.histogram. Otherwise, no plot will be produced.


an object of class "pit", which inherits from class

"histogram" (see hist). It is returned invisibly if a plot is produced.


Czado, C., Gneiting, T. and Held, L. (2009): Predictive model assessment for count data. Biometrics, 65 (4), 1254-1261. doi:10.1111/j.1541-0420.2009.01191.x


Michaela Paul and Sebastian Meyer


## Simulation example of Czado et al. (2009, Section 2.4)
x <- rnbinom(200, mu = 5, size = 2)
pdistrs <- list("NB(5,0)"   = function (x) ppois(x, lambda=5),
                "NB(5,1/2)" = function (x) pnbinom(x, mu=5, size=2),
                "NB(5,1)"   = function (x) pnbinom(x, mu=5, size=1))
## Reproduce Figure 1
op <- par(mfrow = c(1,3))
for (i in seq_along(pdistrs)) {
    pit(x, pdistr = pdistrs[[i]], J = 10,
        plot = list(ylim = c(0,2.75), main = names(pdistrs)[i]))

## Alternative call using ... arguments for pdistr (less efficient)
stopifnot(identical(pit(x, "pnbinom", mu = 5, size = 2, plot = FALSE),
                    pit(x, pdistrs[[2]], plot = FALSE)))