spdep Пока не удалось создать подмножество списков общих весов listw

У меня проблемы с spdep(). Начиная с матрицы непропущенных расстояний, созданной функцией

dist_m <- geoDistMatrix(data1, group = 'fips_dist')
dist_m[upper.tri(dist_m)] <- t(dist_m)[upper.tri(dist_m)]

затем мы превращаемся в веса с линейной обратной

max_dist <- max(dist_m)
w1 <- (max_dist + 1 - dist_m)/(max_dist + 1)

и сейчас

lw <- mat2listw(w1, row.names = rownames(w1), style = 'M')

Я проверяю, чтобы убедиться, что нет пропущенных весов:

any(is.na(lw$weights))

и так как их нет, продолжайте:

errorsarlm(cvote ~ inc, data = data1, lw, method = 'eigen', quiet = F, zero.policy = TRUE)

приводит к следующей ошибке:

Error in subset.listw(listw, subset, zero.policy = zero.policy) : 
  Not yet able to subset general weights lists

person JLM    schedule 24.11.2014    source источник


Ответы (2)


Это связано с тем, что по крайней мере одно наблюдение в data1 не завершено, т. е. имеет пропущенные значения. Следовательно, errorsarlm хочет подмножить данные, т. е. ограничиться полными наблюдениями. Но сейчас он не может этого сделать - об этом говорит сообщение об ошибке.

Лучше всего подмножить данные вручную или исправить неполные случаи.

person MERose    schedule 09.04.2015

Это связано с тем, что функция spdep по умолчанию создала объект listw только для необщих весов. Установите zero.polcy=TRUE перед выполнением функции mat2listw или nb2listw, чтобы она учитывала не-соседей, имеющих нулевое значение.

person Enrico_dace    schedule 12.05.2019