latticeExtra (version 0.6-9)

rootogram: Trellis Displays of Tukey's Hanging Rootograms

Description

Displays hanging rootograms.

Usage

rootogram(x, ...)

## S3 method for class 'formula': rootogram(x, data = parent.frame(), ylab = expression(sqrt(P(X == x))), prepanel = prepanel.rootogram, panel = panel.rootogram, ...)

prepanel.rootogram(x, y = table(x), dfun = NULL, transformation = sqrt, hang = TRUE, ...)

panel.rootogram(x, y = table(x), dfun = NULL, col = plot.line$col, lty = plot.line$lty, lwd = plot.line$lwd, alpha = plot.line$alpha, transformation = sqrt, hang = TRUE, ...)

Arguments

x, y
For rootogram, x is the object on which method dispatch is carried out. For the "formula" method, x is a formula describing the form of conditioning plot. The formula can be either of the f
data
For the "formula" method, a data frame containing values for any variables in the formula, as well as those in groups and subset if applicable (groups is currently ignored by the default pane
dfun
a probability mass function, to be evaluated at unique x values
prepanel, panel
panel and prepanel function used to create the display.
ylab
the y-axis label; typically a character string or an expression.
col, lty, lwd, alpha
graphical parameters
transformation
a vectorized function. Relative frequencies (observed) and theoretical probabilities (dfun) are transformed by this function before being plotted.
hang
logical, whether lines representing observed relative freuqncies should hang from the curve representing the theoretical probabilities.
...
extra arguments, passed on as appropriate. Standard lattice arguments as well as arguments to panel.rootogram can be supplied directly in the high level rootogram call.

Value

  • rootogram produces an object of class "trellis". The update method can be used to update components of the object and the print method (usually called by default) will plot it on an appropriate plotting device.

Details

This function implements Tukey's hanging rootograms. Also consider the rootogram function in the vcd package, especially if the number of unique values is small.

See Also

xyplot

Examples

Run this code
library(lattice)

x <- rpois(1000, lambda = 50)

p <- rootogram(~x, dfun = function(x) dpois(x, lambda = 50))
p

lambdav <- c(30, 40, 50, 60, 70)

update(p[rep(1, length(lambdav))],
       aspect = "xy",
       panel = function(x, ...) {
           panel.rootogram(x,
                           dfun = function(x)
                           dpois(x, lambda = lambdav[panel.number()]))
       })


lambdav <- c(46, 48, 50, 52, 54)

update(p[rep(1, length(lambdav))],
       aspect = "xy",
       prepanel = function(x, ...) {
           tmp <-
               lapply(lambdav,
                      function(lambda) {
                          prepanel.rootogram(x,
                                             dfun = function(x)
                                             dpois(x, lambda = lambda))
                      })
           list(xlim = range(sapply(tmp, "[[", "xlim")),
                ylim = range(sapply(tmp, "[[", "ylim")),
                dx = do.call("c", lapply(tmp, "[[", "dx")),
                dy = do.call("c", lapply(tmp, "[[", "dy")))
       },
       panel = function(x, ...) {
           panel.rootogram(x,
                           dfun = function(x)
                           dpois(x, lambda = lambdav[panel.number()]))
           grid::grid.text(bquote(Poisson(lambda == .(foo)),
                                  where = list(foo = lambdav[panel.number()])),
                           y = 0.15,
                           gp = grid::gpar(cex = 1.5))
       },
       xlab = "",
       sub = "Random sample from Poisson(50)")

Run the code above in your browser using DataCamp Workspace