ラーメン屋さんになりたい-Locational Analysis with R-
SappoRo.R#6
@WAFdata
自己紹介
http://wafdata.hatenablog.com/
@WAFdata
@WAFdata_kudo
Rとお寿司とらーめn|
𝑚𝑖𝑛
𝑖−1
𝑛
𝑗−1
𝑛
𝑎𝑖 𝐼𝑖𝑗𝑑𝑖𝑗
𝑗=1
𝑛
𝐼𝑖𝑗 = 1 𝑖 =1, … , 𝑛
𝑗=1
𝑛
𝐼𝐽𝐽 = 𝑝
𝐼𝑖𝑗 ≤ 𝐼𝑗𝑗 𝑖 ≠j
S.t)
-立地分析におけるp-メディアン問題-
需要地点から施設立地点までの移動費用の総和を最小にすることを考える。
→今回は需要地点=各世帯、施設=ラーメン屋
P個の施設数のメディアン(総移動距離最小地点)を求めるとき
𝑎𝑖 =地点iの需要
𝑑𝑖𝑗 =地点iとjの移動コスト(距離)
I𝑖𝑗 =地点iからjへの需要有無(1,0) とすると
出店したいラーメン屋は1つなので p=1のMinSum問題に帰結。
世帯A
N=1
世帯B
N=3世帯D
N=5
世帯C
N=8
札幌市中央区にこのように世帯が配置されているとします。
世帯A
N=1
世帯B
N=3世帯D
N=5
世帯C
N=8
各世帯から距離(𝑑𝑖𝑗)が最小となる点がここだとすると…..
→この位置だと西側の需要(=世帯人口)を反映できていない
世帯A
N=1
世帯B
N=3世帯D
N=5
世帯C
N=8
各地点を世帯人数(𝑎𝑖)で重み付けられた距離の総和を最小にすると…
→ここにラーメン屋を出せばいいよね!
①データ準備
札幌市中央区の小地域shapefile
1)SpatialPolygonDataframeとして読み込み
2)小地域ごとの人口でコロプレス描画
①データ準備
各小地域ごとのポリゴン内の代表点をcoordinates関数により抽出し、座標をデータに格納
①データ準備
この点ひとつひとつを世帯と考え、各小地域の人口を世帯人数と読み替えて考えます。
②立地分析
{orloca}パッケージを使ってMinSum問題を解きます。
loca<-loca.p( x=Chuo.dc$X_cen, y=Chuo.dc$Y_CEN, w=Chuo.dc$JINKO)
各世帯の座標 重み付け(世帯人口)
1) loca.pクラスオブジェクトを作成
Point<- zsummin(loca)
2) zsummin関数で重み付き距離の総和が最小となる点を算出
loca.pクラスオブジェクト
結果) ラーメン屋さん座標
③可視化
{leaflet}パッケージで見やすい地図を描いてみる
小地域ポリゴン → 中央区全体で一つのポリゴンに統合
Enjoy!!
<参考文献>
◎ Rで学ぶデータサイエンス 地理空間データ分析 谷村 晋著