1

mat2listw 関数を使用して、R で重みオブジェクトを作成しようとしています。Excel で作成され、R に読み込まれた非常に大きな空間ウェイト マトリックス (約 22,000x22,000) があり、現在実装しようとしています。

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 で、欠損値も負の要素もありません。私は何が欠けていますか?

アドバイスをいただければ幸いです。よろしくお願いします。

4

1 に答える 1

2

これは、以前のコメントに対する簡単なテストです。

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

最初のマトリックスは失敗しませんが、2 番目のマトリックスは失敗します。本当の問題は、NA を含む重み行列が作成される理由です。r で空間ウェイト マトリックスを作成することを検討しましたか? dnearneigh またはその他の関数を使用する。

于 2013-11-30T00:04:16.053 に答える