桐間紗路研究所日報

技術以外の話→ https://kirimasyaro.hateblo.jp

H20年東京都市圏パーソントリップ調査データの分析:地域による交通機関選択の違いについて その1

 パーソントリップ調査とは、国や地方自治体が、交通機関利用の実態を調べるために質問紙を配布して行う調査であり、交通実態調査とも呼称される。アンケートなので、デタラメや間違いを書くこともできるうえに、無回答者も当然多いわけで、調査結果が正しいものであるという保証はおそらくないだろうが、近年注目を集めているビッグデータの1つとして活用できる程度には、大規模で調査しがいのあるデータである。

 ここではデータの正確性についてはとりあえず論じないものとする。データは ここここ からダウンロード可能だ。下の方にこっそり載っている。データは3つあり、そのうち、発生・集中量と、OD量を見ていく。前者の国土数値情報データのほうが、shapeファイルとして地物データが予めついている簡単なデータである(ただしOD量はとてつもなく重い)ため、即座に視覚化しやすく楽しい。 ちなみに今ある最新のデータはH20年のものであり、少し古い感が否めない。

 とりあえず、通勤に電車を使用する人の人数を視覚化(見える化w)していこう。ソフトはQGISを利用する。QGISの使い方はある程度知っている前提で書くため、知らない人には手段を再現できなくておもしろくないかもしれない点はご容赦いただきたい。 f:id:copuy:20190708080856j:plain  単位は人数である。したがって当然、もともと人口の少ない地域であれば少なく出るのは当然である。だがそれを考慮しているうちにデータ分析の楽しさを見失ってしまってはつまらないので、とりあえず描画してみた。大体想像通りの結果が出ていると思う。この図を描画するには、レイヤのプロパティを開き、スタイル→段階に分けられたと進み、カラム、の右にあるεボタンを押し、式ダイアログに、

case when
to_int("S05a_003") = 1
then
to_int("S05a_005")
else
NULL
end

と入力する。次に分類モード「等量」、分類数「11」を選択し、分類ボタンを押す。最後に適用ボタンを押すことで描画される。以降、地図描画はこのプロセスにて行っていく。

 おそらく、この図で注目すべきは、久里浜駅周辺や佐倉駅周辺、久喜駅周辺の地域において人数が多いことだろう。ちなみにこの地域の区切りは市区町村とそのまま一致するわけではない。おそらくいくつかの市区町村を一緒にしたり、逆にもうすこし細かく切ったりしている。それがどのようにして決められたのかは調べていないのでわからない。人口が均等になるように配慮されたのだろうか。しかしこれだけではまだわからない。であるから、佐倉駅周辺地域と久喜駅周辺地域が面積が広いせいで大きく値が出ている可能性も捨てきれない。しかし久里浜駅周辺地域は、周囲の同じくらいの面積の地域に比べて明らかに高い値が出ている。こういった「異常値」から、データの真の特徴を探っていくのも悪くないだろう。

 一旦プロパティを閉じ、 上部バーからiアイコンをクリックすると、地物選択モードになり、地物の情報を閲覧できる。以下がそれである。説明が遅れたが、このS05a_0xxというカラム名は、 ここ ※注意:xlsファイルがいきなりダウンロードされます。 を見れば意味がわかる

