Search code examples
rhistogramcurve-fittingr-faq

Fitting a density curve to a histogram in R


Is there a function in R that fits a curve to a histogram?

Let's say you had the following histogram

hist(c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))

It looks normal, but it's skewed. I want to fit a normal curve that is skewed to wrap around this histogram.

This question is rather basic, but I can't seem to find the answer for R on the internet.


Solution

  • If I understand your question correctly, then you probably want a density estimate along with the histogram:

    X <- c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4))
    hist(X, prob=TRUE)            # prob=TRUE for probabilities not counts
    lines(density(X))             # add a density estimate with defaults
    lines(density(X, adjust=2), lty="dotted")   # add another "smoother" density
    

    Edit a long while later:

    Here is a slightly more dressed-up version:

    X <- c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4))
    hist(X, prob=TRUE, col="grey")# prob=TRUE for probabilities not counts
    lines(density(X), col="blue", lwd=2) # add a density estimate with defaults
    lines(density(X, adjust=2), lty="dotted", col="darkgreen", lwd=2) 
    

    along with the graph it produces:

    enter image description here