我使用 ggplot2 和 stat_density 制作了一些密度图。我的同事提到他不相信每条曲线下的面积总和为 1。所以,我开始计算曲线下的面积,我想知道是否有比我所做的更好的方法。
这是我所做的一个例子:
data(iris)
p<-ggplot(iris,aes(x=Petal.Length))+
stat_density(aes(colour=Species),geom="line",position="identity")
q<-print(p)
q<-q$data[[1]]
# calculate interval between density estimates for a given point.
# assume it is the same interval for all estimates
interval<-q$x[2]-q$x[1]
# calculate AUC by summing interval*height for the density estimate at each point
tapply(q$density*interval,
q$group,
sum)
结果:
1 2 3
0.9913514 1.0009785 0.9817040
它似乎工作得很好,但我想知道是否有更好的方法来做到这一点。特别是,我对间隔(即 dx,我想)的计算似乎可能是一个问题,特别是如果不同的密度曲线使用不同的间隔。