[R] density() integrates to 1?

Adaikalavan RAMASAMY ramasamya at gis.a-star.edu.sg
Thu Sep 25 13:01:28 CEST 2003

We can try a to approximate the area under the curve using Trapezoidal rule on the plotting coordinates that density() produces. 

nbin <- 1024                   # number of bin

d <- density( rnorm(50000), n=nbin)

totalArea <- 0
for(i in 1:(nbin-1) ){

  xxx <- d$x[i+1] - d$x[i]     # width of bin
  yyy <- (d$y[i+1] + d$y[i])/2 # average height of bin

  binArea <- xxx*yyy
  totalArea <- totalArea + binArea


We can see that the total area under the curve is close to 1 and the approximation gets better as nbin is increased (but this is always an overestimate due to the concavity of the normal curve).

More information about the R-help mailing list