Вычислить локальный Moran на основе расстояния для набора данных 527k точек с использованием библиотеки spdep

#r #spdep

#r #spdep

Вопрос:

Как следует из названия, я пытаюсь вычислить локальный Moran для набора данных 527 тыс. точек с помощью spdep пакета, создавая окрестности на основе расстояния. Обобщенный процесс, который я выполняю, заключается в следующем:

 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       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 объект? Если бы я мог это сделать, было бы так же сложно создать матрицу весов, как и у соседей? Есть ли другой способ вычислить локальный moran для набора данных такого объема?