R -Poly2NB函数需要太多时间才能计算



我有一个数据框架,其中有有关犯罪(可变X(的信息,以及该犯罪发生的位置的纬度和经度。我有一个来自圣保罗市的地区的形状文件。那是DF:

 latitude  longitude  n_homdol
    1    -23.6     -46.6     1
    2    -23.6     -46.6     1
    3    -23.6     -46.6     1
    4    -23.6     -46.6     1
    5    -23.6     -46.6     1
    6    -23.6     -46.6     1

和一个为圣保罗地区的形状文件,sp.dist.sf:

                      geometry      NOME_DIST
1 POLYGON ((352436.9 7394174,... JOSE BONIFACIO
2 POLYGON ((320696.6 7383620,...    JD SAO LUIS
3 POLYGON ((349461.3 7397765,...    ARTUR ALVIM
4 POLYGON ((320731.1 7400615,...        JAGUARA
5 POLYGON ((338651 7392203, 3...  VILA PRUDENTE
6 POLYGON ((320606.2 7394439,...        JAGUARE

在@humpelstielzchen的帮助下,我加入了两个数据:

sf_df = st_as_sf(df, coords = c("longitude", "latitude"), crs = 4326)
shape_df<-st_join(sp.dist.sf, sf_df, join=st_contains)

我的最终目标是实施本地Moran I统计数据,我正在尝试使用以下方式来做到这一点:

   sp_viz <- poly2nb(shape_df, row.names = shape_df$NOME_DIST)
    xy <- st_coordinates(shape_df)
    ww <- nb2listw(sp_viz, style ='W', zero.policy = TRUE)
    shape_df[is.na(shape_df)] <- 0
    locMoran <- localmoran(shape_df$n_homdol, ww)
sids.shade <- auto.shading(c(locMoran[,1],-locMoran[,1]),
                           cols=brewer.pal(5,"PRGn"))
    choropleth(shape_df, locMoran[,1], shading=sids.shade)
    choro.legend(-46.5, -20, sids.shade,fmt="%6.2f")
    title("Criminalidade (Local Moran's I)",cex.main=2)

但是,当我运行代码时,计算需要数小时:

 sp_viz <- poly2nb(shape_df, row.names = shape_df$NOME_DIST)

我有15,000个地区的观察结果。我试图以100个观察结果来运行上述代码,这很快,一切顺利。但是有了15,000个OBS,我没有看到结果,因为DE计算永远进行。可能会发生什么?我做错了什么?我测试了这个本地的Moran吗?

我不能只发表评论,这是人们可能会问的一些问题: - 您的意思是快点?我的一些脚本在几秒钟内运行,我称其为慢。 - 您的所有观察结果是否相同?也许poly2nb()函数在具有罕见结构的项目上无限地循环。您可以使用unique()功能来确保这一点。 - 您是否试图将数据集切成碎片并分别运行每件?这将有助于查看1/您的零件之一是否有要纠正的东西以及2/是否同时加载所有数据,从而超载计算机的内存。当心,这种情况确实经常发生在R中的大量数据集(从巨大的角度来看,我的意思是> 50 mo wheight的数据表(。

很高兴尝试为您提供帮助,请随时质疑我的答案!

最新更新