Splunkで日本のCOVID19感染状況を予測する 

@maroon さんから教えてもらった、_StateSpaceForecast_で予測してみる。

データは [先の記事](https://qiita.com/toshikawa/items/ff47dcfb4d23e11e2f37)で作成したもの。なお`2020/04/10`までのデータ

やり方は [@maroonさんのページ](https://qiita.com/maroon/items/e174ec43949e62282489)を参照

#基本クエリ
```python:forecast.spl
| inputlookup covid_japan.csv 
| rename pref as _pref 
| foreach * [eval Check=max('<<FIELD>>')] 
| sort 10 - Check 
| fields - Check 
| transpose 0 header_field=_pref column_name=time 
| eval _time=strptime(time,"%m/%d") 
| fields - time 
| timechart span=1d max(*) as * 
| eval holiday=if(strftime(_time,"%F")="2020-03-20" OR tonumber(strftime(_time,"%w")) % 6=0,1,0)
```
三月の祝日を入れてみた。

```python:addtional.spl
...
| fit StateSpaceForecast "千葉県" "埼玉県" "東京都" "神奈川県" output_metadata=true holdback=7 forecast_k=14 conf_interval=90 period=7 specialdays=holiday into "_exp_draft_1cc33dfab1ab4f95a35048461c9016c3"
```
最大五つの予測なので関東、関西、その他で分けた
パラメータは

- holdback=7 予測に使用しない期間 過去7日
- forcast_k=14 予測期間 14日
- conf_interval=90 信頼区間 90%
- period=7 期間 7日
- specialdays=holiday 特別日フィールド `holiday`
- into 作成したモデル

#結果
##東京都、神奈川県、千葉県、埼玉県
![qiita_kanto_RMSE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/28c4d4f0-4a1a-f707-1af8-86c1f55a8fa6.png)
![qiita_kanto_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/ddbb82fc-78dc-2152-8b54-557094c6134d.png)
##大阪府、兵庫県、京都府
![qiita_kansai_RMSE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/4716710c-a065-b0af-3d45-a68a5388b7db.png)
![qiita_kansai_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/38726751-7527-9756-fde3-d6de2492ba69.png)
##愛知県、福岡県
![qiita_other_RMSE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/9b3ac561-fd24-1f7b-8dbd-0ea10c66667d.png)
![qiita_other_graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/40554ee5-20e4-5adb-0186-a30da9d1dc4f.png)
結果をみると

- 機械学習が適用できる: 東京、神奈川、兵庫、愛知
- アルゴリズムの変更が必要: 千葉、埼玉、大阪、京都、福岡

#別アルゴリズムで検証する
##千葉県と埼玉県
```python:chiba.spl
| inputlookup covid_japan.csv |  rename pref as _pref
| foreach * [eval Check=max('<<FIELD>>')]
| search _pref="東京都" OR _pref="千葉県"
| transpose 0 header_field=_pref column_name=time
| eval _time=strptime(time,"%m/%d")
| eval time=strftime(_time,"%F")
| sort _time
| fields - time
| timechart span=1d last(*) as *
| predict algorithm=LLB 千葉県 as 予測 holdback=30 correlate=東京都
```
![qiita_chiba.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/8dffb588-a4d7-c58c-7a61-a8ff0683f3e4.png)
埼玉県も同様なので省略
##大阪府と京都府
`| search _pref="大阪府" OR _pref="京都府"`
に変更して`| predict algorithm=LLB 京都府 as 予測 holdback=30 correlate=大阪府`
![qiita_osaka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/01191f9e-d170-b9e7-d202-755573b3afd3.png)
##福岡県
```python:fukuoka.spl
| inputlookup covid_japan.csv |  rename pref as _pref
| foreach * [eval Check=max('<<FIELD>>')]
| search _pref="福岡県" OR _pref="大阪府"
| transpose 0 header_field=_pref column_name=time
| eval _time=strptime(time,"%m/%d")
| eval time=strftime(_time,"%F")
| sort _time
| fields - time
| timechart span=1d last(*) as *
| predict algorithm=LLB 福岡県 as 予測(大阪) holdback=30 correlate=大阪府
```
![qiita_fukuoka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130729/6e159b76-f5db-a00d-0f91-c59e304e45d6.png)
東京と大阪で確認したところ、大阪のほうが納まりが良かった。


#まとめ
とてもいやな予測になっているのに東京の予測が使えそうなのが・・・:cry:
大都市に引きずられている県と、時系列的に増加中な府県が別れた。

でも素人なので見方が違うかもしれない。ご意見よろしくお願いします