[R] rootogram for normal distributions

Hugo Mildenberger Hugo.Mildenberger at web.de
Sun Jan 16 20:58:36 CET 2011


Thank you very much for your qualified answers, and also for the 
link to the Tukey paper. I appreciate Tukey's writings very much. 

Looking at the lattice code (below), a possible implementation might 
involve  binning, not so?

I see a problematic part here:

   xx <- sort(unique(x))

Unique certainly works well with Poisson distributed data, but is 
essentially a no-op when confronted with continous floating-point 
numbers.

Best

Hugo


> prepanel.rootogram
function (x, y = table(x), dfun = NULL, transformation = sqrt, 
    hang = TRUE, ...) 
{
    plot.line <- trellis.par.get("plot.line")
    stopifnot(is.function(dfun))
    yy <- transformation(y/sum(y))
    xx <- sort(unique(x))
    dotArgs <- list(...)
    dfunArgs <- names(formals(dfun))
    if (!("..." %in% dfunArgs)) 
        dotArgs <- dotArgs[dfunArgs[-1]]
    dd <- transformation(do.call(dfun, c(list(xx), dotArgs)))
    list(xlim = range(xx), ylim = if (hang) range(dd, dd - yy, 
        0) else range(dd, yy, 0), dx = diff(xx), dy = diff(dd))
}


>panel.rootogram
function (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, ...) 
{
    plot.line <- trellis.par.get("plot.line")
    ref.line <- trellis.par.get("reference.line")
    stopifnot(is.function(dfun))
    yy <- transformation(y/sum(y))
    xx <- sort(unique(x))
    dotArgs <- list(...)
    dfunArgs <- names(formals(dfun))
    if (!("..." %in% dfunArgs)) 
        dotArgs <- dotArgs[dfunArgs[-1]]
    dd <- transformation(do.call(dfun, c(list(xx), dotArgs)))
    panel.abline(h = 0, col = ref.line$col, lty = ref.line$lty, 
        lwd = ref.line$lwd, alpha = ref.line$alpha)
    panel.segments(xx, if (hang) 
        dd
    else 0, xx, if (hang) 
        (dd - yy)
    else yy, col = col, lty = lty, lwd = lwd, alpha = alpha, 
        ...)
    panel.lines(xx, dd)
}
<environment: namespace:latticeExtra>
> 





On Sunday 16 January 2011 15:59:58 Achim Zeileis wrote:
> On Sun, 16 Jan 2011, Hadley Wickham wrote:
> 
> >> The normal distribution is a continuous distribution, i.e., the frequency
> >> for each observed value will essentially be 1/n and not converge to the
> >> density function. Hence, you would need to look at histogram or smoothed
> >> densities. Rootograms, on the other hand, are intended for discrete
> >> distributions.
> >
> > I don't think that's true - rootograms are useful for both continuous
> > and discrete distributions.  See (e.g.) p 314 at
> > http://www.edwardtufte.com/tufte/tukey, where Tukey himself uses a
> > rootogram with a normal distribution.
> 
> OK, let me rephrase: Rootograms as implemented in rootogram() are intended 
> for discrete distributions. At least that's my reading. But maybe I've 
> missed a trick that you can point us to.
> Z
> 
> > Hadley
> >
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list