density() returns a density function that does not add up to 1
Jonathan Li <jonqli at labs.agilent.com> writes:
Thank you for the message. It helps a lot. I see where my method was wrong. Now another case:
dd <- c(rnorm(1000,0,1), rnorm(100, 100,1), rnorm(10, 1000,1)) ddd <- density(dd) sum( diff(ddd$x)*ddd$y)
[1] 2.856715 If you add more extreme tails, the thing gets worse:
dd <- c(rnorm(1000,0,1), rnorm(100, 100,1), rnorm(10, 1000,1), rnorm(5, 5000,1)) ddd <- density(dd) sum( diff(ddd$x) * ddd$y)
[1] 13.90902 I am not sure what is going on now?
You're trying to calculate and then integrate a very spiky density. Try plotting it and then increase the number of points used to approximate it:
dd <- c(rnorm(1000,0,1), rnorm(100, 100,1), rnorm(10, 1000,1), rnorm(5, 5000,1)) ddd <- density(dd,n=2^15) sum( diff(ddd$x) * ddd$y)
[1] 1.000014
Warning message:
longer object length
is not a multiple of shorter object length in: diff(ddd$x) * ddd$y
O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._