AT's Blog

趣味のプログラミング、ギター、音楽とかとか

日本の人口推移に数理モデルを適用してみた

最近、微分方程式を使った物理現象・社会現象のモデル化に興味を持ち始めました。 もともとは、電流ノイズ起因の電源揺れを回路設計の仕事で使えるレベルでモデル化できないか、 と考え始めたのがきっかけです。

以下の書籍で勉強しています。

微分方程式で数学モデルを作ろう

微分方程式で数学モデルを作ろう

軟派なタイトルに対して中身は硬派です。 とはいっても、大学初年度レベルの微積分学の知識があれば、サクサク読み進められると思います。

本の序論で人口問題を扱っているのですが、 モデルの適用対象が米国の人口でいまいち実感が湧かないため、 日本の人口推移に適用してみました。

概要

日本の人口推移データに、マルサス・モデルとヴェアフルスト・モデルをそれぞれ適用してみます。

今回は、統計局が公開している人口推移データを用います(2-1 人口の推移と将来人口)。

統計局ホームページ/日本の統計 2017−第2章 人口・世帯

結論

マルサス・モデルは1975年頃までは実データに良く合いました。 しかし、ヴェアフルスト・モデルは実データに合致せず、モデルの改良が必要そうです。

マルサス・モデル

人口の増減率が、現在の人口に比例すると仮定したモデルです。

微分方程式としては、


\frac{dN}{dt} = kN

と 書き表せます。ここで、Nは人口、kは定数です。上記微分方程式の一般解は、


N(t) = N_{0} e^{kt}

となります。N_{0}t=0におけるNの値です。見ての通り、指数関数的に人口が増減するモデルですね。

ヴェアフルスト・モデル

マルサス・モデルでは、人口が際限なく指数関数的に増大していきます。 これに対して、人口の維持・増大に必要なリソースに限りがあることから、 人口増加率はどこかで飽和するとしてモデルに修正を加えたのがヴェアフルスト・モデルです。 ロジスティック方程式の名前の方が有名かもしれません。

微分方程式としては、


\frac{dN}{dt} = k(1-\frac{N_{\infty}}{N})N

と書き表せます。N_{\infty}は、t \to \inftyにおけるNの極限値です。

上記微分方程式は、変数分離法と部分分数分解を用いて解析的に解くことができ、一般解は、


N(t) = N_{\infty} + \frac{N_{\infty}}{1+[N_{\infty}/N_{0}-1]e^{-kt}}

となります。

日本の人口推移へのモデル適用

両モデルを実データに適用した結果が下図になります。 マルサス・モデルは、1920年と1925年のデータから係数を算出しました。 ヴェアフルスト・モデルは、人口ピークがデータにフィットするよう手作業でパラメータを調整した結果ですので、 正確性には欠けると思われます。

f:id:necophys:20170812213536p:plain

マルサス・モデルは1975年頃まではデータと良く合っています。 一方ヴェアフルスト・モデルはデータとの乖離が大きいことがわかります。

1945年に外れ点があるのは、おそらく戦争の影響でしょう。 1980年頃から増加率が飽和し始めるのは、何が原因なのでしょうか…。

本当はもっと定量的に妥当性を評価したいところですが、とりあえずはこんなものでいいかなと思います。

まとめ

マルサス・モデルとヴェアフルスト・モデルを日本の人口推移に適用してみました。 単純なモデルでも、それなりの精度で社会現象を予測できるということがわかりました。