* ESTRELA連載 第79回 [#ub8fea3b]

** 今回使うデータ [#b18394dd]
- [[データ>http://web.sfc.keio.ac.jp/~maunz/ESTRELA/80.zip]]

** データの作成と表示 [#y312d211]
- パッケージの読み込み
 library(spdep)
 library(mgcv)
 library(spgwr)
 library(spdep) # 空間データの操作
 library(spgwr) # 地理的加重回帰モデル
 library(nlme) # マルチレベルモデル
 # library(lme4)  # マルチレベルモデル
 library(mgcv) # 一般化加法モデル
 library(MASS)
- データの読み込み
 jiko <- read.table("jiko.csv", sep=",", header=T)
 summary(jiko)
- 変数の作成
 # jiko$POP65.POP <- jiko$POP65/jiko$POP
 jiko$NUM.LIC65.POP65 <- jiko$NUM.LICENCE.65/(jiko$POP65*1000)
 jiko$ROADD <- jiko$ROAD.LENGTH/(jiko$AREA*1000)
 jiko$FATAL24.POP <- jiko$FATAL24 / jiko$POP
 jiko$POP65.POP <- jiko$POP65 / jiko$POP
 jiko$ROADD <- jiko$ROAD.LENGTH / (jiko$AREA*1000)
 jiko$HOSPITAL.POP <- jiko$HOSPITAL / jiko$POP
 jiko$HAZARD.TOT.D <- jiko$HAZARD.TOT / (jiko$ROAD.LENGTH/1000)
 # jiko$SAFE.ZONE.D <- jiko$SAFE.ZONE / (jiko$DID)
 # jiko$SAFE.ZONE.D <- jiko$SAFE.ZONE / (jiko$ROAD.LENGTH/1000)
 # jiko$HAZARD.LANE.D <- jiko$HAZARD.LANE / (jiko$ROAD.LENGTH/1000)
 # jiko$HAZARD.CROSS.D <- jiko$HAZARD.CROSS / (jiko$ROAD.LENGTH/1000)
 # jiko$NUM.LIC65.POP65 <- jiko$NUM.LICENCE.65/(jiko$POP65*1000)
 # jiko$CAR.OWN.POP <- jiko$CAR.OWN/(jiko$POP*1000)
 # jiko$X2WM.OWN.POP <- jiko$X2WM.OWN/(jiko$POP*1000)
 jiko$SAFE.ZONE.D <- jiko$SAFE.ZONE / (jiko$DID)
 jiko$SAFE.ZONE.D <- jiko$SAFE.ZONE / (jiko$ROAD.LENGTH/1000)
 jiko$HAZARD.LANE.D <- jiko$HAZARD.LANE / (jiko$ROAD.LENGTH/1000)
 jiko$HAZARD.CROSS.D <- jiko$HAZARD.CROSS / (jiko$ROAD.LENGTH/1000)
 jiko$HAZARD.TOT.D <- jiko$HAZARD.TOT / (jiko$ROAD.LENGTH/1000)
 # jiko$SAFE.ZONE.D <- jiko$SAFE.ZONE / (jiko$POP/100)
 # jiko$HAZARD.LANE.D <- jiko$HAZARD.LANE / (jiko$POP/100)
 # jiko$HAZARD.CROSS.D <- jiko$HAZARD.CROSS / (jiko$POP/100)
 # jiko$SB.RD.F.D <- jiko$SB.RD.F / (jiko$CAR.OWN/1000)
 # jiko$SB.RD.R.D <- jiko$SB.RD.R / (jiko$CAR.OWN/1000)
 jiko$HOSPITAL.POP <- jiko$HOSPITAL / jiko$POP

** 空間隣接行列の作成 [#h786345f]
** 空間隣接行列と空間重み付け行列の作成 [#h786345f]
- 空間隣接行列の作成
 coords <- matrix(0,nrow(jiko),2)
 coords[,1] <- jiko$X
 coords[,2] <- jiko$Y
 pref.tri.nb <- tri2nb(coords)
- 空間重み付け行列の作成
 pref.tri.w <- nb2listw(pref.tri.nb, style="W")

** 線形回帰モデル [#c4ee6f92]
 jiko.lm1 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F, data=jiko)
- lm()関数を使った線形回帰モデルの推定
 jiko.lm1 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F,
 data=jiko)
 summary(jiko.lm1)
 # ステップワイズ法による変数選択
 stepAIC(jiko.lm1)
 jiko.lm2 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F, data=jiko, weight=POP)
 jiko.lm2 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F,
 data=jiko, weight=POP)
 summary(jiko.lm2)
 jiko.lm3 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+offset(log(POP)), data=jiko)
 jiko.lm3 <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+
 offset(log(POP)), data=jiko)
 summary(jiko.lm3)

** 一般化線型モデル [#x44c320d]
 # jiko.glm1 <- glm(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+SAFE.ZONE.D+HAZARD.TOT.D+SB.RD.F, data=jiko, family="poisson")
 # summary(jiko.glm1)

 jiko.glm1 <- glm(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+offset(log(POP)), data=jiko, family="poisson")
- glm()関数を使った一般化線形モデルの推定
 jiko.glm1 <- glm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+offset(log(POP)),
 data=jiko, family="poisson")
 summary(jiko.glm1)

** 一般化加法モデル [#cfbee64c]
 jiko.gam1 <- gam(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+s(X, Y), data=jiko, family="poisson")
- gam()関数を使った一般化加法モデルの推定→library(mgcv)
 jiko.gam1 <- gam(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+s(X, Y),
 data=jiko, family="poisson")
 summary(jiko.gam1)

 jiko.gam2 <- gam(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+offset(log(POP))+s(X, Y), data=jiko, family="poisson")
 jiko.gam2 <- gam(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F+offset(log(POP))+
 s(X, Y), data=jiko, family="poisson")
 summary(jiko.gam2)

** 空間フィルタリング [#wa010849]

** マルチレベルモデル [#y5bfa3e1]
- lmer()関数を使ったマルチレベルモデルの推定→library(lme4)
 jiko.lme1 <- lme(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+SB.RD.F,
 random=~1|PREF, data=jiko)
 summary(jiko.lme1)
 random.effects(jiko.lme1)
 jiko.lme2 <- lme(FATAL24.POP~POP65.POP+HAZARD.TOT.D+SB.RD.F,
 random=~1+ROADD+HOSPITAL.POP|PREF, data=jiko)
 summary(jiko.lme2)
 random.effects(jiko.lme2)

** Moran固有ベクトルによる空間ラグの表現 [#wa010849]
- 空間フィルタリングによる空間ラグ
 jiko.SF <- SpatialFiltering(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+
 HAZARD.TOT.D+SB.RD.F, data=jiko, nb=pref.tri.nb, style="W")
 jiko.lm.SF <- lm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+
 HAZARD.TOT.D+SB.RD.F+fitted(jiko.SF), data=jiko)
 summary(jiko.lm.SF)
- 空間ラグを考慮した一般化線形回帰モデル
 # 計算に時間を要する
 # jiko.ME <- ME(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+
 # SB.RD.F, data=jiko, offset=log(POP), family="poisson", listw=pref.tri.w,
 # alpha=0.5)
 # jiko.glm.ME <- glm(FATAL24.POP~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+
 # SB.RD.F+offset(log(POP))+fitted(jiko.ME), data=jiko , family="poisson")
 # summary(jiko.glm.ME)

** 地理的加重回帰モデル [#d17605bb]
- バンド幅の計算
 jiko.bw <- gwr.sel(FATAL24 ~ POP65.POP + ROADD + HOSPITAL.POP + HAZARD.TOT.D + SB.RD.F, data=jiko, coords=coords)
 jiko.bw <- gwr.sel(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+
 SB.RD.F, data=jiko, coords=coords)
- 地理的加重回帰モデルの推定
 jiko.gwr <- gwr(FATAL24 ~ POP65.POP + ROADD + HOSPITAL.POP + HAZARD.TOT.D +
 jiko.gwr <- gwr(FATAL24~POP65.POP+ROADD+HOSPITAL.POP+HAZARD.TOT.D+
 SB.RD.F, data=jiko, coords=coords, bandwidth=jiko.bw,  hatmatrix=TRUE)
 jiko.gwr$SDF


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS