首页 > 解决方案 > 使用 spdep 库为 527k+ 点数据集计算基于距离的 Local Moran

问题描述

正如标题所说,我正在尝试使用该spdep软件包为 527k 点数据集计算 Local Moran,并根据距离创建邻域。我正在做的广义过程如下:

library(spdep)
# Convert coordinates to matrix
matrix_pts <- as.matrix(coordinates)
# Generate neighbors    
neighbors <- dnearneigh(matrix_pts, 
                       d1 = 0, 
                       d2 = range)
# Get weight matrix
wm <- nb2listw(neighbors, 
               zero.policy = T, 
               style = style) 
# Get moran statistics
moran_stat <- localmoran(value, 
                        wm,
                        zero.policy = T)

但是我遇到了一个问题,我无法使用 来创建社区dnearneigh,因为数据集太大,社区由 200-1000 个点组成。

我尝试了这里描述的解决方案,我得到了一个数据框,第一行带有 ID,第二行带有包含相邻点 ID 的列表(即):

   id       int_ids
1: 239226 239226,242762,339386,444833,243000,240521,...
2: 242762 239226,242762,339386,444833,243000,240521,...
3: 339386 239226,242762,339386,444833,243000,240521,...
4: 444833 239226,242762,339386,444833,243000,240521,...
5: 243000 239226,242762,339386,444833,243000,240521,...
6: 240521 239226,242762,339386,444833,243000,240521,...

但是,我不知道如何创建nb所需的对象nb2listw,并且四处挖掘对我没有太大帮助。

有没有办法将此数据框转换为nb对象?如果我能够这样做,权重矩阵会像邻居一样难以创建吗?有没有另一种方法来计算这个卷的数据集的本地莫兰?

标签: rspdep

解决方案


推荐阅读