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
функция, чтобы она учитывала несоседей, которые имеют нулевое значение.