4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

空間相関があるかどうかを検定する【モランI統計量・ギアリC統計量・G統計量】

Last updated at Posted at 2025-04-06

この記事は、「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年国勢調査の境界データ、統計データを一部使用して使用。

SETAIというカラムに人口の値が入っている。
image.png

モラン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をプロットするとこのようになる。
image.png
札幌市を中心に人口が高くなっており、検定の結果とも合っていることが伺える。

ギアリ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)
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?