【问题标题】:R - spatstat: Calculate density for a new pointR - spatstat:计算新点的密度
【发布时间】:2021-06-26 18:54:15
【问题描述】:

是否可以使用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) 但我不确定是否这是建议的方法(我不确定在估计过程中是否忽略了附加点)。

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

【问题讨论】:

    标签: r spatstat


    【解决方案1】:

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

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

    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 值。

    【讨论】:

    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多