问题描述
是否可以使用 spatstat
来估计给定 ppp
对象的强度函数并计算其考虑新点的值?例如,我可以在 D
:
new_point
# 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 年 3 月 30 日创建
我在想也许我可以superimpose()
这两个ppp
对象(即swedishpines
和new_point
)然后运行density
设置{{1} } 和 at = "points"
但我不确定这是否是建议的方法(我不确定在估计过程中是否忽略了附加点)。
我知道这听起来像是一个微不足道的问题,但我阅读了一些文档并没有找到答案或解决方案。
解决方法
有两种方法可以做到这一点。
首先是简单地获取强度的像素图像,并使用[
提取所需位置的像素值:
D <- density(swedishpines)
v <- D[new_points]
查看 density.ppp
和 [.im
的帮助。
另一种方式是使用densityfun
:
f <- densityfun(swedishpines)
v <- f(new_points)
查看 densityfun.ppp
的帮助
第一种方式效率更高,第二种方式更准确。
技术问题:如果某些 new_points
可能位于 swedishpines
的窗口之外,那么这些点处的值(数学上)未定义。上述两种方法都将简单地忽略这些点,结果向量 v
将比新点的数量短。如果您需要处理这种偶然性,最简单的方法是使用 D[new_points,drop=FALSE]
,它为此类位置返回 NA
值。