Amazon QuickSightで日本の未来人口の予測してみた

Amazon QuickSightはAWSがサービス提供しているBIツールです。

https://aws.amazon.com/jp/quicksight/

Amazon Quicksight 
-- 
Quicksight って何　って人はこの動画が参考になります。
[2021年 サーバレス BI Amazon QuickSight の特徴総ざらい](https://www.youtube.com/watch?v=fG2oVhCHik4)


BIとは
-

ビジネスインテリジェンス（Business Intelligence）の略で企業や個人のデータの可視化や分析をするツールをBIツールといいます。

Quicksight以外の有名どころの製品としては[tableau] (https://www.tableau.com/ja-jp/products/desktop) や [Qlikview](https://www.qlik.com/ja-jp) などがあります。
広義でいえばExcelもBIツールという事になりますが、より多くのデータを簡単に視覚化できるものがBIツールと呼ばれている　と個人的には思います。


今回やってみたこと
--
・総務省統計局が管理するWebサイト[e-stat](https://www.e-stat.go.jp/) から日本の人口データをダウンロード
・quicksight で可視化
・quicksight の予測機能を使って日本の人口推移を予測


Amazon QuickSightはデータを可視化する他に標準でデータ予測機能が簡単に使えたりします。これを実際に使ってみたところを見せていければと思います。
あ、簡単に使えると書きましたが、いくつかつまづいた点があるのでそのあたりもノウハウ共有してみます。


#前提
+ Quicksightの初期設定は書いていません。最初から試してみたい方は[QuickSight Basicハンズオン]([https://dev.classmethod.jp/articles/aws-summit-online-hol2/)がおすすめです。
+ 可視化用にダウンロードしたデータはQuicksight用のデータ領域`SPICE`に入れて参照しています。
+ データのS3連携などはこの記事では書いていません。
+ アップロードする際にデータの成形をする必要があることが多いですがそのあたりは細かくは記載しません。


#1. 最新（2020年10月）の国勢調査の都道府県別人口データを可視化


[ここから](https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200521&tstat=000001136464&cycle=0&year=20200&month=24101210&tclass1=000001136466)
こんな感じのデータを落としてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/d7614147-7eae-7f05-067c-03d6333db7fb.png)

Excelで開くとこんな感じですがBIツールはこのままでは使えないので
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/58e16a03-e310-2fca-3c02-43264d13b20a.png)

こういった形に直して、文字コードUTF8、改行はLFでcsvファイルとして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/a0b1b105-174b-3a01-cf9c-43e7deba2cc3.png)


Quicksightの「データセットを作成」で左上のファイルアップロードを選び、先ほどのCSVファイルをアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/4fdc03a3-9bc9-52a6-5827-48822f2910d4.png)

データのサマリが出てくるので「設定の編集とデータの準備」を押してデータのフォーマットを指定してあげます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/8d234aa8-98fa-4e60-5201-16f20ba47c4c.png)


こんな感じで文字列か整数か　などを指定してきます。「区分」はデータ的には数値ですが集計する値ではないので文字列にしときます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/bfad309a-c908-d0a4-0693-1bb8856a7c22.png)

 + ポイント  
BIツールでは文字か数値か日付か をあらかじめ指定しておくのがとても重要です。
数値は自動的に集計項目として認識され、文字列はどの単位で集計するか（ディメンジョン）として認識されます。  
また、日付は時系列データを認識するために指定しておくことになります。これをちゃんとしておくことでレポート作成が容易になります。

設定後「公開して可視化」を押して分析画面で可視化していきます。

立ち上った状態で、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/f9a46daf-32ed-4daa-71a2-d84b60c322ad.png)


左ペインの「都道府県」、「人口_総数」をポチポチ２回クリックするだけで都道府県別の人口グラフができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/263274b5-ebff-e103-58e8-96aa4f7874e3.png)


CSVには全国合計の人口の集計行が入っていたり、都道府県全体集計行が入っていたりするので、都道府県と市区町村の人口がダブルカウントされてしまいます。フィルター機能でそういったものを外します。（aが全国や都道府県、1が政令市を表すデータなのでフィルターで除外）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/bcc91b21-bae7-5d7f-c8dd-3775883a95a8.png)

これで都道府県別の人口グラフができました。
一旦上部のフィールドウェルから「人口_総数」を削除し、左ペインの「人口_男」と「人口_女」をポチポチとおします。自動でフィールドウェルに入っていき、都道府県の男女別の人口がでました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/25206ae0-30e6-6905-0222-eefbd7b3084b.png)

男女比がどの県が多いか見たいですね。左下部の「ビジュアルタイプ」で水平積み上げ100％棒グラフを選んでみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/ce81432d-93cb-1afc-14a5-4303f9d4c4e5.png)


このグラフは「人口数」でしか並替えられず、比率で並び替えられないので並び替え用の計算フィールドをデータセット画面で追加します。女性比率を出す式はこんな感じ

````
sum({人口_女}) / sum({人口_総数})
````

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/deebbb73-90a9-effb-24e6-56e69ae1bf78.png)


こんな感じで女性比率を計算するフィールドを作ります。 「保存」　→　「保存して公開」の順で推します。「公開して可視化」だとうまく反映されない事があるので「保存して公開」をします。  

グラフ左の「>」を押し、並び替えのオプションで女性比率の降順を選択すると、女性比率の多い都道府県順に並びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/3829ead3-161c-fc33-db7d-3f3ec7b4e88b.png)

2020年10月時点では長崎県が53.02%で女性比率が一番高いことがわかりました。逆に一番少ないのは栃木県の50.10%でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/9556bc69-918c-beac-7c22-74d4c760f223.png)

