感染対策が機能しているか判断するには潜伏期間の2週間を考慮するために移動平均で評価する必要がある。そこで、Elastic search社のKibanaを利用して、covid-19の感染者データを2週間の移動平均でプロットする。
環境
ElasticSearch version 7.12.1
Kibana
kibanaに読み込ませるデータの準備
csvフォーマットのファイルを読み込ませる。
1行目は項目名にする。
文字コードがsift-JISでは文字化けするので、utf8でエンコードする。
日付フォーマットを’2021-05-11’のように西暦年と2桁の月日の数字を「ー」で区切るフォーマットに変換する。
県によってはCSV形式でなく、EXCELフォーマットで公開しているので、EXCELがあると便利。
最近のEXCELではUTF-8のCSVファイルで保存できるようになった。
居住地が管轄保健所になっている場合もあるが、居住地名が長いとグラフの表示が冗長になるので短く変換すると良い。データのフィルター機能で確認する。
kibanaにデータを読み込ませる
elasticのHomeにある「Upload a file」リンクから、
csvファイルを「drag and drop」エリアにドロップしてファイルを読み込ませる。
SummaryのTime fieldが表示されていない場合は、日付フォーマットに問題がある。
宮城県のデータには確定日に「欠番」と記述されたレコードがあるので、このレコードを削除する。EXCELのデータフィルターで確認する。
kibanaでグラフをプロット
- サイドメニュのAnalysticにあるVisualize Libraryから開始
- Create new visualizationをクリックし、読み込んだデータを選択
- 作成手法はAggregation Base
- グラフの種類はLineまたはAreaなど、時間軸とカウント数の関係を表示できるタイプを選択
- 読み込ませたデータをプロットするデータ源に選択
プロット
プロットする時間域を1ヶ月から3ヶ月程度に設定し、x軸をDate Histgram、y軸をレコード数の移動平均、パラメータを居住地になるように設定する。
- y軸の指定
- Bucketsにsplit seriesを追加
- Bucketsにx軸を追加。 x軸をsplit seriesより先に追加すると警告がでるがドラッグで順序を変更可能
y軸
Aggregation : "MovingAvr"
Metric: "Custom metric"
Custom metricのAggregation: "Count"
Advancedに「{"window":14}」と記述し14日の平均期間を指定
split series
Aggregation : "Terms"
Field : "居住地"
Order by : "Custom metric"
Custom metricのAggregation: "Count"
Order : "Descending"
Size : "5" (プロットするパラメータ数)
x軸
Sub aggregation: "Date Histgram"
Field : "@timestamp"
Minimum interval : "Day"