Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как решить ошибку длины соседей Impact() после запуска spdep::lagsarlm (модель пространственной авторегрессии)?

Автор вопроса: Denys D.Ответов: 1

В моем наборе данных 9150 полигонов. Я пытался запустить пространственную авторегрессионную модель (SAR) в spdep, чтобы проверить пространственную зависимость моей переменной результата. После запуска модели я хотел изучить прямые/косвенные воздействия, но столкнулся с ошибкой, которая, похоже, как-то связана с тем, что длина соседей в матрице весов не равна n.

Я попытался запустить то же самое уравнение, что и модель SLX (Пространственное отставание X), и impacts() работало нормально, хотя в моем наборе были некоторые полигоны, у которых не было соседей. Я погуглил и просмотрел документацию spdep, но не смог найти подсказку, как решить эту ошибку.

# Defining queen contiguity neighbors for polyset and storing the matrix as list
q.nbrs <- poly2nb(polyset)
listweights <- nb2listw(q.nbrs, zero.policy = TRUE)

# Defining the model
model.equation <- TIME ~ A + B + C

# Run SAR model
reg <- lagsarlm(model.equation, data = polyset, listw = listweights, zero.policy = TRUE)

# Run impacts() to show direct/indirect impacts
impacts(reg, listw = listweights, zero.policy = TRUE)

Error in intImpacts(rho = rho, beta = beta, P = P, n = n, mu = mu, Sigma = Sigma,  :
  length(listweights$neighbours) == n is not TRUE

rgeospatialspatialspdep

Ответы

Ответ 1 · Perla Rivadeneyra

Я знаю, что это вопрос из 2019 года, но, возможно, он может помочь людям, столкнувшимся с той же проблемой. Я обнаружил, что в моем случае проблема заключалась в типе набора данных, ваш data=polyset должен быть типа "SpatialPolygonsDataFrame". Что может быть достигнуто путем преобразования ваших данных:

polyset_spatial_sf <- sf::as_Spatial(polyset, IDs = polyset$ID)

Затем перезапустите свой код.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы