そもそも「総人口」ってなに?
国内の人の数じゃないの?っていう当たり前の話なんだけど、その当たり前を調べてみると、e-Stat の 項目定義に以下のような記述がありました。
総人口とは、国勢調査及び人口推計にいう「人口」をさす。(e-Stat( https://www.e-stat.go.jp/koumoku/koumoku_teigi/A )から引用)
な、なんと総人口は「国勢調査の結果」、または「人口推計」であるという事が発覚。単純に人の数ではなさそうな雰囲気。。。
国勢調査は5年に実施される調査であろうことは推測できるんだけど、じゃあ「人口推計」ってなに?っていう話なんだけど、それも調べてみると、総務省統計局( https://www.stat.go.jp/index.html )の人口推計に関するQ&A(回答)には以下のように書かれていました。
「我が国の人口の実態は,5年ごとに実施される国勢調査によって明らかにされます。他方,この「人口推計」は,国勢調査が行われない年における「毎月」,「毎年」の人口の状況を把握するために行っています」(総務省統計局( https://www.stat.go.jp/data/jinsui/qa-1.html )から引用)
さらに、内閣府のページ( https://www.cao.go.jp/) にもそれらしい説明がありました。ちょっと複雑ですが、 内閣府ページのトップ > 内閣府の政策 > 経済財政政策 > 経済財政諮問会議 > 専門調査会情報等 > 「選択する未来」委員会 > 選択する未来 と追っていくと、Q7に「人口推計とはどのようなものですか」という項目があって、そこには以下のように書かれていました。
「人口推計」は,5年毎に行われる国勢調査による人口を基礎(基準人口)として、出生・死亡(「人口動態統計」)、出入国(「出入国管理統計」)、転出入(「住民基本台帳人口移動報告」)等の人口動向から各月・各年の人口を算出するものである」(内閣府( https+//www.stat.go.jp/data/jinsui/qa-1.html )から引用)
つまり正確なのは5年に1度の国勢調査の数値で、それ以外は算出されたものであって、実際の数値とは限らないという意味ってことでしょうか。
ま、どっちであれ、私にとって根拠がどうってことはあんま関係なさそうなので、そのまま進めちゃおうと思います。
数値はどこからゲットする?
人口推計は、総務省統計局からゲットできそうです。今回発見した URL は「人口推計の概要、推計結果等」( https://www.stat.go.jp/data/jinsui/2.html )で、総務省統計局ホームから、統計データ > 人口推計 > 人口推計の概要、推計結果等 で到達できました。
年別しかないとおもったら、「過去の各月1日現在人口( https://www.stat.go.jp/data/jinsui/8.html )」を見ると2010年4月から2024年9月までが、月ごとのPDFになっているので、これを片っ端から取得して値を抽出していけば2009年11月から2024年3月くらいまでの月別の総数が作れそうです。
で作った結果が以下のとおりです。
library(dplyr)
library(data.table)
ps_yearmon <-
'
年月 総数 男性 女性
2010-10-01 128056 62360 65697
2010-11-01 128062 62358 65704
2010-12-01 128051 62349 65702
2011-01-01 128019 62330 65689
2011-02-01 127981 62319 65662
(以下省略)
' %>% fread %>% mutate(年月 = as.POSIXct(年月,tz="Asia/Tokyo"))
で以下のコードでグラフにしたのが以下のとおりです。
library(ggplot2)
(ps_yearmon %>%
ggplot(aes(x = 年月, y = 総数))
+ geom_line(color = "black", linetype = "solid", linewidth = 0.8)
+ theme_classic()
)
ふふふ、いやー、なんとなんと、適当に生成しなくってもマジな数で作れちゃいました。いやめでたしめでたしです、、、、
うん?
なんかよく見ていると、カーブが不自然な年があるような、ないような。。。
うーーーんって悩んでても仕方ないので、ちょっと比較してみようと思います。さっきの「人口推計の結果の概要」ページ中の「II. 各年10月1日現在人口」 > 「2023年(令和5年)(令和6年4月12日公表)」 > 「結果の概要(PDF:749KB)」の中の「表2 総人口の推移(2000年~2023年)」から年別の総計を取り出して比較してみます。で作った結果とグラフが以下のとおりです。
ps_year <-
'
年 総数
2010 128057
2011 127834
2012 127593
2013 127414
2014 127237
2015 127095
2016 127042
2017 126919
2018 126749
2019 126555
2020 126146
2021 125502
2022 124947
2023 124352
' %>% fread %>%
mutate(年月 = as.POSIXct(paste(年, "10", "01", sep="-")))
(ps_year %>%
filter(年 >= year(min(ps_yearmon$年月))) %>%
ggplot(aes(x = 年月, y = 総数))
+ geom_line(color = "black", linetype = "solid", linewidth = 0.8)
+ theme_classic()
)
うーん、なんかさっきの感じと違うような。
じゃあ重ねて比較してみましょう。月別のデーターと年別のデーターで取得できた範囲が異なっているので、両データーのある2010-10-01
から2023-10-01
で比較することとしました。
(ps_yearmon %>%
ggplot(aes(x = 年月, y = 総数))
+ geom_line(color = "black", linetype="solid", linewidth = 0.8)
+ geom_step(data=ps_year %>% filter(年 >= year(min(ps_yearmon$年月))), color = "red", linetype="solid", linewidth = 0.8)
+ theme_classic()
)
うーん、なんかやっぱ気持ち違ってるようです。スクレイピングに失敗しているんでしょうか、そもそも確定値を取り出したのがいけなかったんでしょうか。。。うーん。
改めて、PDFをよく見てみるとタイトルは人口推計でも、月によって「確定値」のものと、「人口速報を基準とする確定値」、「国勢調査を基準とする推計値」というタイトルがあることを発見しました。しかし英語のタイトルはすべて「Final estimates」のようです。どうゆう意味なんだろうと deepl で翻訳してみると「最終予想」「最終見積もり」と出てきました。
予測ってことはわかってはいたんですが、単純ではなさそうです。
「人口の総数」は補正される?
さらに、さっきの「人口推計の結果の概要」をスクロールしてみると「III. 国勢調査結果による補間補正人口」という項目があることを発見。でもってそのページを見てみると以下の記述が。
「人口推計は,平成27年国勢調査の人口を基準人口として,その後の毎月1日現在の人口を算出している(毎月公表の人口)が,令和2年10月1日現在人口と令和2年国勢調査人口とは必ずしも一致しないため,平成27年国勢調査と令和2年国勢調査の人口を基に,その間の各月の人口について補間補正を行った。今回,補間補正を行った人口は,次のとおりである。(1) 各月1日現在の全国男女,年齢別人口(2015年11月~2020年9月)(2) 各年10月1日現在の都道府県別男女,年齢別人口(2016年~2019年)」(総務省統計局( https://www.stat.go.jp/data/jinsui/2-6.html )から引用)。
な、なんと、人口推計は国勢調査結果によって、過去にさかのぼって補正される、とのことです。
でもって、そのページにはなにやら計算式が書かれています。
うーん、素直に面倒です。ただただ総人口が知りたかっただけなのに。
というかそこまで正確な数がほしいわけでもないのに。。。
年データーから生成しちゃえ
せっかく月別で数値をゲットしたのですが、それは忘れて、年データーから適当に生成しちゃおうと思います。
imputeTS
っていうパッケージを使えば補完できそうなので、さっそく本当に補完できるか試してみます。
library(imputeTS)
ps_mer <- ps_yearmon %>% select(年月, 総数年月=総数) %>%
left_join(ps_year %>% select(年月, 総数), by=c("年月")) %>%
filter(年月 >= as.POSIXct("2010-10-01")) %>%
filter(年月 <= as.POSIXct("2023-10-01")) %>%
arrange(年月)
ps_mer %>%
mutate(予測総数 = imputeTS::na_interpolation(総数, option = 'linear') %>% round) %>%
head(20) %>% print.data.frame
年月 総数年月 総数 予測総数
1 2010-10-01 128056 128057 128057
2 2010-11-01 128062 NA 128038
3 2010-12-01 128051 NA 128020
4 2011-01-01 128019 NA 128001
5 2011-02-01 127981 NA 127983
6 2011-03-01 127928 NA 127964
7 2011-04-01 127706 NA 127946
8 2011-05-01 127742 NA 127927
9 2011-06-01 127797 NA 127908
10 2011-07-01 127817 NA 127890
11 2011-08-01 127816 NA 127871
12 2011-09-01 127769 NA 127853
13 2011-10-01 127799 127834 127834
14 2011-11-01 127800 NA 127814
15 2011-12-01 127787 NA 127794
16 2012-01-01 127662 NA 127774
17 2012-02-01 127627 NA 127754
18 2012-03-01 127575 NA 127734
19 2012-04-01 127567 NA 127714
20 2012-05-01 127522 NA 127693
補完してグラフにしてみます。
(ps_mer %>%
mutate(予測総数 = imputeTS::na_interpolation(総数, option = 'linear') %>% round) %>%
ggplot(aes(x = 年月, y = 予測総数))
+ xlab("年月") + ylab("予測総数(linear)")
+ geom_line(color = "black", linetype="solid", linewidth = 0.8)
+ theme_classic()
)
option = 'linear'
のあたりを変える曲線になったりするみたいですが今回はliner
で進めてみます。
重ねてみます。年別の人口推計に沿った数値が生成されているようです。
(ps_mer %>%
mutate(予測総数 = imputeTS::na_interpolation(総数, option = 'linear') %>% round) %>%
ggplot(aes(x = 年月))
+ xlab("年月") + ylab("総数")
+ guides(color=guide_legend(nrow=1, byrow=TRUE))
+ geom_line(aes(y = 総数年月, color = "1"), linetype="solid", linewidth = 0.8)
+ geom_step(data=ps_year, aes(y = 総数, color = "2"), size = 0.8)
+ geom_line(aes(y = 予測総数, color = "3"), linetype="solid", linewidth = 0.8)
+ scale_color_manual(values=c("1"="black","2"="red","3"="blue")
,labels=c("1"="人口推計(確定値)(月別)", "2"="総人口の推移(結果の概要)(年別)", "3"="予測(liner)"))
+ theme_classic()
+ theme(legend.position = c(0.5, 0.95)
,legend.title = element_blank()
,legend.background = element_blank())
)
これでよかったの?
何となくそれっぽい数値は生成できました。今回は直線的に生成しましたが曲線的な予測もできそうではあるものの、ただ、なんていうんでしょうか、どっちも綺麗すぎて、特徴的なものがなくなってしまったような、、、
例えば左の方でへこんでいるところ。何だろうと思ったらそこは2011年の4月でした。「統計Today No.52」には以下のような記述がありました。
東日本大震災が発生した直後の平成23年4月には、急激に減少し1億2770万8千人となりましたが、その後若干増加しています。これは、外国人人口が東日本大震災後に一時的に大きく社会減少した(23年4月は19万人の出国超過)ことが大きな要因となっているためです。(統計Today No.52( https://www.stat.go.jp/info/today/052.html )より引用)
たまたま発見した記述が本当に反映されて減ったのかはわかりませんが、月別の総数には年別からは分からない様な背景が反映されているかもしれない、と考えると、今回は「適当に」「それっぽく」というミッションはクリアできましたが、自己満足には浸れない結果となってしまいました。
ミッションコンプリートならずという結果となってしまいました。
でも楽しかったので、めでたしめでたしです。