« 2012年1月 | トップページ | 2012年3月 »

2012年2月

2012年2月26日 (日)

理事長賞、大館賞、理事長特別賞

アクチュアリー試験には、試験結果が優秀でかつ短期間に全科目合格した人に対しての表彰制度があります。「理事長賞」と「理事長特別賞」がそれです。

最短の場合、試験には2年で全科目合格できます。が、2年で合格する人はめったに聞いたことがないので、授賞基準は3年ぐらいでしょうか。

理事長賞は1974年にできました。その後、1978年に「大館賞」というものができました。アクチュアリー会100年史を見ると、大館賞は「生命保険文化研究所のご好意を受け」てできたとあるので、生命保険文化研究所がスポンサーだったということでしょう。

ちなみに大館賞というのは戦前から戦後にかけて活躍したアクチュアリーである大館義雄氏にちなむものです。大館氏は1930(昭和5)年に東京大学から日本生命に入社し、「日本アクチュアリー会が初めて試験制度を実施した際、其第1回の正会員試験の只一人の合格者であったのみならず、其答案は全科目満点で試験委員を唖然たらしめた」そうです。

生命保険文化研究所の解散にともない、大館賞は理事長特別賞と名前を変えて現在に至っています。

さてこの理事長賞・大館賞・理事長特別賞の受賞者を数えてみたら、2010年度までで71人が受賞しています。

理事長賞は上記のとおり1974年から授賞を始めていますが、1975年と1977年は受賞者がいません。以降は毎年受賞者がいます。

大館賞は1979年から受賞者がいますが、1993年まではずっと理事長賞と大館賞の同時受賞となっており、理事長賞と授賞対象者が異なるのは1994年からです(残念ながら、授賞基準がどのように異なるのかは知りません)。「リスクを知るための確率・統計入門」の著者、岩沢宏和氏も、1992年に理事長賞・大館賞を同時受賞されています。

最近の受賞者数は次のようになっています。

  • 2004年 理事長賞:1名、理事長特別賞:1名
  • 2005年 理事長賞:4名、理事長特別賞:該当なし
  • 2006年 理事長賞:1名、理事長特別賞:1名
  • 2007年 理事長賞:3名、理事長特別賞:該当なし
  • 2008年 理事長賞:2名、理事長特別賞:該当なし
  • 2009年 理事長賞:5名、理事長特別賞:該当なし
  • 2010年 理事長賞:6名、理事長特別賞:該当なし

理事長賞の受賞者が増えている一方で、理事長特別賞の「該当なし」が続いています。2011年の試験結果はもう発表されているので、理事長賞・理事長特別賞の受賞者も実質的に決まっているのだと思いますが、どうなるのでしょうね。

それにしても、過去の受賞者の方々の名前を見ていると、現在もアクチュアリー会で非常に活躍しておられる方が多いと感じます。これは、試験問題がアクチュアリーとしての能力を測るのに適切だということの証左のようにも思えます。

もちろん、優秀なアクチュアリーであるかどうかが試験の時点だけで結論づけられるものではないですが、理事長賞なんぞを取ることのできなかった人間は、そういう人達と伍していけるようにより努力しなければならない、ということなのでしょうね。
自戒を込めて(最近このフレーズ多い…)。

2012年2月19日 (日)

Rによるアクチュアリーの統計分析(第2章)

かなり許しがたい。



お断りしておきますが、アフィリエイトリンクを使っているのは書影を出すのに便利だからという理由だけで、購入をおすすめするものではありません。

先日に引き続き、「Rによるアクチュアリーの統計分析」第2章です。第2章は年金数理。

まずは年齢群団別の脱退実績データを補正し、スムーズな脱退率を作成します。とりあえず本のとおりに入力してみます(p19)。

> x<-c(22,27,32,37,42,47,52,57)
> bunbo<-c(138,67,165,154,145,135,143,152)
> bunshi<-c(9,2,6,3,2,2,2,1)
> (result1<-nls(soqw~a+b*x+c*x^2,start=c(a=0.01,b=0,c=0)))
以下にエラー nls(soqw ~ a + b * x + c * x^2, start = c(a = 0.01, b = 0, c = 0)) :
   'data' 中に初期値の無いパラメータがあります

