我正在分析STATS19道路交通事故数据,值得称赞UK government向公众开放。我想看看不同类型的事故是如何聚集在一起的。 “G函数”(描述为here)可用于测量点模式与完全空间随机性“CSR”的情况的差异。
spatstat很好地处理了这类问题,envelope
函数提供了模式在不同距离上与CSR分离的程度的可视化。
正如我的同事Dan Olner所指出的那样,结果(如下所示,显示出与CSR的巨大差异)并不一定显示聚类 - 可能只是我们正在检测道路网络的自然聚类,大多数交通事故发生。下面的图表可以通过克隆我的GitHub repo并运行以下内容(运行部分WY.R之后)来复制:
r <- seq(0, sqrt(2)/6, by = 0.005)
acB1 <- elide(acB, scale = TRUE)
# acB1 <- acB1[1:50,] # for tiny subset
acB1 <- SpatialPoints(acB1)
# Calculate the G function for the points
envacB <- envelope(as(acB1, "ppp"), fun = Gest)
# Calculate the G function for the points
plot(envacB)
Adrian Baddeley(spatstat开发人员)本人在package's documentation中实际描述了这个问题:
点可以是一维中的位置(例如 在道路网络上记录的道路交通事故)
这正是我所面临的情况,但我不知道如何修改上述分析以限制CSR(或更好,接近 - 因为并非所有事故都在路上 - 见下文)网络。 (见数据here)。
一个建议是从道路网络中获取随机点并为此计算G函数并将其与我的事故数据进行比较,但这不会创建一个明确的(统计上显着的)边界框。有什么建议吗?
答案 0 :(得分:2)
您认为群集可能是由于道路网络上发生的事故,这是完全正确的。必须考虑到这一点。 在spatstat中,道路网络由“linnet”对象表示,因此您需要将道路网络转换为此格式。我不知道具体细节,但我猜你应该看一下spatstat中的“shapefile”小插图(你可能需要通过线段类“psp”来导入东西):
vignette("shapefiles", package="spatstat")
线性网络上的点模式属于“lpp”类,因此这是您最终需要的数据格式。如果您已设法将您的网络存储为linnet对象“mynet”,您应该可以执行以下操作:
X <- as(acB1, "ppp")
X <- lpp(X, mynet)
这会自动将您的积分投射到网络上。现在,您可以查看网络上的摘要统计信息。我不认为G功能在这个设置中实现,但我知道K功能是(功能“linearK”),所以你可以使用它。您在代码中使用的通用函数信封现在调用envelope.lpp,这样可以确保在网络上生成CSR模拟。
我希望其中一些有用,尽管不是很详细。有关更多详细信息,请查看spatstat中的相关帮助文件:
help(lpp)
help(linnet)
help(linearK)
报告你如何从这里进步,然后我(或者更可能是Adrian Baddeley)可能会给你一些指示。