Использование функции 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 или другую функцию.

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