エラーになりました。soqwが定義されていないためです。

result1の計算の前に、次の1文が抜けています。

> soqw <- bunshi/bunbo

ともかく、これを入れれば脱退率の補正のプログラムは走ります。気を取り直して先に行きましょう。

次は年金数理を勉強している方にはおなじみ、極限方程式が出てきます。定常状態の人口分布の作成例がありますが、これは正しく走ります。

定常状態ができたら、トローブリッジモデルによる財政方式の分類です。p29の計算をやってみます。

> v<-1/1.03;la<-l[1:40];lr<-l[41:88]
エラー:  オブジェクト 'l' がありません

単に本の記述をなぞっているだけなのに、なぜこんなにエラーが出るのでしょう?
ここでの変数はlではなくてeを使う必要があるようです。

> D<-(v^(0:87))*e;N<-rev(cumsum(rev(D)))
> ad<-N[41]/D[1:40];ar<-N[41:88]/D[41:88]
> aa<-(N[1:40]-N[41])/D[1:40];ib<-0:39/40
> L<-sum(la);B<-sum(lr);Sa<-sum(la*ad);Sr<-sum(lr*ar);S<-Sa+Sr
> Sap<-sum(ib*la*ad);Saf<-sum((1-ib)*la*ad);Ga<-sum(la*aa)
> Sf<-la[1]*ad[1]*sum(v*e);Gf<-la[1]*aa[1]*sum(v*e)
> c(L,B,Sa,Sr,S,Sap,Saf,Ga,Sf,Gf)
[1]    2520.8784     985.6637   16229.4639   10436.9480   26666.4119
[6]    9473.8835    6755.5804   32194.7328  732769.5312 5551444.1221

SfとGf(上の太字)が合いません。SfとGfの定義を見るに、次のように計算すべものになっています。

> Sf <- la[1]*ad[1]*sum(v^(0:87)); Gf <- la[1]*aa[1]*sum(v^(0:87))
> c(Sf, Gf)
[1]  6841.717 51832.681

ともかく、これで各財政方式の保険料を計算する要素が揃いました。さっそく計算してみます。

> (Pea<-ad[1]/aa[1])
[1] 0.1319962
> Pea*L
[1] 332.7464
> PSL<-S-Pea*Ga
> PSL/sum(vv[1:20])
エラー:  オブジェクト 'vv' がありません

またコケました。

> vv <- v^(0:87)

を追加する必要があります。

> ((Sa+Sr)/Ga)    #閉鎖型総合保険料方式
[1] 0.8282849
> ((Sa+Sr)/Ga*L)  #制度全体
[1] 2088.006
> ((Sa+Sr+Sf)/(Ga+Gf))    #開放型総合保険料方式
[1] 0.3987762
> ((Sa+Sr+Sf)/(Ga+Gf)*L)  #制度全体
[1] 1005.266

このへんは本の記述は正しいようです。

> J<-1:40
> 1/40*N[42]/D[J]  #単位積立方式保険料率
[1] 0.05043388 0.05355351 0.05686609 0.06038358 0.06411865 0.06808475
[7] 0.07229618 0.07676811 0.08151665 0.08655892 0.09191308 0.09759843
-------------------------------(省略)---------------------------------
[31] 0.25129481 0.26144814 0.27201170 0.28300207 0.29443650 0.30633292
[37] 0.31871001 0.33158718 0.34498464 0.35892342
> N[41]/(N[J]-N[41])  #個人別平準保険料率
[1]  0.1319962  0.1406197  0.1498386  0.1596983  0.1702486  0.1815433
[7]  0.1936417  0.2066083  0.2205143  0.2354375  0.2514639  0.2686883
-------------------------------(省略)---------------------------------
[31]  1.2734706  1.4450589  1.6600486  1.9370418  2.3070418  2.8258543
[37]  3.6050904  4.9051758  7.5073865 15.3181018

Rで計算した結果は上のようになったのですが、本は単位積立方式保険料率と個人別平準保険料率の数値が逆になっています。

