GMT ver5 で人口動態

人口の自然動態に季節変動みたいなものがあるのかどうかを調べてみようと思いました。

なるべく長期にわたって高頻度で公表されている資料を検索してみたところ、次のURLが見つかりました。

 長野県企画振興部(http://www3.pref.nagano.lg.jp/tokei/1_jinkou/jinkou.htm)

 大阪市都市計画局( http://www.city.osaka.lg.jp/toshikeikaku/page/0000014987.html)

長野県は2010年10月から、大阪市は2015年11月から各月1日の人口を資料にしてくれています。長野県の人口総数は約210万人、大阪市は約270万人と概ね同規模の母数です。

 

これらの調査結果資料をダウンロードしてきて、各月の死亡数から下記のようなテーブルを作成してみました。

mysql population << _SQL_
 create table dead(
 area varchar(10), // 大阪か長野か
 year int, // 調査年
 month int, // 調査月
 death int // 各月死亡数

);
_SQL_

 ただ、少しうっかりしていました。例えば2017年7月の調査結果資料は2017年7月1日の人口を示しているのですから、その資料中の死亡数は2017年6月のものです。これを2017年7月に登録してしまったため、描画にあたっては少し複雑なことをせざるを得ませんでした。

 

f:id:S_E_Hyphen:20170831103247j:plain

細線は実データで、これを月別に平均したものが太線となっています。夏に比べて冬に亡くなられる方が明瞭に多いようです。最大値は1月(冬)、最小値は7月(夏)に出現していることが多いのですが、最大値は最小値に比べて実に1.4~1.5倍となります。

ただ大阪市の8月は前後の月と比較して突出して大きな値となっています。「これは都市型熱中症の影響か!?」とも思いましたが、きっと標本数の不足が原因でしょうね。

 

#/bin/bash

psfile=dead.ps
gmt gmtset FORMAT_DATE_MAP mm
gmt gmtset FONT_TITLE 16p,GothicBBB-Medium-UniJIS-UTF8-H
gmt gmtset FONT_LABEL 12p,GothicBBB-Medium-UniJIS-UTF8-H
gmt gmtset FONT_ANNOT_PRIMARY 10p,GothicBBB-Medium-UniJIS-UTF8-H

# 軸の設定です
# 月毎の違いを示したいので年は2000年に統一します
gmt psbasemap -JX25cT/12c \
-R2000-1-1T0:0/2001-1-1T0:0/1500/3500 \
-BWESn+t"月別死者数" \
-Bxa1og1o+l"月" \
-Bya500f100g500+l"人" \
-K > $psfile

for area in 長野 大阪
do
for year in 2010 2011 2012 2013 2014 2015 2016 2017
do
# 「concat(year,"-",month,"-1") - interval 16 day」は
# 調査結果資料年月日の半月前の年月日を示します
mysql population -N << _SQL_ > temp2.txt
select concat(year,"-",month,"-1") - interval 16 day,"T00:00 ",death from dead
where year(concat(year,"-",month,"-1") - interval 16 day)=$year
and area="$area"
order by month(concat(year,"-",month,"-1") - interval 16 day);
_SQL_
# GMT用のデータファイルを作成します
# 縦軸と横軸の区切りはスペースとします
# タブをsedで消去したのち、仮に2000年とします
cat temp2.txt |\
sed -e "s/\t//g" |\
sed -e "s/$year/2000/g" > temp.txt
rm temp2.txt

pen=0p
case $area in
大阪) col=0/0/255;;
長野) col=255/0/0;;
*) col=128/128/128;;
esac
psxy -J -R temp.txt -W${pen},${col},. -O -K >> $psfile
done
# 大阪と長野の平均値を太線で描画します
mysql population -N << _SQL_ |\
sed -e "s/\t//g" |\
sed -e "s/$year/2000/g" > temp.txt
select "2000-",month(concat(year,"-",month,"-1") - interval 16 day),"-15T00:00 ",avg(death) from dead
where area="$area"
group by month(concat(year,"-",month,"-1") - interval 16 day)
order by month(concat(year,"-",month,"-1") - interval 16 day);
_SQL_
pen=2.0p
psxy -J -R temp.txt -W${pen},${col} -O -K >> $psfile
done
# pslegendは余り使ったことがなかったので試行錯誤で凡例をつくりました。
cat << + |\

gmt pslegend -R -J -Dx20c/11c+w3c/1.2c+jTL -F+p+gwhite -O >> $psfile
N 1
S 0.5c s 0.4c 0/0/255 0.0p 1.5c 大阪
G 0.1c
S 0.5c s 0.4c 255/0/0 0.0p 1.5c 長野
+
convert -density 200 -rotate 90 $psfile dead.jpg
rm temp.txt