kde2d密度比较

时间:2013-06-27 09:17:34

标签: r kernel-density

我有一个关于kde2d (Kernel density estimator).的问题我在同一个变量空间中为两组不同的数据计算两个不同的kde2d。当我将它们与filled.contour2或轮廓进行比较时,我发现散点图中点数密度较低的集合(总计中的点数较少,因子为10)对于轮廓值具有较高的密度。我期望具有更高点密度的集合将具有更高的密度轮廓值,但是如上所述并非如此。它必须与带宽(h)的选择?我使用等于h,我试图改变,但结果并没有改变很多。我的错误是什么?

一个例子

a <-  runif(1000, 5.0, 7.5)
b <-  runif(1000, 2.0, 3.0)
c <-  runif(100000,5.0, 7.5)
d <-  runif(100000, 2.0, 3.0)
library(MASS)
abdens <- kde2d(a,b,n=100,h=0.5)
cddens <- kde2d(c,d,n=100,h=0.5)
mylevels <- seq(-2.4,30,0.9)
filled.contour2(abdens,xlab="a",ylab="b",xlim=c(5,7.5),ylim=c(2,3), 
                col=hsv(seq(0,1,length=length(mylevels))))
 plot(a,b)
contour(abdens,nlevels=5,add=T,col="blue")
plot(c,d)
contour(cddens,nlevels=5,add=T,col="orange")

1 个答案:

答案 0 :(得分:0)

我不确定我是否同意在统一案件中密度应该不同。我原本期望从正态分布中获得更多随机抽取点的集合,以获得对极端区域的更多支持,从而在中心具有更低(估计)的密度。这种影响也可能偶尔会出现,而bibariate Uniform得分为1,000分,而不是100,000分。我希望我的代码修改是可以接受的。如果在绘图之后完成contour,则更容易看到。{/ p>

(理论密度在这两种情况下都是相同的,因为密度分布被归一化为1.0的积分。我们只关注具有一些预期伪影来自“边缘”效应的估计。在单变量密度的情况下添加有关边界的信息可以使用package :: logspline中的desity函数完成。)