第1章・第2章までで30ページですが、その中のプログラム記述だけで6箇所の誤植です。かつ、朝倉書店のサイトを見ても正誤表は見当たりません。

内容のレベルうんぬん以前に、ちょっとひどすぎる。

2012年2月16日 (木)

アクチュアリー試験の歴史

アクチュアリー試験の結果が発表されました。合格された方、おめでとうございます。

アクチュアリー試験制度が大幅に改正され、おおむね現在の形になったのは、1989(平成元)年度からでした。

それ以前は1次・2次の区別はなく、次の6科目となっていました。

  • 数学I
  • 保険数学I
  • 法規
  • 数学II
  • 保険数学II
  • 経営

ここで「保険数学」と言っているものは生保数理であって、損保数理や年金数理に該当する科目がありませんが、「法規」と「経営」の問題は生保・損保・年金の各分野から出題されています。

そして当時は、試験制度上の会員資格は「正会員」と「準会員」しかありませんでした。試験に1科目でも合格すると準会員になれます。

しかもこの会員資格は試験制度変更後もそのまま引き継がれています。したがって、現在も「合格科目数1科目の準会員」が、少なくとも理論的には存在します。

さて、1989年度からは、次のように試験科目が変わりました。

1次試験は次の6科目となりました。1次試験に1科目以上合格すると研究会員、すべての科目に合格すると準会員になります。

  • 数学1(確率)
  • 数学2(統計)
  • 保険数学1(保険数学の基礎)
  • 保険数学2(保険数学の応用)
  • 年金数理
  • 会計・経済

2次試験は1次試験の全科目に合格しなければ受験できません。「アクチュアリーとしての実務を行う上で必要な専門知識および問題解決能力を保持しているかどうかを判定するための試験」とされ、保険コース(生保・損保)と年金コースに分かれることとなりました。いずれのコースも受験科目数は2科目です。

1995(平成7)年度試験から、「会計・経済」に「投資理論」が追加されます。

現在の試験と同じ内容になったのは2000(平成12)年度試験から。このとき、

  • 従来の数学1・数学2を「数学」に統合
  • 従来の保険数学1・保険数学2を「生保数理」に統合
  • 「損保数理」を新設
  • 2次試験が「生保コース」「損保コース」「年金コース」の3コースに

と改正されました。

このように見ると、1989~1994年度の試験科目は現在の「数学」「生保数理」「年金数理」の3科目、および「会計・経済・投資理論」のうち0.7科目分程度といえそうです。

同様に、1995年度には投資理論が追加されているので全部で4科目分程度。

現在は5科目。

はい、もうお分かりですね。実質的な試験科目数はずっと増えてきているのです。教科書が改定のたびに厚くなっていくことも考え合わせると、試験範囲は広がる一方と言えるでしょう。つまり、次の教訓が得られます。

  • 受験中の方:早く受からないと、もっと大変になります。
  • 試験の終わった方:正会員という資格にあぐらをかいていると、取り残されます。

自戒を込めて、ということで…

2012年2月12日 (日)

Rによるアクチュアリーの統計分析(第1章)

書評というよりは「Rやってみました」的なメモです。


本書の中にはRを用いた保険数理計算の事例がいろいろと載っています。朝倉書店のダウンロードサイトからソースが入手できるのもありがたいですね。

さっそく試してみました(Rのバージョンは2.14.1を使っています)。

最初に生命表の作成(p4)。本に書いてあるソースは以下のとおりです。

px<-1-q[,2]
lx<-dx<-Lx<-ex<-rep(0,108)
lx[1]<-100000
for (i in 1:107){
lx[i+1]<-px[i]*lx[i]
dx[i]<-lx[i]-lx[i+1]
}
for (i in 1:108){
Lx[108-i]<-lx[109-i]+Lx[109-i]
ex[108-i]<-1/2+Lx[109-i]/lx[109-i]
}

やってみたのですが…平均余命が本に記載の出力例と合いません。0歳の平均余命は、本では78.24歳となっていますが、上記プログラムを走らせてみると77.32歳になります。以下、1歳ずつずれます。

