Friday, February 27, 2009

[R] How to superimpose a histogram and density plot

Peter,

1. Why would R users have the S-PLUS 4 Guide to Statistics handy? :-)

2. The problem with hist() is that it does not do a real histogram. The
vertical scale is, by default, a *frequency* axis, not a *relative
frequency density* axis which would put it on the same scale as a density
estimate. Brian Ripley and I got so annoyed about this we wrote our own
function for the MASS library called "truehist" - to make a true histogram!
The fact that every elementary book on statistics does it this way does not
make it correct. To be helpful, a histogram really has to be a
non-parametric
density estimator, period.

Enough already of polemics. If you want a density estimate and a histogram
on the same scale, I suggest you try something like this:

> IQR <- diff(summary(data)[c(5,2)])
> dest <- density(data, width = 2*IQR) # or some smaller width, maybe,
> hist(data, xlim = range(dest$x), xlab = "x", ylab = "density",
+ probability = TRUE) # <<<--- this is the vital argument
> lines(dest, lty=2)

Best of luck,
Bill Venables.


-----Original Message-----
From: Peter B. Mandeville
To: r-help at stat.math.ethz.ch
Sent: 6/7/99 9:24 PM
Subject: [R] How to superimpose a histogram and density plot

NCSS has a nice plot of the histogram and density plot superimposed. The
S-PLUS 4 Guide to Statistics on page 45 suggests the following code for
a general purpose density plot for a vector named data

iqd <- summary(data)[5]-summary(data)[2]
plot(density(data,width=2*iqd),xlab="x",ylab="",type="l")

Is it possible to superimpose the density plot on a histogram produced
with hist()? I tried lines(density(data,width=2*iqd),type="l") but the
results weren't satisfactory.

Thank you,

Peter B.

0 Comments:

Post a Comment

<< Home