Thomas Hopper <[EMAIL PROTECTED]> writes: > I am attempting to wrap the histogram function in my own custom > function, so that I can quickly generate some standard plots. > > A part of what I want to do is to draw a normal curve over the histogram: > > > x <- rnorm(1000) > > hist(x, freq=F) > > curve(dnorm(x), lty=3, add=T) > > (for normal use, x would be a vector of empirical values, but the > rnorm() function works for testing) > > That works just as you'd expect, but I've found something a bit strange. > > If I try the following: > > > curve(dnorm(x, mean=mean(x), sd=sd(x)), lty=3, add=T) > > I get a much flatter and broader curve (which looks like it probably > has the same area as the first curve, though I haven't tested). > > However, if I do > > > z <- sd(x) > > curve(dnorm(x, mean=mean(x), sd=z), lty=1, add=T) > > I get the curve you'd expect; it draws right over the first curve > (curve(dnorm(x),...), above).
I don't think that is guaranteed, actually. Notice that curve plots the *expression* as a function of the argument "x". So it takes a bunch of x values, evenly spread across the abscissa collects them into a vector and plugs that in as "x" in curve(dnorm(x, mean=mean(x), sd=sd(x)), lty=3, add=T) I.e. the x that gets plugged into mean(x) and sd(x) has nothing to do with your original data (except that they both fit in the same xlim)! -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html