Использование функции mat2listw в R для создания матрицы пространственных весов
Я пытаюсь создать объект весов в R с помощью функции mat2listw. У меня есть очень большая матрица пространственных весов (примерно 22 000x22 000), которая была создана в Excel и считана в R, и сейчас я пытаюсь реализовать:
library(spdep)
SW=mat2listw(matrix)
Я получаю следующую ошибку:
Error in if (any(x<0)) stop ("values in x cannot be negative"): missing
value where TRUE/FALSE needed.
Что здесь не так? Моя текущая матрица - все 0 и 1, без пропущенных значений и без отрицательных элементов. Что мне не хватает?
Буду признателен за любой совет. Заранее спасибо за помощь!
1 ответ
Решение
Вот простой тест на ваш предыдущий комментарий:
library(spdep)
m1 <-matrix(rbinom(100, 1, 0.5), ncol =10, nrow = 10) #create a random 10 * 10 matrix
m2 <- m1 # create a duplicate of the first matrix
m2[5,4] <- NA # assign an NA value in the second matrix
SW <- mat2listw(m1) # create weight list matrix
SW2 <- mat2listw(m2) # create weight list matrix
Первая матрица не выходит из строя, но вторая матрица делает. Реальный вопрос в том, почему ваша весовая матрица создана с NA. Рассматривали ли вы создание матрицы пространственного веса в r? Используя dnearneigh или другую функцию.