我正在尝试使用 R 中的“密度”函数来进行核密度估计。我在解释结果和比较各种数据集时遇到了一些困难,因为曲线下的面积似乎不一定是 1。对于任何概率密度函数 (pdf) ,我们需要有面积. 我假设内核密度估计报告了 pdf。我正在使用来自sfsmisc 的集成.xy来估计曲线下的面积。
> # generate some data
> xx<-rnorm(10000)
> # get density
> xy <- density(xx)
> # plot it
> plot(xy)
> # load the library
> library(sfsmisc)
> integrate.xy(xy$x,xy$y)
[1] 1.000978
> # fair enough, area close to 1
> # use another bw
> xy <- density(xx,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 6.518703
> xy <- density(xx,bw=1)
> integrate.xy(xy$x,xy$y)
[1] 1.000977
> plot(xy)
> xy <- density(xx,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 6507.451
> plot(xy)
曲线下的面积不应该总是1吗?似乎小带宽是个问题,但有时您想在尾部显示细节等,并且需要小带宽。
更新/答案:
似乎下面关于凸区域高估的答案是正确的,因为增加积分点的数量似乎可以减轻问题(我没有尝试使用超过点。)
> xy <- density(xx,n=2^15,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 1.000015
> xy <- density(xx,n=2^20,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 2.812398