演習の概要

注意事項

  • 慶應義塾大学SFCで開講している「環境ガバナンスのデータサイエンス」「空間モデリング特論」の授業履修者向けの演習用ページです。
  • 必ずしも全てのバージョンのRやOSで動作確認を行っていません。この演習用ページを作成している段階では、R3.5.3を使っています。
  • Rの更新などにより、Rコードなどを予告無しに変更する場合があります。

データ分析の準備

データのダウンロード

  • 演習で用いるデータはここからダウンロードしてください。
  • ここでは./直下にgisdataフォルダを作成し、setwd("gisdata")とディレクトリを指定しています

パッケージのインストール

  • install.packages()でパッケージをインストールし、library()でパッケージを呼び出す
  • ここでは以下のパッケージを用います
install.packages("DCluster")
install.packages("spdep")
library(DCluster)
library(spdep)

以下の方法でパイプ %>% の優先順位を高める

needs::prioritize(magrittr)

データの読み込み

都道府県別出生率データを読み込み、出生率の期待値を計算します。

data76 <- read.table("data76.csv", sep=",", header=TRUE, row.names=1)
data76_OE <- data.frame(Observed=data76$n.birth)
data76_OE <- cbind(data76_OE,  
Expected=data76$pop*sum(data76$n.birth)/sum(data76$pop), 
x=data76$Easting, y=data76$Northing)

空間集積性の検定

ピアソンの\(\chi^2\)検定

DClusterパッケージのachisq.stat()関数で\(\chi^2\)統計量を計算し、achisq.test()関数で\(\chi^2\)検定の結果を示す。これにより、ランダム性に関する検定を行う。

achisq.stat(data76_OE, lambda=1)
$T
[1] 1616.169

$df
[1] 79

$pvalue
[1] 3.154174e-285
achisq.test(Observed~offset(log(Expected)), data76_OE, model="poisson", R=100)
Chi-square test for overdispersion 

    Type of boots.: parametric 
    Model used when sampling: Poisson 
    Number of simulations: 100 
    Statistic:  1616.169 
    p-value :  0.00990099 

さらに、boot()関数を用いてブートストラップ法により標本を生成し、\(\chi^2\)検定を行うこともできる。

data76_achb_pb <- boot(data76_OE, statistic=achisq.pboot, sim="parametric", ran.gen=poisson.sim, R=100)
plot(data76_achb_pb)

Potthoff & Whittinghillの検定(過分散の有無に関する検定)

すべての地区において相対リスクが互いに類似しているかどうかを検証する方法です。

pottwhitt.stat(data76_OE)
$T
[1] 3840008393

$asintmean
[1] 3745501200

$asintvat
[1] 591789189600

$pvalue
[1] 0
pottwhitt.test(Observed~offset(log(Expected)), data76_OE, model="poisson", R=100)
Potthoff-Whittinghill's test of overdispersion 

    Type of boots.: parametric 
    Model used when sampling: Poisson 
    Number of simulations: 100 
    Statistic:  3840008393 
    p-value :  0.00990099 

boot()関数を用いてブートストラップ法により標本を生成し、過分散の有無に関する検定を行う。

data76_pw_pb <- boot(data76_OE, statistic=pottwhitt.pboot, sim="parametric", ran.gen=poisson.sim, R=100)
plot(data76_pw_pb)

Stone’s test

各地区の相対リスクが等しいという帰無仮説\(H_0\)に対して、特定の地域からの距離が増加する毎に相対リスク\(\theta\)が減少するという対立仮説\(H_1\)を立て、仮説検定する方法です。

stone.stat(data76_OE, region=which(row.names(data76_OE)=="20"), lambda=1)
             region 
 1.000948 79.000000 
stone.test(Observed~offset(log(Expected)), data76_OE, model="poisson", R=100, region=which(row.names(data76_OE)=="20"), lambda=1)
Stone's Test for raised incidence around locations 

    Type of boots.: parametric 
    Model used when sampling: Poisson 
    Number of simulations: 100 
    Statistic:  1.000948 
    p-value :  0.8910891 

boot()関数を用いてブートストラップ法により標本を生成し、検定を行う。

data76_st_pb <- boot(data76_OE, statistic=stone.pboot, sim="parametric", ran.gen=poisson.sim, R=100, region=which(row.names(data76_OE)=="20"))
plot(data76_st_pb)