R - spatstat:计算新点的密度

R - spatstat: Calculate density for a new point

是否可以使用 spatstat 估计给定 ppp 对象的强度函数并考虑新点计算其值?例如,我可以在 new_point:

评估 D
# packages
library(spatstat)

# define a random point within Window(swedishpines)
new_point <- ppp(x = 45, y = 45, window = Window(swedishpines))

# estimate density
(D <- density(swedishpines))
#> real-valued pixel image
#> 128 x 128 pixel array (ny, nx)
#> enclosing rectangle: [0, 96] x [0, 100] units (one unit = 0.1 metres)

reprex package (v1.0.0)

于 2021-03-30 创建

我在想也许我可以 superimpose() 两个 ppp 对象(即 swedishpinesnew_point)然后 运行 density 设置 at = "points"weights = c(rep(1, points(swedishpines)), 0) 但我不确定这是否是建议的方法(我不确定在估计过程中附加点是否被忽略)。

我知道这听起来像是一个微不足道的问题,但我阅读了一些文档但没有找到答案或解决方案。

有两种方法可以做到这一点。

首先是简单地获取强度的像素图像,并使用[提取所需位置的像素值:

D <- density(swedishpines)
v <- D[new_points]

查看 density.ppp[.im 的帮助。

另一种方法是使用densityfun:

f <- densityfun(swedishpines)
v <- f(new_points)

查看 densityfun.ppp

的帮助

第一种方式更高效,第二种方式更准确。

技术问题:如果某些 new_points 可能位于 swedishpines 的 window 之外,则这些点的值为 (数学上)未定义。上面描述的两种方法都会简单地忽略这些点,并且生成的向量 v 将比新点的数量短。如果您需要处理这种连续性,最简单的方法是使用 D[new_points, drop=FALSE] which returns NA values for such locations.