2017-08-31 42 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