2014-02-25 26 views
1

我在分析STATS19道路事故数据,由UK government向公众公开提供。我想看看如何聚集不同类型的事故。可以使用“G函数”(描述here)来测量来自完全空间随机性“CSR”的情况的点模式的偏差。限制在路网中的R中的聚类功能

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) 

G function for accidents

这个问题实际上是由阿德里安·巴德利(spatstat的开发者)自己形容在package's documentation

在一名维

点可能是位置(记录道路网络上的诸如 道路交通事故)

这正是我所面临的情况,但我不知道如何修改上面提到的分析来限制CSR(或者更好,接近 - 因为并非所有事故都在路上 - 请参阅下文)公路网。 (见数据here)。

accidents and the road network

一个建议是从路网采取随机点和计算G功能,这和它与我的事故数据进行比较,但不会产生明显的(统计上显著)边界框。有什么建议么?

回答

2

你是绝对正确的感知聚类可能是由于道路网络发生的事故。这必须考虑在内。 在spatstat中,道路网络由“linnet”对象表示,因此您需要将您的道路网络转换为此格式。我不知道个中详情,但我猜你应该看看在spatstat的“shape文件”暗角(您可能需要经过线段类“PSP”进口的东西):

vignette("shapefiles", package="spatstat") 

线性网络上的点模式属于“lpp”类,因此这是您最终需要的数据格式。如果您已成功地将您的网络作为红雀对象“我的网”,你应该能够做这样的事情:

X <- as(acB1, "ppp") 
X <- lpp(X, mynet) 

这会自动展现​​了你点到网络上。现在您可以查看网络上的汇总统计信息。我不认为G函数是在这个设置中实现的,但我知道K函数是(函数“linearK”),所以你可以使用它。您在代码中使用的通用函数包络现在调用envelope.lpp,它确保CSR模拟也在网络上生成。

我希望有一些这是有用的,尽管不是很详细。看一看在spatstat相关的帮助文件,了解更多详情:

help(lpp) 
help(linnet) 
help(linearK) 

做报告回你如何从这里取得进展,那么我(或者更可能阿德里安 - 巴德利)也许能够给你一些更多的指针。

+0

非常感谢Ege - 确实需要网络实现聚类算法。这是关于线性K函数的原始论文http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.201.3884&rep=rep1&type=pdf正在转向实现linearK和linearKcross! – RobinLovelace