如何使用 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
来计算点数的预测区间。
我有两个点模式 (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
来计算点数的预测区间。