点过程的强度 - 协变量的权重 - spatstat
intensity of point process - weights with covariate - spatstat
我正在针对特定情况尝试使用 spatstat。在我的道路 shapefile 中,我有属性速度和每条道路上重型车辆的百分比。据观察,在高速和重型车辆的道路上很可能发生严重事故(因为道路没有适当的访问控制和行人横穿马路)。我们知道事故的发生率是一定的(每 5 公里)。
- 我想生成一个具有该速率的随机泊松,但考虑到这些点更多地发生在高速道路(或高百分比卡车)上
- 如果可能,还包括卡车的第二个变量 %
对这两个方面进行建模以进行小型概念验证的最佳方法是什么?我已经阅读了(部分)spatstat 书和关于协变量对强度影响的部分,但这对我来说仍然不清楚。
谢谢
spatstat
函数 rpoislpp
在网络上生成具有给定强度的泊松随机点模式。在这种情况下,您需要空间变化的强度,可以通过空间位置的函数指定。也就是说,您需要类似 rpoislpp(f, L)
的东西,其中 L
是线性网络,f
是强度函数。
我假设您已获得每条道路的协变量值(如限速和货车比例)。然后您需要构建一个函数来查找网络上任何空间位置的这些值。一旦你有了这个,你就可以用它来写强度函数。
首先,假设您有一个网络 L
(class linnet
的对象)。网络段可以按照您指定它们时给定的原始顺序进行索引:或者您可以通过 S <- as.psp(L)
提取这些段。我们需要一个向量 z
给出每个片段的协变量值(因此这将是一个长度为 n=nsegments(S)
的数字向量)。那么 z[i]
是沿线段 i
的协变量值。 (注意:如果你有每个 道路 的协变量值,其中一条道路由 L
的多个路段组成,那么你首先需要找出 [=16= 的哪些路段]属于每条路,构造z
.)
接下来执行以下操作:
Zfun <- linfun(function(x,y,seg,tp) { z[seg] }, L)
这会在线性网络 (class linfun
) 上创建一个函数,用于评估 L
上任何空间位置的协变量。要检查它是否正确构建,请键入 plot(Zfun)
。
现在假设您希望点处理强度为 lambda = exp(3*Z+2)
。然后做
lam <- function(x,y,seg,tp) { exp(3 * z[seg] + 2) }
lambda <- linfun(lam, L)
(不用说了,大括号里可以写任何数学表达式;而且可以有多个协变量等)
最终生成随机点:
X <- rpoislpp(lambda, L)
我正在针对特定情况尝试使用 spatstat。在我的道路 shapefile 中,我有属性速度和每条道路上重型车辆的百分比。据观察,在高速和重型车辆的道路上很可能发生严重事故(因为道路没有适当的访问控制和行人横穿马路)。我们知道事故的发生率是一定的(每 5 公里)。
- 我想生成一个具有该速率的随机泊松,但考虑到这些点更多地发生在高速道路(或高百分比卡车)上
- 如果可能,还包括卡车的第二个变量 %
对这两个方面进行建模以进行小型概念验证的最佳方法是什么?我已经阅读了(部分)spatstat 书和关于协变量对强度影响的部分,但这对我来说仍然不清楚。
谢谢
spatstat
函数 rpoislpp
在网络上生成具有给定强度的泊松随机点模式。在这种情况下,您需要空间变化的强度,可以通过空间位置的函数指定。也就是说,您需要类似 rpoislpp(f, L)
的东西,其中 L
是线性网络,f
是强度函数。
我假设您已获得每条道路的协变量值(如限速和货车比例)。然后您需要构建一个函数来查找网络上任何空间位置的这些值。一旦你有了这个,你就可以用它来写强度函数。
首先,假设您有一个网络 L
(class linnet
的对象)。网络段可以按照您指定它们时给定的原始顺序进行索引:或者您可以通过 S <- as.psp(L)
提取这些段。我们需要一个向量 z
给出每个片段的协变量值(因此这将是一个长度为 n=nsegments(S)
的数字向量)。那么 z[i]
是沿线段 i
的协变量值。 (注意:如果你有每个 道路 的协变量值,其中一条道路由 L
的多个路段组成,那么你首先需要找出 [=16= 的哪些路段]属于每条路,构造z
.)
接下来执行以下操作:
Zfun <- linfun(function(x,y,seg,tp) { z[seg] }, L)
这会在线性网络 (class linfun
) 上创建一个函数,用于评估 L
上任何空间位置的协变量。要检查它是否正确构建,请键入 plot(Zfun)
。
现在假设您希望点处理强度为 lambda = exp(3*Z+2)
。然后做
lam <- function(x,y,seg,tp) { exp(3 * z[seg] + 2) }
lambda <- linfun(lam, L)
(不用说了,大括号里可以写任何数学表达式;而且可以有多个协变量等)
最终生成随机点:
X <- rpoislpp(lambda, L)