銀行員 RとPythonに出会う

Rネタを中心に、いろいろと更新していきます

RESAS

最近興味を持ったこと。

contest.resas-portal.go.jp

 

RESASは、一言でいうと官民ビッグデータがいろいろと収納された可視化ツールです。地方創生に向けた施策の一つで、自治が客観的なデータに基づく形で地域の現状や課題を把握できるようにすることを意図しているようです。

これまでにRESASの存在は知っていましたが、使ったこともなかったため勉強がてらいじってみました。

 

ちなみに、今回は「政策アイデアコンテスト」ということで、一つ自治体を選んでRESASを用いた分析と政策提言をパワポにまとめることがお題のようです。

 

一方で、RESASのAPIを絡めたアプリ開発コンテストたるものもあります。

opendata.resas-portal.go.jp

 

さて、RESASの便利なところは、APIが公開されているところと、APIを使わなくてもそのままテーブルデータをダウンロードしてこれることです。

市区町村ごとにいろいろな項目をテーブルデータで引っ張て来ては結合、クレンジングを繰り返して一つのデータセットに仕上げましたので多変量解析の題材にしてみます。

 

僕が分析対象にした自治体は20・30代人口の社会減が顕著でしたので、自治体ごとの20・30代人口社会増減(人口比)を目的変数に設定して色々と分析を試行しました。

※社会増減は2010年→2015年の変化が最新のデータです

 

結果的には、20・30代人口社会増減の上位10%の自治体に1(フラグ)を立てて、それ以外を0に置き換えてロジスティック回帰を行いました。

※上位10%の自治体は、すべて社会増です

 

この手の分析だと重回帰だよねとなりそうですが。。。

連続値をわざわざ0と1に置き換える(情報量が失われる)ことに何の意味があるのか突っ込まれたら苦しいですが、目指したいのは「社会増減上位層」との比較を通じて弱みを見つけることと、スコアリングの手法を使って解釈しやすいモデルを作りたい。というそれだけです。

 

今回もRで分析を行いましたが、試行錯誤的にモデルを組んだので、とりあえず結果だけ。

今回選んだ変数とスコアカード、スコア分布はこんな感じです。

スコアについては、高いほうがターゲットに近い(確率が高い)ことを意味するようにしています。

f:id:d_s:20181009231411p:plain

選んだ変数を見ると、一人当たり農林水産費のように、増えれば増えるほどスコアが悪くなる等、いわゆる「地方度合」を表しているとも解釈できる変数も入っています。

この手の変数はコントロールできるようなものでもなさそうです。

今回は約1500の自治体に対し200近い説明変数がついたデータセットを作成しましたが、相関やIV、giniを見ながら50くらいの候補変数に絞ったうえで試行錯誤的に変数選択を行いました。

変数の後ろについている「2011」や「2012」といった数字は、その変数の時系列を表します。目的変数は、2010→2015年の20・30代人口社会増減でしたので、できるだけ古い時系列の説明変数で投入しています。

2015年の直近である2014年の説明変数を投入して採用したとしても、人口の増減がその変数に影響を与えたのか、またはその逆か因果関係がわからなくなってしまうためです。

厳密にいえば2011年や2012年の変数でも完全な因果関係なんてわからないのですが。

因果関係を統計的に表現するのにベイジアンネットワークたる手法もあるようですが、そこら辺の知識は疎いため今回は試みていません。

ベイジアンネットワークの適用はこの手の分析で面白そうです。

 

また、予測が目的ではありませんが、一応モデルの精度を確認するためにデータセットを学習:検証(8:2)に分割しています。

作成したスコアカードを学習、検証データに適用すると、スコア分布はおおむね安定しているためモデルの精度は問題なさそうです。

f:id:d_s:20181009231456p:plain

 

参考までに、K-S値とROC曲線も確認しておきます。

K-Sの「Bad,Good」はそれぞれ「Target,non-Target」と読み替えてください。

f:id:d_s:20181009232607p:plain

 

 

長くなりましたが、このような流れで分析を続けた結果、僕が選んだ自治体は「創業比率」のスコアが他の自治体に比べて悪かったので、創業に関する施策を考えました。

そもそもの創業に関する分析については、定量的なソースも含めて中小企業白書2017年版にしっかりと載っています。