2013-06-27 43 views
4

我有一個關於kde2d (Kernel density estimator).的問題我正在爲變量的相同空間中的兩組不同的數據計算兩個不同的kde2d。當我用filled.contour2或contour比較時,我發現散點圖中具有較低密度點的集合(其中總點數少於10個)的集合具有較高的輪廓值密度。我期望具有更高點密度的組具有更高的密度輪廓值,但正如我上面所說的那樣並非如此。必須選擇帶寬(h)?我使用等於h,我試圖改變,但結果並沒有改變很多。我的錯誤是什麼?kde2d密度比較

一個例子

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") 
+0

請包括一個可重現的示例:http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example – Thomas

+0

我在問題中顯示了一個例子... – Andre

+0

'filled.contour2'從哪裏來?我找不到任何包,只有在這裏:http://wiki.cbr.washington.edu/qerm/sites/qerm/images/4/44/Filled.contour2.R – geneorama

回答

0

我不知道我同意密度應在統一的情況不同。我本來期望從正態分佈中隨機抽取更多點的集合對極端區域有更多的支持,因此在中心具有更低(估計)的密度。這種影響也可能偶爾會出現在統一的1,000點和100,000點之間。我希望我對你的代碼的修改是可以接受的。如果在圖之後完成,則更容易看到contour。因爲密度分佈被歸一化爲1.0的積分,所以理論密度在這兩種情況下都是相同的,我們只考慮來自「邊緣」效應的一些預期僞像的估計值,在單變量密度的情況下添加有關邊界的信息可以使用package :: logspline中的平臺函數完成。)