これは、上記のforループだとLx[108]とex[108]が計算されず、初期値のゼロのままになってしまうためです。また、dx[108](107歳の死亡数)もゼロになっています。107歳の死亡率が1なので、dx[108]=lx[108]=0.76075となるはずです。

おそらく、本に忠実に計算を再現するなら、次のようにすべきなのでしょう。

px<-1-q[,2]
lx<-dx<-ex<-rep(0,108)
Lx<-rep(0,109)
lx[1]<-100000
for (i in 1:107){
lx[i+1]<-px[i]*lx[i]
dx[i]<-lx[i]-lx[i+1]
}
dx[108]<-lx[108]
for (i in 1:108){
Lx[109-i]<-lx[109-i]+Lx[110-i]
ex[109-i]<-1/2+Lx[110-i]/lx[109-i]
}

太字が変更した箇所です。いかにもアドホックなやり方に見えます。

そもそもRはベクトルをベクトルのまま計算できるので、forループで要素一つ一つを対応するのはRらしくないように思えます。また、108や109といった数字をハードコーディングするのも見栄えが悪い上に再利用性に欠けます(このプログラムは標準死亡率2007(死亡保険用)の男性のものを使っていますが、女性にしたとたんにおかしくなります)。

このあたりを踏まえると、次のように書くことができます。

px<-1-q[,2]
lx <- 100000*cumprod(c(1, px))
length(lx)<-length(px)
dx <- lx - c(lx,0)[2:(length(lx)+1)]
Lx <- rev(cumsum(rev(lx)))
ex <- -0.5 + Lx/lx

cumprodはベクトルの第1項からの積を計算します。lxは0歳から(x-1)歳までの毎年の生存率の積で求まるため、これで計算できます。ただしそのまま計算すると初期値がなくなってしまうため、pxのベクトルの前に1を追加し、計算した後でベクトルの長さをpxと同じ108個にしています。

さて、生命関数の次は複利計算です。確定年金現価(p7)について、次のように書かれています。

しかし、Rではベクトル計算が得意なので、単に以下の1行でよい。

akishi <- sum(v^0:(n-1)), akimatsu <- sum(v^1:n)

えーと、まずこれを1行で書くとエラーになります。

エラー:   予想外の ',' です  ( "akishi <- sum(v^0:(n-1))," の)

カンマではなく、セミコロンで区切る必要があります。

また、演算子の優先順序もおかしくなりました。v=0.9, n=10のとき、次のようになります。

v^0:(n-1)
1 2 3 4 5 6 7 8 9

つまり0:(n-1)よりもv^0が先に計算されています。このあたりはRのバージョンによって異なるのかもしれません。が、少なくとも、次のようにちゃんとカッコを書けばバージョンにかかわらずうまくいきます。

akishi <- sum(v^(0:(n-1))); akimatsu <- sum(v^(1:n))

先に進みます。計算基数が出てきて、定期保険と生存保険の純保険料の計算事例が書かれています(p13)。

> TEIKI(30,30)
[1] 0.002874324
> SEIZON(30,30)
[1] 0.02500243
> TEIKI(30,30)+SEIZON(30,30)
[1] 0.02787676

ここも数字が合いません…

私の計算した結果は次のようになりました。

> TEIKI(30,30)
[1] 0.002656734
> SEIZON(30,30)
[1] 0.02456701
> TEIKI(30,30)+SEIZON(30,30)
[1] 0.02722374

TEIKI(30,30)についてはTEIKI(31,30)が計算されているようだ、というところまでは判明しましたが、SEIZON(30,30)の違いは分からずじまいでした。

第1章の最後には養老保険の責任準備金の計算が載っているのですが、これも数字が合いませんでした。バージョンの違いとも思えない差異なのですが…

ということで誤植ありまくりのこの本。誤りをしてきするのはRの勉強にはいいかもしれませんが、この本でRを勉強するのはおすすめできません。

第1章だけで思いのほか時間がかかったので、第2章以降のツッコミをやるかどうか、未定です。

« 2012年1月 | トップページ | 2012年3月 »

フォト
無料ブログはココログ
2017年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

最近のトラックバック