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

1 ответ

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

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

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

Другие вопросы по тегам