LoginSignup
2
0

More than 1 year has passed since last update.

昨年発売のコチラの書籍を読んでいたところ実装して試したくなったので、echelon-pyという汎用パッケージを作って公開しました。

栗原考次・石岡文生 (2021) 『エシェロン解析―階層化して視る時空間データ―』 共立出版


パッケージに実装されている全機能をカバーするように、論文等で扱われている例を実装したノートブックも作成・同時に公開しています。データセットのダウンロードもノートブック内で行なっているので、他の実装をちょっと試すのにも地味に便利。
https://takeshi-teshima.github.io/echelon-py-examples/

使用例:東京23区の肺炎データ

上述の書籍でも使われているデータです。

入力①:観測値のDataFrame
スクリーンショット 2022-01-28 15.28.10.png

入力②:GeoPandasで読み込んだ東京都のShapefile(.shp)
スクリーンショット 2022-01-28 15.29.00.png

この2つの入力からEchelonを作成して、Dendrogramで図示(このときAdjacencyの情報をShapefileから抽出している):

from echelon.contrib.geo import GISEchelonAnalysis
api = GISEchelonAnalysis()

result = api(table43, Tokyo_gdf, 'ID', 'Name', 'SMR')

print(api.dendrogram(result))

結果
スクリーンショット 2022-01-28 15.31.51.png

同じデータと、作成済みのEchelon集合から、ホットスポット候補の列挙

hotspots = api.hotspots(result, (table43, 'ID', 'n', 'o'), score='binomial')
hotspots

スクリーンショット 2022-01-28 15.33.31.png

列挙したホットスポット候補のトップ1を地図にプロット

%matplotlib inline
import matplotlib.pyplot as plt
api.plot_hotspot(hotspots)
plt.show()

スクリーンショット 2022-01-28 15.34.23.png

こちらの例は以下のノートブックで確認できます:

未実装の機能

モンテカルロ検定と時系列ホットスポット表示以外は概ね実装しました。
Matplotlibでデンドログラムを楽していい感じに描く方法がなさそうだったので、デンドログラムは図ではなく文字列で出ます。本当は図で出力する機能を付けたいところ。
デンドログラムをいい感じに描けるよという方がいたらぜひIssueでお知らせください。

参考

書籍に書かれているアルゴリズムはそのままだと動かなかった(ちょっとしたバグとかではなく)ので、R実装を参考にしつつ、多分こうだろうというアルゴリズムを実装しています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0