如何使用 R 中的 Spatstat 将强度转换为点模式中的概率?

How to convert intensities to Probabilities in a point pattern using Spatstat in R?

我有两个点模式 (ppp) 对象 p1 和 p2。 p1和p2分别有X点和Y点。我在 p1 中安装了一个 ppm 模型(位置坐标作为自变量),然后用它来预测 p2 中每个 Y 点的 "intensity"。

现在我想获得 p2 中 point/zone 处事件发生的概率。为此,我如何使用预测强度?

我可以使用 Spatstat 执行此操作吗? 还有其他选择吗

你的问题 objective 和目前的方法我不是很清楚。它 将是有益的,如果你能提供代码和图形,这解释了 更清楚你做了什么,你想要得到什么。如果你 无法共享您可以使用的数据,例如内置数据集 chorley 作为 示例(或简单地模拟人工数据):

library(spatstat)
plot(chorley, cols = c(rgb(0,0,0,1), rgb(.8,0,0,.2)))

X <- split(chorley)
X1 <- X$lung
X2 <- X$larynx
mod <- ppm(X1 ~ polynom(x, y, 2))
inten <- predict(mod)
summary(inten)
#> real-valued pixel image
#> 128 x 128 pixel array (ny, nx)
#> enclosing rectangle: [343.45, 366.45] x [410.41, 431.79] km
#> dimensions of each pixel: 0.18 x 0.1670312 km
#> Image is defined on a subset of the rectangular grid
#> Subset area = 315.291058349571 square km
#> Subset area fraction = 0.641
#> Pixel values (inside window):
#>  range = [0.002812544, 11.11172]
#>  integral = 978.5737
#>  mean = 3.103715
plot(inten)

X2 中 58 个位置的预测强度

intenX2 <- predict.ppm(mod, locations = X2)
summary(intenX2)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>  0.1372  4.0025  6.0544  6.1012  8.6977 11.0375

这些预测强度 intenX2[i] 表示在一个小社区中 在每个点 X2[i] 周围,来自 X1 的估计点数是泊松 分布均值 intenX2[i] 乘以小社区的面积。 所以实际上你已经估计了一个模型,在这个模型中你有一个小区域 该区域中发生的任意数量的点的概率分布。如果 你想要分布在更大的区域你只需要整合 该地区的强度。

要获得更好的答案,您必须提供有关问题的更多详细信息。 reprex package (v0.2.1)

创建于 2018-12-12

强度是每单位面积的预期点数。在小区域(例如像素)中,您只需将强度乘以像素面积即可获得像素中某个点存在的概率。

fit <- ppm(p1, .......)
inten <- predict(fit)
pixarea <- with(inten, xstep * ystep)
prob <- inten * pixarea

如果 prob 值小于大约 0.4,则此规则是准确的。

在更大的区域W中,预期的点数是强度函数在该区域上的积分:

EW <- integrate(inten, domain=W)

结果EW是一个数值,即W中预期的总点数。要获得至少一个点的概率,

P <- 1- exp(-EW)

您还可以使用带参数 interval="prediction"predict.ppm 来计算点数的预测区间。