使用 kde2d 在核密度估计中找到面积概率
finding probability of area in kernel density estimation using kde2d
我很难计算核密度估计中某个点位于特定区域的概率。这将用于显示动物在特定区域移动的概率。
这是我的示例数据:
set.seed(123)
x <- runif(100,0,100)
y <- runif(100,0,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)
现在,我的目标是找出一个点在蓝色包围的单元格中的概率。
不知是否可以通过简单计算实现:
library(raster)
raster <- raster(f1)
df <- as.data.frame(raster,xy=T)
df$layer / sum(df$layer)
但我认为解决方案必须像 中描述的那样以某种方式集成。
谢谢!
蓝色包围的点就是f1$z[3, 2]
点。将此值乘以您 link 代码中计算的像元大小,并得到
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
我很难计算核密度估计中某个点位于特定区域的概率。这将用于显示动物在特定区域移动的概率。
这是我的示例数据:
set.seed(123)
x <- runif(100,0,100)
y <- runif(100,0,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)
现在,我的目标是找出一个点在蓝色包围的单元格中的概率。
不知是否可以通过简单计算实现:
library(raster)
raster <- raster(f1)
df <- as.data.frame(raster,xy=T)
df$layer / sum(df$layer)
但我认为解决方案必须像
谢谢!
蓝色包围的点就是f1$z[3, 2]
点。将此值乘以您 link 代码中计算的像元大小,并得到
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