2017-08-31 38 views
0

我有兴趣知道线性网络上0到2km之间的点之间的相关性。我使用以下语句作为经验数据,这是在2分钟内解决的。linearK - spatstat中经验和接受包络之间的大时间差

obs<-linearK(c, r=seq(0,2,by=0.20)) 

现在我想检查随机性的接受度,所以我使用相同的r范围的信封。

acceptance_enve<-envelope(c, linearK, nsim=19, fix.n = TRUE, funargs = list(r=seq(0,2,by=0.20))) 

但是这个节目预计时间会少于3个小时。我只是想问一下这个大的时间差是否正常。我是否正确地在函数调用函数时调用了它的r作为序列的额外参数?

是否有一些缩短信封3小时执行时间的有效方法?

我有一个整个城市的道路网络,所以它是相当大的,我检查了没有断开的子图。

c  
Point pattern on linear network 
    96 points 
    Linear network with 13954 vertices and 19421 lines 
    Enclosing window: rectangle = [559.653, 575.4999] x 
    [4174.833, 4189.85] Km 

谢谢。

编辑点评

system.time({s <- runiflpp(npoints(c), as.linnet(c)); 
+ linearK(s, r=seq(0,2,by=0.20))}) 
    user system elapsed 
343.047 104.428 449.650 

EDIT 2

之后,我删除一些外围网络段,似乎有整体网络上很少或根本没有效果做了一些非常小的变化。这也导致将一些较长的细分市场分成较小的细分市场。但现在不同点模式在同一个网络上,我有更长的预计时间:

> month1envelope=envelope(months[[1]], linearK ,nsim = 39, r=seq(0,2,0.2)) 
Generating 39 simulations of CSR ... 
1, 2, [etd 12:03:43] 

新的网络是

> months[[1]] 
Point pattern on linear network 
310 points 
Linear network with 13642 vertices and 18392 lines 
Enclosing window: rectangle = [560.0924, 575.4999] x [4175.113, 
4189.85] Km 

系统配置:MacOS的10.9,2.5Ghz的,16GB,R 3.3。 3,RStudio版本1.0.143

+0

你说得对,这有点令人惊讶。需要多长时间运行'system.time({s < - runiflpp(npoints(c),as.linnet(c)); linearK(s,r = seq(0,2,by = 0.20))}) '?通常大部分时间都是生成点模式和计算汇总统计的花费,然后所有与信封的排序和排序保持一致的书通常非常快。 –

+0

我在主要问题中添加了system.time详细信息。谢谢。希望它在诊断问题时增加一些信息。 – BKS

回答

0

在这种情况下,您不需要使用funargs。参数可以直接通过...参数传递。所以我建议

acceptance_enve <- envelope(c, linearK, nsim=19, 
          fix.n = TRUE, r=seq(0,2,by=0.20)) 

请试试看看它是否加速执行。

+0

谢谢。这个没有funargs的声明是有效的,但是执行时间没有缩短。当我使用密集的lpp(在同一网络上有更多的点)时,我估计时间是12小时。请参阅编辑2。 – BKS

相关问题