我正在为特定情况尝试spatstat。在我的道路形状文件中,我有每条道路上的属性速度和重型车辆的百分比。据观察,在高速和重型车辆的道路上可能发生严重事故(因为道路没有适当的出入控制和行人过马路)。我们知道有一定的事故率(每5公里伸展)。
对这两个方面进行建模以制作小概念证明的最佳方法是什么?我已阅读(部分)spatstat书和关于协变量对强度影响的部分,但这对我来说仍然不清楚。
由于
答案 0 :(得分:1)
spatstat
函数rpoislpp
在网络上生成具有给定强度的泊松随机点模式。在这种情况下,您需要一个空间变化的强度,可以通过空间位置的函数指定。也就是说,您需要类似rpoislpp(f, L)
的内容,其中L
是线性网络,f
是强度函数。
我假设您已获得每条道路的协变量值(如速度限制和卡车分数)。然后,您需要构建一个在网络上的任何空间位置查找这些值的函数。一旦你有了这个,就可以用它来写出强度函数。
首先,假设您有一个网络L
(类linnet
的对象)。网络的各个部分可以按指定时给出的原始顺序编制索引:或者您可以按S <- as.psp(L)
提取这些细分。我们需要一个向量z
给出每个段的协变量值(所以这将是一个长度为n=nsegments(S)
的数字向量)。然后z[i]
是沿i
段的协变量值。 (注意:如果您有每个道路的协变量值,其中道路由多个L
段组成,那么您首先需要确定L
的哪些段属于每条道路,并构建z
。)
接下来执行以下操作:
Zfun <- linfun(function(x,y,seg,tp) { z[seg] }, L)
这会在线性网络(类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)