f:id:copuy:20190708082333p:plain

 この地域はもしかすると偶然回答者が多かったのかもしれない。全体的に値が大きめな気がする。その仮定で考えた場合、何か他の値との比率で考えれば値の偏りが解消される気がする(あるマンションでたまたま全住民が回答し、たまたまそのマンションが駅から近かったりするかもしれないが)。そこで、「鉄道通勤者/自家用車通勤者」を計算し、描画することにする。

 f:id:copuy:20190708083632j:plain

 先ほどとは様子がかなり大きく変わってしまった。久里浜や久喜の特異点は消えてしまい、いわゆる通勤5方面路線周辺への集中が激しくなった。しかしよく見てみると、そもそも鉄道路線周辺では地域の区切りが細かくなっているような気がする。千葉ニュータウン小田急線沿線では1ポリゴンの面積が大きく、それが通勤5方面ばかり目立っている理由かもしれない。

 そこで、面積の値別にこのデータを見ていくことにする。レイヤを右クリックし属性テーブルからフィールド計算機を開くことで、各地物の面積を地物情報として追加することができる。値の名前はareaとし、レイヤ右クリックから保存でCSVファイルとして属性テーブルを書き出す。今回は、temp.csvという名前で保存した。

 ここで、jupyter-notebookとpython、pandas、matplotlibなどを使っていく。早速pandasでcsvを読み込み、地物の面積の内訳をグラフ化してみる。

%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
from math import log10, sqrt

df = pd.read_csv('temp.csv')
x = [x/10**6 for x in df[df['S05a_003']==1]['area']]
plt.hist(x, bins=70)

f:id:copuy:20190708101554p:plain

こうなる。値が大きすぎるので、10**6で面積を割っている。ちなみにQGISで地域の面積別に色分けすると

f:id:copuy:20190708101839p:plain

こうなり、さっきの鉄道通勤者/自家用車通勤者分布とちょっと似ている部分があることがわかる。23区外縁部や川崎市さいたま市などである。この情報は以降の分析に必要なわけではないが、何を見ているのか把握しておくために一応調べた。

 ここで本題の、面積別、鉄道通勤者/自家用車通勤者のヒストグラムを描画する。

%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import math
from math import log, log10, sqrt

df = pd.read_csv('temp.csv')
a = [0, 7500**2/4, 7500**2/4*2, 7500**2/4*3, 7500**2]
for i1, i2 in zip(a[:-1], a[1:]):
    fig = plt.figure()
    d = []
    s = df[df['S05a_003']==1].query(f'{i1} < area < {i2}')
    for x, xx in zip(s['S05a_005'], s['S05a_017']):
        if xx != 0 and x/xx != 0:
            d.append(log(x/xx))
    ax = fig.add_subplot(1,1,1)
    ax.set_ylim(0, 20)
    ax.set_xlim(-5, 5)
    ax.hist(d, bins=50)
    plt.savefig(f'{i1}_area_{i2}.png')

f:id:copuy:20190708120321p:plainf:id:copuy:20190708120335p:plainf:id:copuy:20190708120349p:plainf:id:copuy:20190708120356p:plain

 右に行けば行くほど鉄道依存、左に行けば車依存となる。この4カテゴリは、ちゃんと色分けをすると以下の地域に該当する。

f:id:copuy:20190708102752p:plain

 鉄道利用率の平均は、82, 59, 36, 28(%)となっている。面積が広くなればそれだけ鉄道駅から遠ざかり、車利用者も多くなると考えれば、地図に惑わされて、ああやっぱり首都圏外縁部ではモータリゼーションが進んでいるんだ、と安易に結論を出さずに済むかもしれない。一方、面積の狭いポリゴンがそもそも鉄道利用者の多い箇所に分布しているので、相乗効果で鉄道利用率が高く出ているのかもしれない。

 なんかいまいちよくわからない方向に分析が進んでいる気がする。まあとにかく、地理の分析では地域をどう区切っているかということをいちいち気にしながら進めたほうが良いのかもしれない。行政区分(市区町村・町丁目)はよくできているので、うまく文化的に共通したまとまりを抽出できている可能性はあるが、伝統的な区分がコンピュータサイエンス時代でそのまま使えるかはなんともいえないとおもう。

 まだまだ分析の道のりが長そうです。どうすればいいんだろう。でもこういう地道な積み重ねがないと誤った結論を出してしまう気がする。本当は統計学ちゃんと勉強したほうが良いんだけどなあ…

 追記:変な間違いがあったので修正しました。