「ビジュアルを複製」→「都道府県」を「地域名」に変更。カスタムアクションを設定し、選択した都道府県のみを表示する　といった設定も追加でしてみました。長崎県を選ぶと、長崎県内の男女比率の高い市区町村がわかりました。長崎市が53.95％で長崎県内で一番でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/9235f561-79b6-9cd8-ca7c-9778a1774e11.png)
※全国一位ではない点には注意。全国順位を見たければ都道府県の選択を外します。
全国では八郎潟町が一番でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/2ac4a234-e533-5ee1-cc72-0173545a9b08.png)

では最新の国勢調査データを見てみるのは一旦ここまでで次に人口予測に行きます。


#2. 過去の国勢調査人口データの推移を可視化して未来の人口を予測する

国勢調査は5年おきに行われてますので、その推移データから未来の人口をQuicksightの予測機能を使って予測してみます。
なお、統計情報としては毎月の人口情報もありますが、それは国勢調査をベースに出生届や死亡届から増減を計算した「人口推計」というものになります。

つぎは[ここ](https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200521&tstat=000001011777&cycle=0&tclass1=000001094741&tclass2val=0)から「男女別人口－全国，都道府県（大正９年～平成27年）」落としてきます。
こんなデータ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/ea3470a1-a049-ec79-fffb-b9a4f0a41787.png)

これを一部不正なフォーマットの部分を消したりutf8に変換してquicksightのデータセットに上げます。（ここは省略）予測をするには、「時系列データ」が必要になるので、データセット編集で「西暦（年）」を日付型として登録することが重要です。年（year）のみデータなのでYYYYと登録してあげます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/b8601d0d-bc94-73ef-5825-8eb6becfcb01.png)

これを普通に出すとこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/623d0c2c-9f39-776a-3628-b2ff9087df87.png)

日付単位の集計になっており表示が見づらいので、フィールドウェルから年集計に変え、表示を年のみにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/0b9e36d6-aa2a-62ab-f807-3abc6f315918.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/2cf42ff9-dcd3-d716-9f64-bc555ea9363b.png)

年表示になりました。年のラベルが実際のデータポイントとずれる（データは2010年だが丁度そこにラベルがこない）のですが、ここは調整の仕方がわからず調べる予定です。プロットされる場所は合ってます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/b6da80fb-3b9e-fe65-a163-e16d3baefb65.png)

全国の合計データが含まれるのでフィルターで外しました。1945年は終戦の年で人口減ってるのがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/0530dd37-0e28-5da9-9f73-5ef2397fc970.png)

さてここから本題の予測に入ります。
グラフ右の「…」を押すと「予測を追加」というメニューが出てくるのでこれを選びます。これであらかじめ用意されている機械学習の機能を使って予測を簡単に出してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/a2001ddc-b720-e12a-2f34-64d6d4667bde.png)

予測追加してみました。が、でません。。。（＞＜）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/58918304-bd87-640b-afb0-c04c81efe7f6.png)

過去が古すぎるのが悪いのかと、2000年以降のデータでフィルターしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/8fc35b7d-29b2-421b-e65b-f7d17e6c2253.png)

エラーが変わりましたがデータ数が足りないといわれます。
[ここ](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/ml-data-set-requirements.html)を見ると年の予測では最低32ポイントデータがいるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/84adbb2b-c154-95ee-d974-097277acaca0.png)

データを増やすと別のエラーが出るためどうにもいかなくなりました。。。結論を先に言うと
5年ピッチのデータでは年間推移予測はできない
-
ってことがわかりました。という事で次で最後です。

#3. 1年単位の人口推計データを可視化して未来の人口を予測する
CSVで良いデータがなかったので[人口推計統計表](https://www.stat.go.jp/data/jinsui/2017np/pdf/tables.pdf)の最後のページをデータ化して使いました。昭和25年（1950年）から平成29年（2017年）までの1年単位の人口推移です。国勢調査年は国勢調査のデータで、それぞれ10月時点です。この情報から2021年10月時点を予測してみましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/5b1d1753-a038-6f74-d93c-e46b01553b60.png)

同じ手順で予測を出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/6483b1ef-9784-ca41-9bc7-f6436a6db27e.png)

でました！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/83996889-3b29-776d-af16-d11e6255406e.png)

予測の特性上、上限、下限の幅を付けて予測をします。この例では2021年の下限が__1億2636万人__と予測されましたが現在はどうでしょうか  

 __1億2512万人（2021/10の人口推計）__でした。。
(https://www.stat.go.jp/data/jinsui/pdf/202110.pdf)

あくまで予測ですので完全に当たるとは言えません。この例では恐らくですが過去50年くらいの傾向を見ているから　と思われます。ここはどんなデータを食べさせるか　が使う側の腕の見せ所であるとは思います。

予測の期間を10→20に変えることで20年後の予測まで出すことができました。ただし、先に行くほど予測の上下の幅は広がります。2021年予測から下限は100万人くらい更に下に振れてますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/78df9b83-e7af-b378-5473-7dea754fed52.png)


他、グラフを複製して、男女それぞれの人口に置き換えるだけでそれぞれの予測も出せました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001712/45a11984-e909-a752-b991-905b99099dc9.png)

## まとめ
 + Amazon Quicksightを使うと比較的簡単にデータを可視化できます。
 + データの予測も簡単できます。
 + 予測にはデータポイント数の制限や、年間予測であれば1年単位の連続したデータが必要なので注意
 + 予測を出すには、対象データの選別が重要

長文、最後まで読んでもらいありがとうございました。