この記事は、「Rではじめる地理空間データの統計解析入門」の第7章を読んで自分なりの理解を整理するために書いたものです。
間違った理解もあるかもしれませんので、正確な情報、詳しい説明は「Rではじめる地理空間データの統計解析入門」をお読みください。
以前の記事では、エリア同士の近接関係を調べる方法を整理した。
ここでは、その近接関係をもとに空間相関を評価する方法を整理する。
大域空間統計量
空間相関を評価する指標には、標本全体に対する空間相関の強さを評価する大域空間統計量(GISA: Global Indicator of Spatial Association
)と、ゾーンごとの局所的な空間相関の強さを評価する局所空間統計量(LISA: Local Indicator of Spatial Association
)がある。
以下で紹介するモランI統計量、ギアリC統計量、G統計量はGISAの評価で使用される。
モランI統計量
−1 ~ 1の数値で示され、数値が正の時は、「自身のエリアの数値が高いと周辺も高い」のような正の空間相関、逆に、負の値の時は「自身のエリアの数値が高いと周辺も低い」といった負の空間相関。
1に近いほど正の空間相関が強く、−1に近いほど負の空間相関が強い。0はランダムな空間分布となる。
目安としては
- I = 0.90 ~ 1.00 : 極めて強い
- I = 0.75 ~ 0.90 : 強い
- I = 0.50 ~ 0.75 : 中程度
- I = 0.25 ~ 0.50 : 弱い
- I = 0.00 ~ 0.25 : 微弱
となるらしい。
モランI統計量を用いることで、空間相関の有無が検定できるらしい。
RでモランI統計量を求める
データの読み込み
library(sf);library(spdep);
hokkaido <- read_sf("hokkaido.shp")
st_crs(hokkaido) <- 6668
hokkaido <- st_transform(hokkaido,crs=6680)
今回は北海道の市町村別人口のデータを使用する。
データは総務省統計局e-Stat 2020年国勢調査の境界データ、統計データを一部使用して使用。
モランI統計量を求める
# 近接行列の作成
coords <- st_coordinates(st_centroid(hokkaido))
knn <- knearneigh(coords,4)
nb2 <- knn2nb(knn)
w <- nb2listw(nb2)
# モランI統計量
moran <- moran.test(hokkaido$JINKO, list=w)
結果は以下のようになる。
> moran
Moran I test under randomisation
data: hokkaido$JINKO
weights: w
Moran I statistic standard deviate = 3.1783, p-value =
0.0007408
alternative hypothesis: greater
sample estimates:
Moran I statistic Expectation Variance
0.0533900522 -0.0056179775 0.0003446969
この場合、p値は0.0007408 (p値≦0.001)で、有意な正の空間相関があることがわかる。
モランI統計量は0.0533900522ということなので、微弱の正の空間相関があるということになる。
なお、moran.test
の引数alternative
で検定の方法を変更できる。
- greater: 正の空間相関の片側検定(デフォルト)
- less: 負の空間相関の片側検定
- two.sided: 正または負の両側検定
JINKOをプロットするとこのようになる。
札幌市を中心に人口が高くなっており、検定の結果とも合っていることが伺える。
ギアリC統計量
もう一つの空間相関の統計量としてギアリC統計量というものもある。
これは0以上の値を取り、
- C<1の時に正の空間相関
- C=1の時にランダム
- C>1の時に負の空間相関を示す
その求め方はgeary.test
関数を用いる。
geary <- geary.test(hokkaido$JINKO, list=w)
moran.test
と同様、引数alternative
で検定の種類を指定できる。
- greater: 正の空間相関の片側検定(デフォルト)
- less: 負の空間相関の片側検定
- two.sided: 正または負の両側検定
結果は以下のようになる。
> geary
Geary C test under randomisation
data: hokkaido$JINKO
weights: w
Geary C statistic standard deviate = 1.7499, p-value =
0.04007
alternative hypothesis: Expectation greater than statistic
sample estimates:
Geary C statistic Expectation Variance
0.70254289 1.00000000 0.02889613
p値は0.04007となり、5%水準で有意な正の空間相関があることになる。
ギアリC統計量は0.70254289であり、この数値からも正の空間相関があることがわかる。
G統計量とG*統計量
-
G統計量:人口や地価など非負の数値に対する統計量で、0以上の値を取り、0に近いほどランダム、数値が大きいほど大きな観測値が特定の地域に集中していることを指す。
-
G統計量は自身のエリアを無視して計算され、G*統計量では自身のエリアを含んで近隣関係を考慮した統計量となる。
-
人口や犯罪などのホットスポットの検出などに用いられるらしい。
-
G統計量、G*統計量の算出にはいずれも
globalG.test
関数を用いる。 -
G統計量、G*統計量の算出には書籍にならい、行基準化なしの近接行列を用いる。
-
行基準化なしの近接行列は
nb2listw
関数のパラメータにstyle = "B"
をつける(デフォルトの行基準化ありはstyle = "W"
となっている。)
G統計量を求める
# 行基準化なしの近接行列を算出
w_b <- nb2listw(nb2,style="B")
G <- globalG.test(hokkaido$JINKO, list=w_b)
結果
> G
Getis-Ord global G statistic
data: hokkaido$JINKO
weights: w_b
standard deviate = 2.6142, p-value = 0.004472
alternative hypothesis: greater
sample estimates:
Global G statistic Expectation Variance
0.0573933760 0.0224719101 0.0001784499
G*統計量を求める
G*統計量の算出は近接行列を生成するnb2listw
の実行時にinclude.self(nb)
として、近接行列の対角項(自分自身のエリアとの近接性)を1にする
w_b2 <- nb2listw(include.self(nb2),style="B")
Gstar <- globalG.test(hokkaido$JINKO, list=w_b2)
結果
> Gstar
Getis-Ord global G statistic
data: hokkaido$JINKO
weights: w_b2
standard deviate = 14.226, p-value < 2.2e-16
alternative hypothesis: greater
sample estimates:
Global G statistic Expectation Variance
0.2417473094 0.0280898876 0.0002255685
G統計量とG*統計量の詳しい使い分けは理解できていませんが、今回の結果かでいうと、どちらのもp値<0.01で、有意に空間集積が存在していることになる。
まとめ
空間相関の評価にはいろいろある。
統計量 | 値の幅 | 値の意味 | コード |
---|---|---|---|
モランI統計量 | -1 ~ 1 | 正の値:正の空間相関 0:ランダム 負の値:負の空間相関 |
moran.test(data, list) |
ギアリC統計量 | 0以上の値 | 1未満:正の空間相関 1:ランダム 1以上:負の空間相関を示す |
geary.test(data, list) |
G統計量 (G*統計量) |
0以上の値 | 0に近いほどランダム 数値が大きいほど空間集積が存在する |
globalG.test(data, list) |