#必要パッケージの読み込み
library(sf)
library(tidyverse)
library(spdep)
library(spgwr)
library(modelsummary)
#データの読み込み
# 公示地価
l01 <- sf::read_sf("L01-19_11.shp")
# 駅データ
station <- sf::read_sf("N02-19_Station.geojson")
# 行政界
admin <- sf::read_sf("N03-19_11_190101.shp")
#データ作成 ##座標系を揃える→埼玉県の周辺だけ駅を抜き出す
target_crs <- 32654
l01_saitama <- st_transform(l01, target_crs)
admin_saitama <- st_transform(admin, target_crs)
station_all <- st_transform(station, target_crs)
# 埼玉県全体のポリゴンを1つにまとめる
pref_union <- admin_saitama |> st_union()
# 県境から20kmバッファしたエリアを作る
bb_poly <- pref_union |> st_buffer(20000)
# その中に入っている駅だけ残す
station_near <- station_all[
st_intersects(station_all, bb_poly, sparse = FALSE)[, 1],
]
# 確認用プロット
plot(st_geometry(admin_saitama))
plot(st_geometry(station_near), add = TRUE, pch = 16, cex = 0.4)
##最寄り駅までの距離を計算
# 最寄り駅のインデックス
nearest_idx <- st_nearest_feature(l01_saitama, station_near)
nearest_station_sf <- station_near[nearest_idx, ]
# 距離(メートル)
dist_station <- st_distance(
l01_saitama,
station_near[nearest_idx, ],
by_element = TRUE
)
# 数値化して変数に追加
l01_access <- l01_saitama %>%
mutate(
price = as.numeric(L01_006),
ln_price = log(price),
dist_sta_m = as.numeric(dist_station),
dist_sta_km = dist_sta_m / 1000,
ln_dist_sta = log(dist_sta_km + 1e-6)
) %>%
filter(!is.na(price), price > 0)
nearest_station_attr <- nearest_station_sf %>%
st_drop_geometry() %>%
transmute(
nearest_sta_name = `駅名`, # 駅名の列
nearest_line = `路線名`, # 路線名の列
operator = `運営会社`, # 事業者名(使いたければ)
rail_type = `鉄道区分`, # 鉄道区分(使いたければ)
operator_type = `事業者種別` # 事業者種別(使いたければ)
)
# 行ごとの並び順は l01_access と一致しているので、そのまま bind_cols でOK
l01_access <- l01_access %>%
bind_cols(nearest_station_attr)
##行政界との結合(市町村情報)
# 公示地ポイントを市町村ポリゴンに空間結合
l01_access_admin <- st_join(
l01_access,
admin_saitama,
left = TRUE,
largest = TRUE
)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
l01_access_admin <- l01_access_admin %>%
mutate(
city_name = N03_004,
city_code = N03_007
)
##回帰用データフレームを作成
l01_reg <- l01_access_admin %>%
st_drop_geometry() %>%
select(
price,
ln_price,
dist_sta_km,
ln_dist_sta,
nearest_sta_name,
nearest_line,
city_name,
city_code
) %>%
filter(
!is.na(ln_price),
!is.na(dist_sta_km),
!is.na(city_name)
)
##駅密度(1km・3km以内の駅数)を計算
# 1km 以内に入る駅の数
n_sta_1km <- st_is_within_distance(
l01_access, # 標準地
station_near, # 駅
dist = 1000 # 1,000m
) %>%
lengths()
# 3km 以内に入る駅の数
n_sta_3km <- st_is_within_distance(
l01_access,
station_near,
dist = 3000
) %>%
lengths()
l01_access_admin <- l01_access_admin %>%
mutate(
n_sta_1km = n_sta_1km,
n_sta_3km = n_sta_3km
)
# 回帰用 df にも反映
l01_reg <- l01_access_admin %>%
st_drop_geometry() %>%
select(
price,
ln_price,
dist_sta_km,
ln_dist_sta,
n_sta_1km,
n_sta_3km,
nearest_sta_name,
nearest_line,
city_name,
city_code
) %>%
filter(
!is.na(ln_price),
!is.na(dist_sta_km),
!is.na(city_name)
)
#記述統計
summary(select(l01_reg, ln_price, dist_sta_km, n_sta_1km, n_sta_3km))
## ln_price dist_sta_km n_sta_1km n_sta_3km
## Min. : 8.132 Min. :0.01748 Min. : 0.0000 Min. : 0.000
## 1st Qu.:11.126 1st Qu.:0.46684 1st Qu.: 0.0000 1st Qu.: 2.000
## Median :11.678 Median :0.85335 Median : 1.0000 Median : 4.000
## Mean :11.612 Mean :1.08198 Mean : 0.9862 Mean : 4.909
## 3rd Qu.:12.139 3rd Qu.:1.39303 3rd Qu.: 1.0000 3rd Qu.: 6.000
## Max. :14.940 Max. :7.07419 Max. :11.0000 Max. :21.000
# 市区町村別の平均地価・平均最寄り駅距離
city_summary <- l01_reg %>%
group_by(city_name) %>%
summarise(
n_point = n(),
mean_lnprice = mean(ln_price),
mean_price = mean(price),
mean_dist_km = mean(dist_sta_km),
mean_sta1km = mean(n_sta_1km),
mean_sta3km = mean(n_sta_3km),
.groups = "drop"
)
head(city_summary)
## # A tibble: 6 × 7
## city_name n_point mean_lnprice mean_price mean_dist_km mean_sta1km mean_sta3km
## <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ときがわ… 3 9.90 20033. 1.23 0.333 1
## 2 ふじみ野… 15 12.2 203600 0.887 0.667 3.07
## 3 三芳町 6 11.8 139333. 1.32 0.167 3.83
## 4 三郷市 23 11.7 125313. 1.37 0.391 4.48
## 5 上尾市 38 11.6 120692. 1.11 0.763 4
## 6 上里町 4 10.5 35725 1.27 0.5 2.25
# log地価と最寄り駅距離
ggplot(l01_reg, aes(x = dist_sta_km, y = ln_price)) +
geom_point(alpha = 0.3) +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(
x = "最寄り駅までの距離 (km)",
y = "対数地価 log(price)",
title = "最寄り駅距離と地価の関係(2019年・埼玉県)"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
#データ可視化
ggplot() +
geom_sf(data = admin_saitama, fill = NA, color = "grey70") +
geom_sf(
data = l01_access_admin,
aes(color = ln_price),
size = 0.6
) +
scale_color_viridis_c(option = "plasma") +
coord_sf() +
labs(
color = "log地価",
title = "埼玉県における地価公示とその空間分布(2019年)"
) +
theme_minimal()
ggplot() +
geom_sf(data = admin_saitama, fill = NA, color = "grey70") +
geom_sf(
data = l01_access_admin,
aes(color = dist_sta_km),
size = 0.6
) +
scale_color_viridis_c(option = "magma") +
coord_sf() +
labs(
color = "最寄り駅距離 (km)",
title = "埼玉県における最寄り駅距離の空間分布(2019年)"
) +
theme_minimal()
#回帰分析 ##ヘドニック回帰(OLS)
# モデル1:駅距離だけ
m1 <- lm(ln_price ~ ln_dist_sta, data = l01_reg)
summary(m1)
##
## Call:
## lm(formula = ln_price ~ ln_dist_sta, data = l01_reg)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.0511 -0.4597 0.1135 0.5323 2.7762
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.49632 0.02161 532.09 <2e-16 ***
## ln_dist_sta -0.43616 0.02323 -18.78 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7471 on 1299 degrees of freedom
## Multiple R-squared: 0.2135, Adjusted R-squared: 0.2129
## F-statistic: 352.6 on 1 and 1299 DF, p-value: < 2.2e-16
# モデル2:駅距離 + 駅密度(1km・3km)
m2 <- lm(ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km, data = l01_reg)
summary(m2)
##
## Call:
## lm(formula = ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km,
## data = l01_reg)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.97790 -0.37353 0.08297 0.44901 1.72290
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.993908 0.029565 371.850 <2e-16 ***
## ln_dist_sta -0.296118 0.022805 -12.985 <2e-16 ***
## n_sta_1km 0.002027 0.016398 0.124 0.902
## n_sta_3km 0.109494 0.005605 19.536 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6395 on 1297 degrees of freedom
## Multiple R-squared: 0.4247, Adjusted R-squared: 0.4234
## F-statistic: 319.2 on 3 and 1297 DF, p-value: < 2.2e-16
# モデル3:市区町村ダミーも入れる
m3 <- lm(ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km + factor(city_name), data= l01_reg)
summary(m3)
##
## Call:
## lm(formula = ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km +
## factor(city_name), data = l01_reg)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.64684 -0.14048 0.03633 0.18640 1.47050
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.89419 0.19990 49.496 < 2e-16 ***
## ln_dist_sta -0.31307 0.01372 -22.813 < 2e-16 ***
## n_sta_1km 0.07033 0.01043 6.742 2.39e-11 ***
## n_sta_3km 0.03450 0.00505 6.832 1.32e-11 ***
## factor(city_name)ふじみ野市 2.02852 0.21910 9.259 < 2e-16 ***
## factor(city_name)伊奈町 1.06857 0.25353 4.215 2.68e-05 ***
## factor(city_name)羽生市 0.07499 0.21721 0.345 0.729971
## factor(city_name)浦和区 2.34021 0.21210 11.033 < 2e-16 ***
## factor(city_name)越生町 0.04799 0.26485 0.181 0.856247
## factor(city_name)越谷市 1.54976 0.20774 7.460 1.63e-13 ***
## factor(city_name)横瀬町 0.28254 0.31633 0.893 0.371930
## factor(city_name)桶川市 1.37390 0.21674 6.339 3.24e-10 ***
## factor(city_name)加須市 0.48310 0.20894 2.312 0.020932 *
## factor(city_name)皆野町 -0.32284 0.31733 -1.017 0.309185
## factor(city_name)滑川町 0.48091 0.25301 1.901 0.057569 .
## factor(city_name)岩槻区 1.27103 0.21594 5.886 5.10e-09 ***
## factor(city_name)寄居町 -0.03063 0.31774 -0.096 0.923206
## factor(city_name)吉見町 0.78557 0.24514 3.205 0.001387 **
## factor(city_name)吉川市 1.53742 0.23888 6.436 1.76e-10 ***
## factor(city_name)久喜市 0.86620 0.20814 4.162 3.38e-05 ***
## factor(city_name)宮代町 0.59013 0.23125 2.552 0.010834 *
## factor(city_name)狭山市 1.38945 0.20926 6.640 4.70e-11 ***
## factor(city_name)熊谷市 0.72786 0.20871 3.488 0.000505 ***
## factor(city_name)見沼区 1.53338 0.21538 7.119 1.84e-12 ***
## factor(city_name)戸田市 2.04257 0.21684 9.420 < 2e-16 ***
## factor(city_name)幸手市 0.67491 0.23085 2.924 0.003524 **
## factor(city_name)行田市 0.30816 0.21336 1.444 0.148909
## factor(city_name)鴻巣市 0.95969 0.21107 4.547 5.98e-06 ***
## factor(city_name)坂戸市 1.18188 0.21826 5.415 7.37e-08 ***
## factor(city_name)桜区 1.81421 0.22959 7.902 6.06e-15 ***
## factor(city_name)三郷市 1.62862 0.21311 7.642 4.28e-14 ***
## factor(city_name)三芳町 1.85244 0.24512 7.557 8.01e-14 ***
## factor(city_name)志木市 2.19604 0.23153 9.485 < 2e-16 ***
## factor(city_name)春日部市 1.08291 0.20755 5.217 2.13e-07 ***
## factor(city_name)所沢市 1.67948 0.20733 8.101 1.31e-15 ***
## factor(city_name)小鹿野町 0.75679 0.31660 2.390 0.016980 *
## factor(city_name)小川町 0.22069 0.22800 0.968 0.333264
## factor(city_name)松伏町 1.46755 0.25303 5.800 8.44e-09 ***
## factor(city_name)上尾市 1.46650 0.20802 7.050 2.98e-12 ***
## factor(city_name)上里町 0.49290 0.26434 1.865 0.062472 .
## factor(city_name)新座市 2.18174 0.21235 10.274 < 2e-16 ***
## factor(city_name)深谷市 0.54104 0.21033 2.572 0.010217 *
## factor(city_name)神川町 -0.26300 0.31589 -0.833 0.405239
## factor(city_name)杉戸町 0.74554 0.23903 3.119 0.001857 **
## factor(city_name)西区 1.45447 0.22843 6.367 2.71e-10 ***
## factor(city_name)川越市 1.57633 0.20505 7.688 3.05e-14 ***
## factor(city_name)川口市 2.05696 0.20399 10.083 < 2e-16 ***
## factor(city_name)川島町 1.00658 0.26493 3.799 0.000152 ***
## factor(city_name)草加市 1.66060 0.20764 7.997 2.91e-15 ***
## factor(city_name)大宮区 1.91134 0.22633 8.445 < 2e-16 ***
## factor(city_name)秩父市 0.66794 0.24566 2.719 0.006642 **
## factor(city_name)中央区 1.80810 0.22203 8.144 9.35e-16 ***
## factor(city_name)朝霞市 2.08813 0.21355 9.778 < 2e-16 ***
## factor(city_name)鶴ヶ島市 1.15650 0.22241 5.200 2.34e-07 ***
## factor(city_name)東松山市 0.94949 0.21504 4.415 1.10e-05 ***
## factor(city_name)南区 2.15382 0.21532 10.003 < 2e-16 ***
## factor(city_name)日高市 0.47199 0.22349 2.112 0.034899 *
## factor(city_name)入間市 1.43103 0.21092 6.785 1.80e-11 ***
## factor(city_name)白岡市 1.13117 0.23080 4.901 1.08e-06 ***
## factor(city_name)八潮市 1.79172 0.21677 8.266 3.57e-16 ***
## factor(city_name)鳩山町 0.82387 0.26466 3.113 0.001895 **
## factor(city_name)飯能市 1.07257 0.21661 4.952 8.38e-07 ***
## factor(city_name)美里町 -0.09578 0.31602 -0.303 0.761869
## factor(city_name)富士見市 1.93552 0.21627 8.949 < 2e-16 ***
## factor(city_name)北区 1.31240 0.21946 5.980 2.92e-09 ***
## factor(city_name)北本市 1.27136 0.21895 5.807 8.11e-09 ***
## factor(city_name)本庄市 0.53629 0.21890 2.450 0.014429 *
## factor(city_name)毛呂山町 0.07256 0.22926 0.316 0.751681
## factor(city_name)嵐山町 0.36787 0.25277 1.455 0.145822
## factor(city_name)緑区 2.05569 0.21507 9.558 < 2e-16 ***
## factor(city_name)蓮田市 1.29161 0.22172 5.825 7.27e-09 ***
## factor(city_name)和光市 2.10974 0.22335 9.446 < 2e-16 ***
## factor(city_name)蕨市 2.09797 0.24024 8.733 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.346 on 1228 degrees of freedom
## Multiple R-squared: 0.8405, Adjusted R-squared: 0.8312
## F-statistic: 89.89 on 72 and 1228 DF, p-value: < 2.2e-16
##OLS残差の空間自己相関(Moran’s I)
# 残差ベクトル(モデル2を使用)
res_m2 <- residuals(m2)
# 公示地点の座標を取得
coords <- l01_access_admin %>%
st_centroid() %>%
st_coordinates()
# 距離20km以内を近傍とする距離ベース近傍
nb_20km <- dnearneigh(coords, d1 = 0, d2 = 20000)
# listw(重み行列)を作成
lw_20km <- nb2listw(nb_20km, style = "W")
# Moran's I 検定
moran_m2 <- moran.test(res_m2, lw_20km)
moran_m2
##
## Moran I test under randomisation
##
## data: res_m2
## weights: lw_20km
##
## Moran I statistic standard deviate = 203.96, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 3.332187e-01 -7.692308e-04 2.681391e-06
##南部 vs 北部の異質性(交差項付きOLS)
# 座標のY座標を使って南北を分割(基準は中央値)
coords_df <- l01_access_admin %>%
st_centroid() %>%
st_coordinates() %>%
as_tibble() %>%
rename(x = X, y = Y)
y_median <- median(coords_df$y, na.rm = TRUE)
l01_reg_zone <- l01_access_admin %>%
st_drop_geometry() %>%
bind_cols(coords_df) %>%
mutate(
# 南部 = 1, 北部 = 0
south = if_else(y < y_median, 1L, 0L),
south_factor = factor(south, labels = c("North", "South"))
) %>%
select(
price, ln_price,
dist_sta_km, ln_dist_sta,
n_sta_1km, n_sta_3km,
city_name, city_code,
south, south_factor
)
# 交差項付きモデル(駅距離 * 南部dummy)
m4 <- lm(
ln_price ~ ln_dist_sta * south + n_sta_1km + n_sta_3km,
data = l01_reg_zone
)
summary(m4)
##
## Call:
## lm(formula = ln_price ~ ln_dist_sta * south + n_sta_1km + n_sta_3km,
## data = l01_reg_zone)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3824 -0.2942 0.0620 0.3586 1.8963
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.711627 0.026210 408.680 < 2e-16 ***
## ln_dist_sta -0.264879 0.023517 -11.263 < 2e-16 ***
## south 0.786798 0.031009 25.373 < 2e-16 ***
## n_sta_1km 0.068229 0.013422 5.083 4.25e-07 ***
## n_sta_3km 0.074565 0.004695 15.883 < 2e-16 ***
## ln_dist_sta:south -0.024578 0.032215 -0.763 0.446
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5142 on 1295 degrees of freedom
## Multiple R-squared: 0.6286, Adjusted R-squared: 0.6271
## F-statistic: 438.3 on 5 and 1295 DF, p-value: < 2.2e-16
# ついでに、市区町村FEも入れたバージョン
m5 <- lm(
ln_price ~ ln_dist_sta * south + n_sta_1km + n_sta_3km + factor(city_name),
data = l01_reg_zone
)
summary(m5)
##
## Call:
## lm(formula = ln_price ~ ln_dist_sta * south + n_sta_1km + n_sta_3km +
## factor(city_name), data = l01_reg_zone)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.62870 -0.13995 0.03615 0.18816 1.43182
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.891141 0.199897 49.481 < 2e-16 ***
## ln_dist_sta -0.296579 0.017828 -16.635 < 2e-16 ***
## south 0.004372 0.057487 0.076 0.939383
## n_sta_1km 0.071450 0.010536 6.782 1.84e-11 ***
## n_sta_3km 0.034387 0.005052 6.806 1.56e-11 ***
## factor(city_name)ふじみ野市 2.021023 0.226397 8.927 < 2e-16 ***
## factor(city_name)伊奈町 1.076844 0.253583 4.247 2.34e-05 ***
## factor(city_name)羽生市 0.082160 0.217254 0.378 0.705365
## factor(city_name)浦和区 2.326650 0.219451 10.602 < 2e-16 ***
## factor(city_name)越生町 0.061188 0.265002 0.231 0.817434
## factor(city_name)越谷市 1.546006 0.211140 7.322 4.40e-13 ***
## factor(city_name)横瀬町 0.287471 0.316331 0.909 0.363651
## factor(city_name)桶川市 1.377418 0.216737 6.355 2.93e-10 ***
## factor(city_name)加須市 0.483031 0.208924 2.312 0.020943 *
## factor(city_name)皆野町 -0.284187 0.318438 -0.892 0.372331
## factor(city_name)滑川町 0.496968 0.253244 1.962 0.049941 *
## factor(city_name)岩槻区 1.278523 0.215991 5.919 4.19e-09 ***
## factor(city_name)寄居町 -0.020313 0.317811 -0.064 0.949048
## factor(city_name)吉見町 0.765584 0.245517 3.118 0.001862 **
## factor(city_name)吉川市 1.543524 0.245976 6.275 4.84e-10 ***
## factor(city_name)久喜市 0.870482 0.208155 4.182 3.10e-05 ***
## factor(city_name)宮代町 0.602993 0.231414 2.606 0.009280 **
## factor(city_name)狭山市 1.383800 0.216896 6.380 2.50e-10 ***
## factor(city_name)熊谷市 0.731816 0.208714 3.506 0.000471 ***
## factor(city_name)見沼区 1.536912 0.215400 7.135 1.65e-12 ***
## factor(city_name)戸田市 2.036938 0.224231 9.084 < 2e-16 ***
## factor(city_name)幸手市 0.682815 0.230905 2.957 0.003165 **
## factor(city_name)行田市 0.315419 0.213413 1.478 0.139671
## factor(city_name)鴻巣市 0.967402 0.211123 4.582 5.07e-06 ***
## factor(city_name)坂戸市 1.189711 0.218321 5.449 6.11e-08 ***
## factor(city_name)桜区 1.813478 0.236600 7.665 3.63e-14 ***
## factor(city_name)三郷市 1.628753 0.220728 7.379 2.93e-13 ***
## factor(city_name)三芳町 1.855834 0.251854 7.369 3.16e-13 ***
## factor(city_name)志木市 2.188888 0.238469 9.179 < 2e-16 ***
## factor(city_name)春日部市 1.092589 0.207654 5.262 1.68e-07 ***
## factor(city_name)所沢市 1.668495 0.214985 7.761 1.77e-14 ***
## factor(city_name)小鹿野町 0.728969 0.317164 2.298 0.021707 *
## factor(city_name)小川町 0.222872 0.227990 0.978 0.328488
## factor(city_name)松伏町 1.450186 0.253305 5.725 1.30e-08 ***
## factor(city_name)上尾市 1.472420 0.208045 7.077 2.47e-12 ***
## factor(city_name)上里町 0.494266 0.264330 1.870 0.061738 .
## factor(city_name)新座市 2.181717 0.220029 9.916 < 2e-16 ***
## factor(city_name)深谷市 0.548497 0.210379 2.607 0.009240 **
## factor(city_name)神川町 -0.266342 0.315876 -0.843 0.399289
## factor(city_name)杉戸町 0.749216 0.239033 3.134 0.001763 **
## factor(city_name)西区 1.463343 0.228825 6.395 2.28e-10 ***
## factor(city_name)川越市 1.577350 0.206404 7.642 4.29e-14 ***
## factor(city_name)川口市 2.052434 0.211793 9.691 < 2e-16 ***
## factor(city_name)川島町 0.982398 0.265437 3.701 0.000224 ***
## factor(city_name)草加市 1.655190 0.215350 7.686 3.10e-14 ***
## factor(city_name)大宮区 1.914291 0.227934 8.398 < 2e-16 ***
## factor(city_name)秩父市 0.680483 0.245814 2.768 0.005720 **
## factor(city_name)中央区 1.792102 0.229354 7.814 1.19e-14 ***
## factor(city_name)朝霞市 2.077056 0.221044 9.397 < 2e-16 ***
## factor(city_name)鶴ヶ島市 1.168884 0.222565 5.252 1.77e-07 ***
## factor(city_name)東松山市 0.955500 0.215069 4.443 9.68e-06 ***
## factor(city_name)南区 2.145644 0.222835 9.629 < 2e-16 ***
## factor(city_name)日高市 0.467547 0.227640 2.054 0.040199 *
## factor(city_name)入間市 1.427364 0.218591 6.530 9.62e-11 ***
## factor(city_name)白岡市 1.139076 0.230846 4.934 9.15e-07 ***
## factor(city_name)八潮市 1.793164 0.224331 7.993 3.01e-15 ***
## factor(city_name)鳩山町 0.805168 0.264959 3.039 0.002425 **
## factor(city_name)飯能市 1.059156 0.224345 4.721 2.62e-06 ***
## factor(city_name)美里町 -0.105285 0.316073 -0.333 0.739114
## factor(city_name)富士見市 1.924144 0.223648 8.603 < 2e-16 ***
## factor(city_name)北区 1.326950 0.219682 6.040 2.04e-09 ***
## factor(city_name)北本市 1.280492 0.219027 5.846 6.44e-09 ***
## factor(city_name)本庄市 0.542481 0.218934 2.478 0.013352 *
## factor(city_name)毛呂山町 0.091856 0.229648 0.400 0.689235
## factor(city_name)嵐山町 0.373669 0.252786 1.478 0.139610
## factor(city_name)緑区 2.055926 0.222720 9.231 < 2e-16 ***
## factor(city_name)蓮田市 1.293315 0.221708 5.833 6.94e-09 ***
## factor(city_name)和光市 2.098147 0.230521 9.102 < 2e-16 ***
## factor(city_name)蕨市 2.086746 0.246783 8.456 < 2e-16 ***
## ln_dist_sta:south -0.033553 0.023368 -1.436 0.151289
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.346 on 1226 degrees of freedom
## Multiple R-squared: 0.8408, Adjusted R-squared: 0.8312
## F-statistic: 87.5 on 74 and 1226 DF, p-value: < 2.2e-16
#GWR
gwr_sf_base <- l01_access_admin %>%
drop_na(ln_price, ln_dist_sta, n_sta_1km, n_sta_3km)
gwr_df <- gwr_sf_base %>%
st_drop_geometry() %>%
select(
ln_price,
ln_dist_sta,
n_sta_1km,
n_sta_3km
)
# 座標行列
coords_gwr <- gwr_sf_base %>%
st_centroid() %>%
st_coordinates()
# バンド幅の推定
set.seed(123)
bw_gwr <- gwr.sel(
ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km,
data = gwr_df,
coords = coords_gwr
)
## Bandwidth: 37198.41 CV score: 461.1809
## Bandwidth: 60128.2 CV score: 502.5902
## Bandwidth: 23027.02 CV score: 388.2373
## Bandwidth: 14268.62 CV score: 296.1994
## Bandwidth: 8855.63 CV score: 221.2646
## Bandwidth: 5510.219 CV score: 175.818
## Bandwidth: 3442.641 CV score: 155.5805
## Bandwidth: 2164.807 CV score: 145.5323
## Bandwidth: 1375.063 CV score: 158.1093
## Bandwidth: 2462.002 CV score: 147.0105
## Bandwidth: 1863.152 CV score: 145.9767
## Bandwidth: 2082.399 CV score: 145.3803
## Bandwidth: 2062.655 CV score: 145.3684
## Bandwidth: 2047.717 CV score: 145.3665
## Bandwidth: 2050.556 CV score: 145.3664
## Bandwidth: 2050.706 CV score: 145.3664
## Bandwidth: 2050.687 CV score: 145.3664
## Bandwidth: 2050.687 CV score: 145.3664
## Bandwidth: 2050.687 CV score: 145.3664
## Bandwidth: 2050.687 CV score: 145.3664
## Bandwidth: 2050.687 CV score: 145.3664
bw_gwr
## [1] 2050.687
# GWR本体
gwr_fit <- gwr(
ln_price ~ ln_dist_sta + n_sta_1km + n_sta_3km,
data = gwr_df,
coords = coords_gwr,
bandwidth = bw_gwr,
hatmatrix = TRUE,
se.fit = TRUE
)
# SpatialPointsDataFrame → sf に変換 & CRS設定
gwr_sf <- st_as_sf(gwr_fit$SDF)
st_crs(gwr_sf) <- st_crs(l01_access_admin)
# 係数マップ(ln_dist_sta)
ggplot() +
geom_sf(data = admin_saitama, fill = NA, color = "grey70") +
geom_sf(
data = gwr_sf,
aes(color = ln_dist_sta),
size = 0.7
) +
scale_color_viridis_c(option = "plasma") +
coord_sf() +
labs(
color = "GWR係数(ln_dist_sta)",
title = "最寄り駅距離の局所係数分布(GWR, ln_dist_sta)"
) +
theme_minimal()
#回帰結果テーブル
models_ols <- list(
"M1: ln_distのみ" = m1,
"M2: ln_dist + 駅密度" = m2,
"M3: M2 + 市区町村FE" = m3,
"M4: 南部dummy × ln_dist" = m4,
"M5: M4 + 市区町村FE" = m5
)
modelsummary(
models_ols,
gof_map = c("nobs", "r.squared", "adj.r.squared", "AIC", "BIC"),
stars = TRUE
)
| M1: ln_distのみ | M2: ln_dist + 駅密度 | M3: M2 + 市区町村FE | M4: 南部dummy × ln_dist | M5: M4 + 市区町村FE | |
|---|---|---|---|---|---|
| + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 | |||||
| (Intercept) | 11.496*** | 10.994*** | 9.894*** | 10.712*** | 9.891*** |
| (0.022) | (0.030) | (0.200) | (0.026) | (0.200) | |
| ln_dist_sta | -0.436*** | -0.296*** | -0.313*** | -0.265*** | -0.297*** |
| (0.023) | (0.023) | (0.014) | (0.024) | (0.018) | |
| n_sta_1km | 0.002 | 0.070*** | 0.068*** | 0.071*** | |
| (0.016) | (0.010) | (0.013) | (0.011) | ||
| n_sta_3km | 0.109*** | 0.035*** | 0.075*** | 0.034*** | |
| (0.006) | (0.005) | (0.005) | (0.005) | ||
| factor(city_name)ふじみ野市 | 2.029*** | 2.021*** | |||
| (0.219) | (0.226) | ||||
| factor(city_name)伊奈町 | 1.069*** | 1.077*** | |||
| (0.254) | (0.254) | ||||
| factor(city_name)羽生市 | 0.075 | 0.082 | |||
| (0.217) | (0.217) | ||||
| factor(city_name)浦和区 | 2.340*** | 2.327*** | |||
| (0.212) | (0.219) | ||||
| factor(city_name)越生町 | 0.048 | 0.061 | |||
| (0.265) | (0.265) | ||||
| factor(city_name)越谷市 | 1.550*** | 1.546*** | |||
| (0.208) | (0.211) | ||||
| factor(city_name)横瀬町 | 0.283 | 0.287 | |||
| (0.316) | (0.316) | ||||
| factor(city_name)桶川市 | 1.374*** | 1.377*** | |||
| (0.217) | (0.217) | ||||
| factor(city_name)加須市 | 0.483* | 0.483* | |||
| (0.209) | (0.209) | ||||
| factor(city_name)皆野町 | -0.323 | -0.284 | |||
| (0.317) | (0.318) | ||||
| factor(city_name)滑川町 | 0.481+ | 0.497* | |||
| (0.253) | (0.253) | ||||
| factor(city_name)岩槻区 | 1.271*** | 1.279*** | |||
| (0.216) | (0.216) | ||||
| factor(city_name)寄居町 | -0.031 | -0.020 | |||
| (0.318) | (0.318) | ||||
| factor(city_name)吉見町 | 0.786** | 0.766** | |||
| (0.245) | (0.246) | ||||
| factor(city_name)吉川市 | 1.537*** | 1.544*** | |||
| (0.239) | (0.246) | ||||
| factor(city_name)久喜市 | 0.866*** | 0.870*** | |||
| (0.208) | (0.208) | ||||
| factor(city_name)宮代町 | 0.590* | 0.603** | |||
| (0.231) | (0.231) | ||||
| factor(city_name)狭山市 | 1.389*** | 1.384*** | |||
| (0.209) | (0.217) | ||||
| factor(city_name)熊谷市 | 0.728*** | 0.732*** | |||
| (0.209) | (0.209) | ||||
| factor(city_name)見沼区 | 1.533*** | 1.537*** | |||
| (0.215) | (0.215) | ||||
| factor(city_name)戸田市 | 2.043*** | 2.037*** | |||
| (0.217) | (0.224) | ||||
| factor(city_name)幸手市 | 0.675** | 0.683** | |||
| (0.231) | (0.231) | ||||
| factor(city_name)行田市 | 0.308 | 0.315 | |||
| (0.213) | (0.213) | ||||
| factor(city_name)鴻巣市 | 0.960*** | 0.967*** | |||
| (0.211) | (0.211) | ||||
| factor(city_name)坂戸市 | 1.182*** | 1.190*** | |||
| (0.218) | (0.218) | ||||
| factor(city_name)桜区 | 1.814*** | 1.813*** | |||
| (0.230) | (0.237) | ||||
| factor(city_name)三郷市 | 1.629*** | 1.629*** | |||
| (0.213) | (0.221) | ||||
| factor(city_name)三芳町 | 1.852*** | 1.856*** | |||
| (0.245) | (0.252) | ||||
| factor(city_name)志木市 | 2.196*** | 2.189*** | |||
| (0.232) | (0.238) | ||||
| factor(city_name)春日部市 | 1.083*** | 1.093*** | |||
| (0.208) | (0.208) | ||||
| factor(city_name)所沢市 | 1.679*** | 1.668*** | |||
| (0.207) | (0.215) | ||||
| factor(city_name)小鹿野町 | 0.757* | 0.729* | |||
| (0.317) | (0.317) | ||||
| factor(city_name)小川町 | 0.221 | 0.223 | |||
| (0.228) | (0.228) | ||||
| factor(city_name)松伏町 | 1.468*** | 1.450*** | |||
| (0.253) | (0.253) | ||||
| factor(city_name)上尾市 | 1.467*** | 1.472*** | |||
| (0.208) | (0.208) | ||||
| factor(city_name)上里町 | 0.493+ | 0.494+ | |||
| (0.264) | (0.264) | ||||
| factor(city_name)新座市 | 2.182*** | 2.182*** | |||
| (0.212) | (0.220) | ||||
| factor(city_name)深谷市 | 0.541* | 0.548** | |||
| (0.210) | (0.210) | ||||
| factor(city_name)神川町 | -0.263 | -0.266 | |||
| (0.316) | (0.316) | ||||
| factor(city_name)杉戸町 | 0.746** | 0.749** | |||
| (0.239) | (0.239) | ||||
| factor(city_name)西区 | 1.454*** | 1.463*** | |||
| (0.228) | (0.229) | ||||
| factor(city_name)川越市 | 1.576*** | 1.577*** | |||
| (0.205) | (0.206) | ||||
| factor(city_name)川口市 | 2.057*** | 2.052*** | |||
| (0.204) | (0.212) | ||||
| factor(city_name)川島町 | 1.007*** | 0.982*** | |||
| (0.265) | (0.265) | ||||
| factor(city_name)草加市 | 1.661*** | 1.655*** | |||
| (0.208) | (0.215) | ||||
| factor(city_name)大宮区 | 1.911*** | 1.914*** | |||
| (0.226) | (0.228) | ||||
| factor(city_name)秩父市 | 0.668** | 0.680** | |||
| (0.246) | (0.246) | ||||
| factor(city_name)中央区 | 1.808*** | 1.792*** | |||
| (0.222) | (0.229) | ||||
| factor(city_name)朝霞市 | 2.088*** | 2.077*** | |||
| (0.214) | (0.221) | ||||
| factor(city_name)鶴ヶ島市 | 1.157*** | 1.169*** | |||
| (0.222) | (0.223) | ||||
| factor(city_name)東松山市 | 0.949*** | 0.956*** | |||
| (0.215) | (0.215) | ||||
| factor(city_name)南区 | 2.154*** | 2.146*** | |||
| (0.215) | (0.223) | ||||
| factor(city_name)日高市 | 0.472* | 0.468* | |||
| (0.223) | (0.228) | ||||
| factor(city_name)入間市 | 1.431*** | 1.427*** | |||
| (0.211) | (0.219) | ||||
| factor(city_name)白岡市 | 1.131*** | 1.139*** | |||
| (0.231) | (0.231) | ||||
| factor(city_name)八潮市 | 1.792*** | 1.793*** | |||
| (0.217) | (0.224) | ||||
| factor(city_name)鳩山町 | 0.824** | 0.805** | |||
| (0.265) | (0.265) | ||||
| factor(city_name)飯能市 | 1.073*** | 1.059*** | |||
| (0.217) | (0.224) | ||||
| factor(city_name)美里町 | -0.096 | -0.105 | |||
| (0.316) | (0.316) | ||||
| factor(city_name)富士見市 | 1.936*** | 1.924*** | |||
| (0.216) | (0.224) | ||||
| factor(city_name)北区 | 1.312*** | 1.327*** | |||
| (0.219) | (0.220) | ||||
| factor(city_name)北本市 | 1.271*** | 1.280*** | |||
| (0.219) | (0.219) | ||||
| factor(city_name)本庄市 | 0.536* | 0.542* | |||
| (0.219) | (0.219) | ||||
| factor(city_name)毛呂山町 | 0.073 | 0.092 | |||
| (0.229) | (0.230) | ||||
| factor(city_name)嵐山町 | 0.368 | 0.374 | |||
| (0.253) | (0.253) | ||||
| factor(city_name)緑区 | 2.056*** | 2.056*** | |||
| (0.215) | (0.223) | ||||
| factor(city_name)蓮田市 | 1.292*** | 1.293*** | |||
| (0.222) | (0.222) | ||||
| factor(city_name)和光市 | 2.110*** | 2.098*** | |||
| (0.223) | (0.231) | ||||
| factor(city_name)蕨市 | 2.098*** | 2.087*** | |||
| (0.240) | (0.247) | ||||
| south | 0.787*** | 0.004 | |||
| (0.031) | (0.057) | ||||
| ln_dist_sta × south | -0.025 | -0.034 | |||
| (0.032) | (0.023) | ||||
| Num.Obs. | 1301 | 1301 | 1301 | 1301 | 1301 |
| R2 | 0.213 | 0.425 | 0.841 | 0.629 | 0.841 |
| R2 Adj. | 0.213 | 0.423 | 0.831 | 0.627 | 0.831 |
l01_access_resid <- l01_access_admin %>%
st_drop_geometry() %>%
mutate(res_m2 = residuals(m2)) %>%
bind_cols(
l01_access_admin %>% st_geometry() %>% st_as_sf()
) %>%
st_as_sf()
ggplot() +
geom_sf(data = admin_saitama, fill = NA, color = "grey80") +
geom_sf(
data = l01_access_resid,
aes(color = res_m2),
size = 0.8
) +
scale_color_gradient2(
low = "blue",
mid = "white",
high = "red",
midpoint = 0
) +
coord_sf(datum = NA) +
labs(
color = "残差 (M2)",
title = "OLSモデル(M2)の残差分布",
subtitle = "ln(price) ~ ln_dist_sta + 駅密度(1km, 3km)"
) +
theme_minimal()