0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アクチュアリーのためのPython入門(死亡率から生命表)

Last updated at Posted at 2026-01-02

アクチュアリーのためのPython入門(第1回)

生命表(死亡率 qx から lx, dx を作る)

はじめに

この連載では、アクチュアリー業務で使う数理計算を、Pythonで一つずつ再現していきます。

私は実務では主に Excel VBA を使ってきましたが、

  • 計算量が多い
  • シミュレーションを回したい
  • 将来的な業務の幅を広げたい

といった理由から、Pythonを学び直しています。

Python初心者の方と一緒に、実際に手を動かしながら進めることを目的としています。

今回やること

今回は一番基本となる:

  • 死亡率 qx
  • 生存数 lx、dx(生命表)

を Python で作ります。

実務では標準生命表をそのまま使いますが、
ここでは 動作確認用に年齢を10歳分だけ抜き出したサンプルを使います。

生命表の作成

ここでは
生保標準生命表2018の死亡率を使います。
40歳から49歳の死亡率です。

# 年齢(例:40歳〜49歳)
ages = list(range(40, 50))

# 死亡率 qx
qx = [
    0.00118,
    0.00129,
    0.00140,
    0.00151,
    0.00163,
    0.00177,
    0.00194,
    0.00214,
    0.00236,
    0.00259
]

次に、生存者数 $l_x$ と死亡者数 $d_x$ を計算します。

# 初期生存者数
l0 = 100000
# lxを入れるリスト
lx = [l0]
# dxを入れるリスト
dx = []

$l_x$ の初期値として 10万人 を置いています。
$l_x$ のリストには初期値を入れておきます。
続いて、for 文による計算を行います。

# 生命表の作成
for q in qx:
    next_d = lx[-1] * q
    next_l = lx[-1] - next_d
    lx.append(next_l)
    dx.append(next_d)

for q in qx:
→ 死亡率を1つずつ取り出します

lx[-1]
→ 現在の生存人数(リストの最後の値)

next_d, next_l
→ 死亡者数、生存者数を計算して代入しています。

lx.append(...)
→ 次の年齢の生存者数をリストに追加
 (同様に死亡者数のリストにも追加)

最後に計算結果を計算結果を確認してみます。

for age, l, d in zip(ages, lx[:-1], dx):
    print(age,round(l,2),round(d,2))

出力例は次のようになります。

40 100000 118.0
41 99882.0 128.85
42 99753.15 139.65
43 99613.5 150.42
44 99463.08 162.12
45 99300.96 175.76
46 99125.19 192.3
47 98932.89 211.72
48 98721.17 232.98
49 98488.19 255.08

リストlxとdxにはもっと長い小数が入っていますが、
ここでは表示するために小数2桁としています。

なお、ここでfor文の zip はages、lx、dxの組から
1つずつ取り出すことを表します。
lxに-1がついているのは、lxだけ1つ値が多いので、
それを落としています。

まとめ

今回は、

  • 死亡率 $q_x$ をPythonで表す
  • 生存者数 $l_x$ 、死亡者数 $d_x$ を計算する

という、生命表の基本的な部分を確認しました。
次回は、この $l_x$と$d_x$ を使って、
基数表($D_x, N_x, C_x, M_x$)
につなげていく予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?