Gin04ghデータ分析業務、予測モデル開発などを担当しています。勉強してきた技術などを適当に書いていければと思います。Python、R、SAS、JavaScript、PHP、Rubyらへんが得意です。http://www.e-stat.go.jp/api/e-Statは日本政府が調査した統計データを閲覧・ダウンロードできるよう管理されたポータルサイトです。-地理空間情報処理-』を読みました。-スパースモデリングと多変量データ解析-』も出ていますね。2017-02-16Amazon楽天ブックスで、Vol4の中で、e-Statから取得した地理データから階層ベイズモデルを用いて地域特徴を推定する事例を紹介されており、面白そうなのでやってみました。上記書籍では、e-Statから普通にダウンロードしたデータを、Stan/BUGSなどのベイズ統計言語でデータを推定し、そこからまた別の地理データ可視化ソフトウェアを使って、推定結果を可視化していましたので、今回はそれらを全てPythonで一括してやってみようと思います。問題と統計モデル地域別の自殺リスクを推定する上記の書籍では、地図上に表現された地理的な隣接情報を利用して、空間的な相関を考慮した階層ベイズモデルを用いた「地域別の自殺リスク」の推定を行って、その結果をコロプレスマップとして地図上に可視化、ということをやっています。e-Statでダウンロードした地域別の自殺数を用いて、普通に自殺リスクを算出しようとすると、地域によっては値が小さすぎて、適切な自殺リスクが得られないため、ベイズモデルで空間的な相関を導入することで、これを解決するという方法を提案されています。標準化死亡比(SMR)「自殺リスク」とは何かという話ですが、これについては疫学の分野において、ある基準集団と比べて相対的にリスクが高いか低いかを表す指標で、標準化死亡比(SMR)というものがあります。ある地区が、基準集団と同じリスクを持つ場合の死亡数を、期待死亡数と呼び、下記で計算できます。観測された死亡数が、この期待死亡数に比べて多い場合、死亡のリスクが大きいと考えられ、これを標準化死亡比(SMR)と言います。観測死亡数データからこの比率を単純に計算することもできますが、今回はこれを推定する方向で実装してみます。統計モデル上記を踏まえて、SMRを地域の相関が考慮されるように推定する階層ベイズモデルを次のように設計します。隣接地区と似通った傾向を持つことを表すパラメータデータは死亡数なのでポアソン-対数正規モデルとし、ポアソン分布のパラメータに地域相関のあるSMRがかかる形にしています。SMRの推定値に相当します。PyMCPyMCは、ベイズ統計モデルの設定とMCMCサンプリングをPythonで実行できるライブラリです。https://github.com/pymc-devs/pymc3PyMCにはPyMC2系列とPyMC3系列があるようです。どっちがどうとかはよく分かりませんが、PyMC3の方が早いとかどこかで見ましたので、こちらを使うことにしました。ちなみにPythonでのベイズ統計ライブラリといえば、Stanを実行できるPyStanもあります。比較してみると結構記述はPyMCの方がスマートで、直感的にモデルの構造が分かりやすい記述なのかなと思います。インターネット上に情報がなく、PyStanは結局Stanですので、StanやRStanで書かれた情報とかも参考になる分、こちらは実装に苦労しました...。chains=1)fit.plot()plt.show()地理データを階層ベイズモデルで推定・可視化それでは、実装になります。APIから直接取得します。http://www.e-stat.go.jp/api/推定はPyMC3で行い、可視化は前回同様、Foliumを使って、そのまま分析環境で可視化してみます。https://github.com/python-visualization/foliumコードが下記になります。1.15],fill_color="YlGnBu",fill_opacity=0.7,line_opacity=0.3,reset=True)display(map)都道府県別でリスク推定をしてみた結果になります。思ったよりも、地方の方がリスクが高いように推定されているみたいで、期待死亡数の方も、全体的に地方の方が高い傾向にありました。ちなみに、書籍では市区町村別のデータにしていたため、おそらく欠損とかもある中、うまく推定をしているのでしょうが、そのデータがなぜか見つかりませんでした...。本当は同じデータを使って、答え合わせしたかったのですが...。それでも、実装の勉強になりました。個人的には、地域相関を入れるCAR事前モデルの部分が、Stanですとパッケージで自動的にやってくれるみたいですが、PyMCはそれがないので自前で作らなければならず、そこが正しく出来ているのか不安です。多変量ガウス分布の分散共分散行列で地域相関を表現させる際の重みの調整はどうすれば良いか分からず、結局そこにも事前分布を入れて、回してみるようにしてみた、といったところです。コメントをキャンセルメールアドレスが公開されることはありません。・掲載されている広告について当サイトでは、第三者配信の広告サービス(Googleアドセンス)を利用しています。使用することがあります。Googleアドセンスに関する詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをご参照ください。・使用しているアクセス解析ツールについて当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のために『Cookie』を使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。『Cookie』を無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはこちらをご覧ください。