【问题标题】:dimensions of kde object from ks package, Rks 包中的 kde 对象的尺寸,R
【发布时间】:2014-04-26 12:25:28
【问题描述】:

我正在使用 R 中的 ks 包来估计使用距离和深度信息的 2d 空间利用率。我想做的是使用 95% 的轮廓输出来获得最大的垂直和水平距离。所以本质上,我希望能够获得所产生的 95% 轮廓的尺寸或测量值。

这里以一段代码为例,

require(ks)

dist<-c(1650,1300,3713,3718)
depth<-c(22,19.5,20.5,8.60)

dd<-data.frame(cbind(dist,depth))

## auto bandwidth selection
H.pi2<-Hpi(dd,binned=TRUE)*1
ddhat<-kde(dd,H=H.pi2)

plot(ddhat,cont=c(95),lwd=1.5,display="filled.contour2",col=c(NA,"palegreen"),
     xlab="",ylab="",las=1,ann=F,bty="l",xaxs="i",yaxs="i",
     xlim=c(0,max(dd[,1]+dd[,1]*0.4)),ylim=c(60,-3))  

任何有关如何执行此操作的信息都将非常有帮助。提前致谢,

【问题讨论】:

  • HPDregion 包中的 HPDregion 函数可能会有所帮助...

标签: r contour raster kde dimension


【解决方案1】:

从您的“kde”对象创建一个 95% 的轮廓多边形:

library(raster)
im.kde <- image2Grid (list(x = ddhat$eval.points[[1]], y =  ddhat$eval.points[[2]], z = ddhat$estimate))
kr <- raster(im.kde)

在构建多边形之前,很可能需要将此栅格重新采样到更高的分辨率,并在创建多边形对象之前包括以下两行:

new.rast <- raster(extent(im.kde),res = c(50,50))
kr <- resample(kr, new.rast)

bin.kr <- kr
bin.kr[bin.kr < contourLevels(k, prob = 0.05)]<-NA
bin.kr[bin.kr > 0]<-1
k.poly<-rasterToPolygons(bin.kr,dissolve=T)

请注意,结果与 Hawthorne Beier 的 GME 函数“kde”相似,但并不完全相同。他确实使用了 ks 中的 kde 函数,但必须对输出多边形做一些稍微不同的事情。

【讨论】:

    【解决方案2】:

    目前,我要争取“任何信息”奖,而不是尝试最终答案。在这种情况下,ks:::plot.kde 函数调度到 ks:::plotkde.2d。它通过副作用发挥它的魔力,我无法让这些函数返回可以在代码中检查的值。您需要破解 plotkde.2d 函数以返回用于绘制等高线的值。您可以通过以下方式可视化 ddhat$estimate 中的内容:

    persp(ddhat$estimate)
    

    contourLevels 似乎检查了estimate-矩阵并找到大于指定总密度百分比的值。

    > contourLevels(ddhat, 0.95)
             95% 
    1.891981e-05 
    

    然后根据哪些值超过该级别来绘制轮廓。 (我只是还没有找到执行此操作的代码。)

    【讨论】:

    • 谢谢。是的,我已经尝试获取该信息一段时间了
    猜你喜欢
    • 2014-11-14
    • 2021-12-24
    • 1970-01-01
    • 2015-08-22
    • 2016-07-12
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多