微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 kde2d

如何解决使用 kde2d

我很难在核密度估计中计算某个点位于特定区域的概率。这将用于显示动物在特定区域内移动的概率。

这是我的示例数据:

set.seed(123)
x <- runif(100,100)
y <- runif(100,100)

n <- 11
lims <- c(range(0,100),range(0,100))

f1 <- MASS::kde2d(x = x,y = y,n = n,lims = lims)

其中 f1$z 保存矩阵中的密度估计。对应的图如下所示:

library('plot.matrix')
plot(f1$z)

density estimates

现在,我的目标是找到一个点在蓝色包围的单元格中的概率。

我想知道,这是否可以通过简单的计算来实现:

library(raster)
raster <- raster(f1)
df <- as.data.frame(raster,xy=T)
df$layer / sum(df$layer)

但我认为解决方案必须是像 here 中描述的那样以某种方式集成。

谢谢!

解决方法

蓝色包围的点是点f1$z[3,2]。将此值乘以在您链接到的代码中计算出的单元格大小

xlim <- range(f1$x)
ylim <- range(f1$y)
cell_size <- (diff(xlim) / n) * (diff(ylim) / n)

f1$z[3,2] * cell_size
#[1] 0.003765805

跑题

要查看这将计算该单元格的概率,请计算所有单元格 f1$z 的密度。它必须等于 1。

norm <- sum(f1$z) * cell_size  # normalizing constant
sum(f1$z)*cell_size/norm
#[1] 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。