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