newton-raphson法と fisher’s scoring³•とfisher’s scoring法 h22 年度bios...

30
Newton-Raphson Fisher’s Scoring H22 BioS :第10・11 1 はじめに SAS いて Newton-Raphson Fisher’s Scoring により める ます。 お、 わせるために SAS 9 位ま しますが、 する して します。 また、 がうまくいか いこ がありますが、そ いくつかを ています。 してくだ さい。 2 1変数の Newton-Raphson 法と Fisher’s Scoring 2.1 Newton-Raphson 法の基礎 「例題1:1変数の方程式に対する Newton-Raphson 法」 f (x)= x 3 +2 する き、 f (x)=0 たす x Newton-Raphson により めよ。 お、 10 -8 せよ。 「解答:例題1」 まず、y = x 3 +2 をプロットします。 1 y = x 3 +2 グラフ き、x 3 +2=0 1.5 1 にありそう す。Newton-Raphson 、以 ように しずつこ づいていき、 に( す。 1

Upload: trandung

Post on 28-May-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Newton-Raphson法とFisher’s Scoring法H22年度 BioS継続勉強会:第10・11回補助資料

土居正明

1 はじめに

本稿では、SASを用いて Newton-Raphson法と Fisher’s Scoring法により最尤推定値を求める方法を述べます。なお、収

束基準と合わせるために SASの出力には小数第 9位まで出しますが、文章中で引用する際は適宜四捨五入して表記します。

また、計算がうまくいかないことがありますが、その原因と対処法のいくつかを補足で述べています。適宜参照してくだ

さい。

2 1変数の Newton-Raphson法と Fisher’s Scoring法

2.1 Newton-Raphson法の基礎

「例題1:1変数の方程式に対する Newton-Raphson法」

f(x) = x3 + 2とするとき、f(x) = 0を満たす解 xを Newton-Raphson法により求めよ。なお、収束基準は 10−8 とせよ。

「解答:例題1」

まず、y = x3 + 2をプロットします。

図 1 y = x3 + 2のグラフ

このとき、x3 + 2 = 0の解は −1.5と −1の間にありそうです。Newton-Raphson法とは、以下のように少しずつこの解

に近づいていき、最終的に(近似)解を得る方法です。

1

[Newton-Raphson法]

(a) 適当な点 x = x0 をとる*1。

(b) x = x0 における y = f(x)の接線 y = f ′(x0)(x − x0) + f(x0)を求める。

(c) (b)の接線と x軸の交点を求め、x座標を x1 とおく。

(d) x = x1 における y = f(x)の接線 y = f ′(x1)(x − x1) + f(x1)を求める。

(e) (d)の接線と x軸の交点を求め、x座標を x2 とおく。

(f) 以下同様に、「x = xk−1 での接線を求める」→「接線と x軸との交点を求め、x座標を xk とする」→「x = xk での

接線を求める」→(以下くり返し)

としていきます。このとき、段々解に近づいていき、最終的には解に収束する場合が多いです*2。そこで、

(z) 段々解に近づいていくので、あまり動かなくなったところが(大体の)解である*3。そこで、あるmに対して xm が

xm−1 と比べてほとんど動いていないときに終わりとし、xm を f(x) = 0の解とする。

という方法です。問題文にある「収束基準」とはこのときの「ほとんど動いていない」と判断するための基準です。つまり、

|xm − xm−1| < 10−8 となったときに、計算を終了し、x = xm を解とします。

図 2 x3 + 2 = 0に対する Newton-Raphson法(x0 = 4を初期値として 3回のくり返しまで)

以下、上の手順 (a)~(e)に従って、計算の手順を少しずつみていきます。

(a) 適当な点 x = x0 をとる。

→ 適当にとればよい。

(b) x = x0 における y = f(x)の接線 y = f ′(x0)(x − x0) + f(x0)を求める。

→  f ′(x)を計算し、接線を求めればよい。

(c) (b)の接線と x軸の交点を求め、x座標を x1 とおく。

→ 接線の式と x軸との交点が x1 なので、0 = f ′(x0)(x1 − x0) + f(x0)となる。これを x1 について解くと

*1 とりあえず勝手な値を設定して構いませんが、初期値によっては答えがきちんと求まらない場合があります。計算がうまくいかない場合、まずは初期値を変えてみてください。

*2 厳密な理論や仮定は省略します。*3 つまり「解にほとんど収束した」という意味です。

2

x1 = x0 −f(x0)f ′(x0)

(1)

  で x1 が求まる。

(d) x = x1 における y = f(x)の接線 y = f ′(x1)(x − x1) + f(x1)を求める。

→  (b)と同様に接線を求めます。

(e) (d)の接線と x軸の交点を求め、x座標を x2 とおく。

→ 接線の式と x軸との交点の x座標が x2 なので、0 = f ′(x1)(x2 − x1) + f(x1)となります。これを x2 について

解くと

x2 = x1 −f(x1)f ′(x1)

(2)

  で x2 が求まります。

以下同様に考えて、(1)、(2)より、xm−1 が求まっているとき、xm は 0 = f ′(xm−1)(xm − xm−1) + f(xm−1)を満たします

ので、

xm = xm−1 −f(xm−1)f ′(xm−1)

(3)

で求まります。なお、今 f(x) = x3 + 2より、f ′(x) = 3x2 です。これより、(3)は

xm = xm−1 −x3

m−1 + 23x2

m−1

となります。これより、x1, x2, x3, · · · を順に求めていき、

|xm − xm−1| < 10−8

となった最初の xm を解とします。以下、SASのデータステップで計算を実行していきます。

*元の関数;

%macro f(x);

  &x**3 + 2

%mend f;

*微分した関数;

%macro df(x);

  3 * (&x**2)

%mend df;

*xm−1 から xm を計算するマクロ;

%macro seq(x);

  f x =% f(&x); *f(xm−1)の値の計算;

  df x =% df(&x); *f ′(xm−1)の値の計算;

  y = &x - f x / df x ; *xm−1 から xm を求める;

%mend seq;

3

*計算実行マクロ;

*init は初期値;

*denomはくり返し計算の際の分母(Newton-Raphson法なら df x,後で述べる Fisher’s Scoring法なら I x);

%macro exe(init, denom);

data d0;

  length i 3.0 diff x f x &denom y sol check 8.0;

  i = 1; *くり返し回数の初期値;

  diff = 10; *xm と xm−1 の差の初期値(10−8 より大きければいくつでもよい);

  &denom = 100; *分母(微分した値)の初期値(以下のループで、0になったら計算中止);

  x = &init; * x0 の値;

 * |xm − xm−1| < 10−8 となるか、くり返しの分母 f ′(xm−1) = 0となるか、;

 *くり返し回数 i が 1000を超えるまでループを続ける;

  do until(diff < 10**(-8) or &denom = 0 or i> 1000);

  % seq(x)

   output;

   diff = abs(y - x); *y が xm、xが xm−1;

   x = y; *xを xm にして、次のくり返しで y を xm+1 にする;

   i = i + 1; *くり返し回数を 1回増やす;

  end;

  sol = y; *Newton-Raphson法による解;

  check =% f(sol); *元の関数に解 solを入れて、大体 0になるか(つまり f(x) = 0の解となるか)確認;

  output;

run;

%mend exe;

となります。以下、Newton-Raphson法や後で述べます Fisher’s Scoring法のプログラムにおいて、実行マクロ% exeは 1

変数の問題では常に使用できます。問題ごとに、% f、% df、% seqの部分だけ変更すればよいことになります。

実行プログラムは、初期値を適当に x0 = 4としてみると、

% exe(4, dfx)

です。出力データセット d0は以下のようになります。

4

i diff x f x df x y sol check

1 10.000000000 4.000000000 66.000000000 48.000000000 2.625000000 . .

2 1.375000000 2.625000000 20.087890625 20.671875000 1.653250189 . .

3 0.971749811 1.653250189 6.518723243 8.199708562 0.858255685 . .

4 0.794994504 0.858255685 2.632193558 2.209808461 -0.332885360 . .

5 1.191141044 -0.332885360 1.963112087 0.332437988 -6.238083198 . .

6 5.905197838 -6.238083198 -240.7467857 116.74104594 -4.175854067 . .

7 2.062229131 -4.175854067 -70.81752926 52.313271558 -2.822133927 . .

8 1.353720139 -2.822133927 -20.47671607 23.893319712 -1.965128023 . .

9 0.857005904 -1.965128023 -5.588790200 11.585184442 -1.482719631 . .

10 0.482408392 -1.482719631 -1.259696099 6.595372512 -1.291722671 . .

11 0.190996960 -1.291722671 -0.155300581 5.005642377 -1.260697566 . .

12 0.031025105 -1.260697566 -0.003700207 4.768075059 -1.259921528 . .

13 0.000776038 -1.259921528 -0.000002277 4.762206771 -1.259921050 . .

14 0.000000478 -1.259921050 -0.000000000 4.762203156 -1.259921050 . .

15 0.000000000 -1.259921050 -0.000000000 4.762203156 -1.259921050 -1.259921050 0.000000000

xの列の 1行目が初期値 x0 で、yの列の i 行目が xi となります。これより、x0 = 4.000, x1 = 2.6250, x2 = 1.6533, x3 =

0.8583 · · · となり、解は solの一番下の行より x = −1.2599となります。

2.2 Newton-Raphson法の最尤法への適用(1パラメータ)

では次に、Newton-Raphson法を用いて最尤推定値を求めます。本節ではまず 1パラメータの場合の一般論を述べ、次に

具体例を計算します。

2.2.1 理論

確率密度関数 f(x|θ)を持つ分布に従う n個のデータ x1, · · · , xn が得られたとき、θ の最尤推定値は以下の手順で求めら

れます。

(i) 尤度関数 L(θ|x1, · · · , xn) =n∏

i=1

f(xi|θ)を求める。

(ii) 対数尤度関数 l(θ|x1, · · · , xn) = log L(θ|x1, · · · , xn) =n∑

i=1

log f(xi|θ)を求める。

(iii) 対数尤度関数の微分 dldθ (θ) =

n∑i=1

ddθ log f(xi|θ)を求める。

(iv) Newton-Raphson法で dldθ (θ̂) = 0となる θ̂ を求める。つまり、

F (θ) =dl

dθ(θ)

とおき、F (θ) = 0に Newton-Raphson法を適用する。

(v) y = F (θ)に対して、θ = θm−1 における接線は

y = F ′(θm−1)(θ − θm−1) + F (θm−1)

5

より、θ 軸との交点の θ 座標を θm とおく。これより (3)と同様に

θm = θm−1 −F (θm−1)F ′(θm−1)

(4)

となり、順に θm を |θm − θm−1|が収束基準を満たすまで求める。

2.2.2 具体例

「例題2:Newton-Raphson法による Poisson分布のパラメータの最尤推定」

Poisson分布 Po(λ)に従うデータ x1 = 4, x2 = 3, x3 = 5, x4 = 8が得られたとする。このとき、パラメータ λの最尤推

定値 λ̂を Newton-Raphson法により求めよ。なお、収束基準は 10−8 とせよ。

「解答:例題2」

(一般論)

Fisher’s Scoring法のことまで考慮して、まずデータ数 nの一般の場合を考えます。Poisson分布 Po(λ)の確率密度関数は

f(x|λ) =λx

x!e−λ (5)

です。ここで、尤度関数は

L(λ) =n∏

i=1

f(xi|λ)

=n∏

i=1

(λxi

xi!e−λ

)となりますので、対数尤度関数は

l(λ) =∑

log(

λxi

xi!e−λ

)=

n∑i=1

log λxi −n∑

i=1

log(xi!) +n∑

i=1

log(e−λ)

=n∑

i=1

xi log λ −n∑

i=1

log xi! − nλ

となります。これより、F (λ)を l(λ)の 1階微分とすると、

F (λ) = l′(λ)

=1λ

n∑i=1

xi − n (6)

となります。さらにもう1回微分すると

F ′(λ) = − 1λ2

n∑i=1

xi (7)

となります。 (一般論終わり)

では、今回のデータを用います。n = 4で、4∑

i=1

xi = 4 + 3 + 5 + 8 = 20です。このとき、(6)、(7)は

F (λ) =20λ

− 4

F ′(λ) = −20λ2

6

となります。これより、Newton-Raphson法のくり返し (4)は

λm = λm−1 −F (λm−1)F ′(λm−1)

= λm−1 −20

λm−1− 4

− 20λ2

m−1

(8)

= λm−1 +20λm−1 − 4λ2

m−1

20

= 2λm−1 −15λ2

m−1

となります。これを SASで実行します。なお、くり返しの部分ではなくて、F (λ), F ′(λ)をマクロ化して、(8)を用いてく

り返し計算を行います。なお、実行マクロ% exeは、「例題1」で作ったものを使います。

*元の関数;

%macro f(x);

  20 /&x -4

%mend f;

*微分した関数;

%macro df(x);

 -20 /&x**2

%mend df;

*接線と x軸との交わりを求める;

%macro seq(x);

  f x =% f(&x);

  df x =% df(&x);

  y= &x - f x / df x ;

%mend seq;

となります。実行は、初期値を λ0 = 7とおくと、

% exe(7, dfx)

となります。出力データセットは

7

i diff x f x df x y sol check

1 10.000000000 7.000000000 -1.142857143 -0.408163265 4.200000000 . .

2 2.800000000 4.200000000 0.761904762 -1.133786848 4.872000000 . .

3 0.672000000 4.872000000 0.105090312 -0.842588323 4.996723200 . .

4 0.124723200 4.996723200 0.002623159 -0.801049608 4.999997853 . .

5 0.003274653 4.999997853 0.000001718 -0.800000687 5.000000000 . .

6 0.000002147 5.000000000 0.000000000 -0.800000000 5.000000000 . .

7 0.000000000 5.000000000 0.000000000 -0.800000000 5.000000000 5.000000000 0.000000000

となります。これより、λの最尤推定値は λ̂ = 5.0000となります。

2.3 Fisher’s Scoring法(1パラメータ)

2.3.1 理論

次に、Newton-Raphson法をもう少し楽に求める方法を考えます。まず、(4)をもう一度書きますと、Newton-Raphson法

のくり返しは

θm = θm−1 −F (θm−1)F ′(θm−1)

(9)

でした。ここで、分母の F ′(θm−1)に注目します。いま、F (θ) =n∑

i=1

ddθ log f(xi|θ)でしたので、

F ′(θ) =n∑

i=1

d2

dθ2log f(xi|θ)

となります。ここで、F ′(θ)を xに関する期待値 E[F ′(θ)]で置き換えてやります。今、Fisher情報量 I(θ)は定義から

I(θ) = −E[F ′(θ)]となりますので、これを用いて (9)を書き直すと

θm = θm−1 +F (θm−1)I(θm−1)

(10)

となります。これを用いてくり返し計算を行うのが Fisher’s Scoring法です。

2.3.2 具体例

では次に、「例題2」と同じデータに対して、Fisher’s Scoring法で最尤推定値を求めていきます。

「例題3:Fisher’s Scoring法による Poisson分布のパラメータの最尤推定」

Poisson分布 Po(λ)に従うデータ x1 = 4, x2 = 3, x3 = 5, x4 = 8が得られたとする。このとき、パラメータ λの最尤推

定値 λ̂を Fisher’s Scoring法により求めよ。なお、収束基準は 10−8 とせよ。

「解答:例題3」

F ′(λ)の計算 (7)までは「例題2」までと同じです。Fisher情報量は

I(λ) = −E[F ′(λ)]

=1λ2

n∑i=1

E[xi]

8

=nλ

λ2

=n

λ(∵ xi ∼ Po(λ)より、E[xi] = λ)

となります。ここに、現在のデータ n = 4を代入すると

I(λ) =4λ

となります。これを (10)に代入すると、

λm = λm−1 +F (λm−1)I(λm−1)

= λm−1 +20

λm−1− 4

4λm−1

= λm−1 +20 − 4λm−1

4

= λm−1 + 5 − λm−1

= 5

となります。これより、繰り返すまでもなく λm = 5となりました。以上より、λ̂ = 5となります。

これをプログラミングすると以下のようになります。実行プログラムと、元の関数 f(x)は使い回し、I(λ)をマクロ化しま

す。

*Fisher情報量;

%macro I(x);

 -4 / &x

%mend I;

*接線と x軸との交わりを求める;

%macro seq(x);

  f x =% f(&x);

  I x =% I(&x);

  y = &x - f x / I x ;

%mend seq;

実行プログラムは以下の通りです。

% exe(7, Ix)

です。出力は

i diff x f x I x y sol check

1 10.000000000 7.000000000 -1.142857143 -0.571428571 5.000000000 . .

2 2.000000000 5.000000000 0.000000000 -0.800000000 5.000000000 . .

3 0.000000000 5.000000000 0.000000000 -0.800000000 5.000000000 5.000000000 0.000000000

9

となります。これより、最尤推定値は λ̂ = 5.0000となります。

3 多変数の Newton-Raphson法と Fisher’s Scoring法

3.1 多変数の Newton-Raphson法

多変数の場合も、基本は同じになります。接平面(接空間)を考えて、各成分が 0になるような点を順に求めていきま

す*4。

「例題4:2変数の連立方程式に対する Newton-Raphson法」

連立方程式 {f(x, y) = x2 + y2 − 1

g(x, y) = y − x2

に対して、f(x, y) = 0, g(x, y) = 0 となる 解 (x, y)の1つ を Newton-Raphson法により求めよ*5。収束基準は 10−8 とせ

よ。

「解答:例題4」

基本的には「接線」を「接平面」に置き換えてやるだけです。まず、(x, y) = (x0, y0)における z = f(x, y), z = g(x, y)

の接平面はそれぞれ、

z = f(x0, y0) +∂f

∂x(x0, y0)(x − x0) +

∂f

∂y(x0, y0)(y − y0)

z = g(x0, y0) +∂g

∂x(x0, y0)(x − x0) +

∂g

∂y(x0, y0)(y − y0)

とおけます。これらに対して、1変数と同じように、z = 0を代入して得られる解 (x, y)を (x1, y1)とおきます。このとき、0 = f(x0, y0) + ∂f

∂x (x0, y0)(x1 − x0) + ∂f∂y (x0, y0)(y1 − y0)

0 = g(x0, y0) + ∂g∂x (x0, y0)(x1 − x0) + ∂g

∂y (x0, y0)(y1 − y0)

(0

0

)=

(f(x0, y0)

g(x0, y0)

)+

(∂f∂x (x0, y0) ∂f

∂y (x0, y0)∂g∂x (x0, y0) ∂g

∂y (x0, y0)

) (x1 − x0

y1 − y0

)

となります。これを (x1, y1)に関して解きますと、(x1

y1

)=

(x0

y0

)−

(∂f∂x (x0, y0) ∂f

∂y (x0, y0)∂g∂x (x0, y0) ∂g

∂y (x0, y0)

)−1 (f(x0, y0)

g(x0, y0)

)

となります。以下同様に、(xm−1, ym−1)が得られたとき、(xm, ym)は(xm

ym

)=

(xm−1

ym−1

)−

(∂f∂x (xm−1, ym−1) ∂f

∂y (xm−1, ym−1)∂g∂x (xm−1, ym−1) ∂g

∂y (xm−1, ym−1)

)−1 (f(xm−1, ym−1)

g(xm−1, ym−1)

)(11)

で得られます。これを用いてくり返し計算をすることで解が得られます。なお、今回は収束条件は∥∥∥∥∥(

xm

ym

)−

(xm−1

ym−1

)∥∥∥∥∥ < 10−8 ⇐⇒√

(xm − xm−1)2 + (ym − ym−1)2 < 10−8

*4 中学生レベルの連立方程式を思い出していただくとお分かりかと思いますが、基本的に方程式の解がきちんと求まるのは「文字の個数」=「方程式の個数」の場合です。

*5 解は複数存在しますが、本稿の主題は次節以降の確率分布のパラメータの最尤推定の場合で、基本的な場合は解が1つであることが多いですので「とりあえず1つ求める」ことに重点を置きます。余裕のある方は、初期値を変更して全ての解を求めてください。

10

となります。特にここで、x = (x, y), xm = (xm, ym)とし、

F(x) =

(f(x, y)

g(x, y)

)

とおくと、

∂F∂x

(x) =

(∂f∂x (x, y) ∂f

∂y (x, y)∂g∂x (x, y) ∂g

∂y (x, y)

)

となり、(11)は

xm = xm−1 −(

∂F∂x

(xm−1))−1

F(xm−1) (12)

と表せます。

 では、今の場合に適用していきます。まず、

F(x) =

(f(x, y)

g(x, y)

)=

(x2 + y2 − 1

y − x2

)

です。各成分を x, y でそれぞれ微分すると、

∂f

∂x(x, y) = 2x,

∂f

∂y(x, y) = 2y

∂g

∂x(x, y) = −2x,

∂g

∂y(x, y) = 1

となりますので、

∂F∂x

(x) =

(2x 2y

−2x 1

)

です。以上より、(12)は(xm

ym

)=

(xm−1

ym−1

)−

(2xm−1 2ym−1

−2xm−1 1

)−1 (x2

m−1 + y2m−1 − 1

ym−1 − x2m−1

)

となります。これを SASでプログラミングすると、以下のようになります。

*f;

%macro f(x, y);

  &x**2 + &y**2 -1

%mend f;

*g;

%macro g(x, y);

  &y - &x**2

%mend g;

11

*f x;

%macro fx(x, y);

  2*&x

%mend fx;

*f y;

%macro fy(x, y);

  2*&y

%mend fy;

*g x;

%macro gx(x, y);

 -2*&x

%mend gx;

*g y;

%macro gy(x, y);

  1

%mend gy;

*くり返し計算のマクロ;

%macro seq(x1, x2);

  x1 = &x1;

  x2 = &x2;

  f = % f(x1, x2);

  g =% g(x1, x2);

  fx = % fx(x1, x2);

  fy = % fy(x1, x2);

  gx =% gx(x1, x2);

  gy =% gy(x1, x2);

  det = fx*gy - fy*gx;

  y1 = x1 - (f*gy - g*fy) / det;

  y2 = x2 - (-f*gx + g*fx ) / det;

%mend seq;

12

*実行マクロ;

%macro exe(init1, init2, no);

  data d&no;

   length i 3.0 diff x1 x2 y1 y2 f g fx fy gx gy det solx soly checkf checkg 8.0;

   i = 1;

   diff = 10;

   x1 = &init1;

   x2 = &init2;

   do until(diff < 10**(-8) or det = 0 or i> 1000);

   % seq(x1, x2)

    output;

    diff = sqrt((y1 - x1)**2 + (y2 - x2)**2);

    x1 = y1;

    x2 = y2;

    i = i +1;

   end;

  solx = y1; *Newton-Raphson法による解(x);

  soly = y2; *Newton-Raphson法による解(y);

  checkf =% f(solx, soly); *元の関数に入れて大体 0になるか確認(f);

  checkg =% g(solx, soly); *元の関数に入れて大体 0になるか確認(g);

output;

run;

%mend exe;

実行プログラムは、初期値を (x0, y0) = (1, 1)とおくと、

% exe(1, 1, 1)

となります。出力は以下のようになります。

13

idi

ffy1

y2f

gfx

fygx

gy

110

.000

0000

000.

8333

3333

30.

6666

6666

71.

0000

0000

00.

0000

0000

02.

0000

0000

02.

0000

0000

0-2

.000

0000

001.

0000

0000

0

20.

3726

7799

60.

7880

9523

80.

6190

4761

90.

1388

8888

9-0

.027

7777

781.

6666

6666

71.

3333

3333

3-1

.666

6666

671.

0000

0000

0

30.

0656

8149

60.

7861

5406

60.

6180

3444

80.

0043

1405

9-0

.002

0464

851.

5761

9047

61.

2380

9523

8-1

.576

1904

761.

0000

0000

0

40.

0021

8967

20.

7861

5137

80.

6180

3398

90.

0000

0479

5-0

.000

0037

681.

5723

0813

31.

2360

6889

6-1

.572

3081

331.

0000

0000

0

50.

0000

0272

70.

7861

5137

80.

6180

3398

90.

0000

0000

0-0

.000

0000

001.

5723

0275

61.

2360

6797

7-1

.572

3027

561.

0000

0000

0

60.

0000

0000

00.

7861

5137

80.

6180

3398

90.

0000

0000

0-0

.000

0000

001.

5723

0275

61.

2360

6797

7-1

.572

3027

561.

0000

0000

0

idi

ffx1

x2y1

y2de

tso

lxso

lych

eckf

chec

kg

110

.000

0000

001.

0000

0000

01.

0000

0000

00.

8333

3333

30.

6666

6666

76.

0000

0000

0.

..

.

20.

3726

7799

60.

8333

3333

30.

6666

6666

70.

7880

9523

80.

6190

4761

93.

8888

8888

9.

..

.

30.

0656

8149

60.

7880

9523

80.

6190

4761

90.

7861

5406

60.

6180

3444

83.

5276

6439

9.

..

.

40.

0021

8967

20.

7861

5406

60.

6180

3444

80.

7861

5137

80.

6180

3398

93.

5157

8931

0.

..

.

50.

0000

0272

70.

7861

5137

80.

6180

3398

90.

7861

5137

80.

6180

3398

93.

5157

7584

3.

..

.

60.

0000

0000

00.

7861

5137

80.

6180

3398

90.

7861

5137

80.

6180

3398

93.

5157

7584

30.

7861

5137

80.

6180

3398

9-0

.000

0000

000.

0000

0000

0

これより、解は

x=

0.78

62,

y=

−0.

6180となります

a

aなお、この方程式は他にも実数解があります。残りは

x=

−0.7

862,

y=

0.6

180です。

14

3.2 Newton-Raphson法の最尤推定への適用(複数パラメータ)

では次に、Newton-Raphson法を用いて複数パラメータの最尤推定値を求めます。

3.2.1 理論

θ をパラメータベクトルとする。確率密度関数 f(y|θ)を持つ分布に従う n個のデータ y1, · · · , yn が得られたとき、θ の

最尤推定値は以下のようにして得られます。

(i) 尤度関数 L(θ) =n∏

i=1

f(yi|θ)を求める。

(ii) 対数尤度関数 l(θ) = log L(θ) =n∑

i=1

log f(yi|θ)を求める。

(iii) 対数尤度関数の微分 ∂l∂θ (θ) =

n∑i=1

∂l∂θ (θ)を求める*6。

(iv) Newton-Raphson法で ∂l∂θ (θ̂) = 0を解く。つまり、

F(θ) =∂l

∂θ(θ)

とおき、F(θ) = 0に Newton-Raphson法を適用する。

(v) 式 (12)

θm = θm−1 −(

∂F∂θ

(θm−1))−1

F(θm−1) (13)

を用いて、θ を ‖θm − θm−1‖が収束基準を満たすまで求める。

3.2.2 具体例

「例題5:Newton-Raphson法による Poisson回帰の複数パラメータの最尤推定」

iを被験者番号として、応答変数を yi、共変量を xi とする。ここで、yi ∼ Po(λi)とし、λi = exp(α + βxi)とする。

今、データが以下の通り与えられるとき、パラメータ α, β の最尤推定値を Newton-Raphson法で求めよ。なお、収束基

準は 10−8 とせよ。

i xi yi

1 1 10

2 2 15

3 10 20

「解答:例題5」

(一般論)

まず、θ = (α, β)′ とおきます。Poisson分布 Po(λi)で λi = exp(α + βxi)のときの yi の従う分布の確率密度関数は

f(yi|α, β, xi) =λyi

yi!exp (−λi)

={exp(α + βxi)}yi

yi!exp(− exp(α + βxi))

=exp{yi(α + βxi)}

yi!exp(− exp(α + βxi))

*6 „ の各成分で微分しますので、これはベクトルです。

15

ですので、尤度関数は

L(θ) =n∏

i=1

{exp{yi(α + βxi)}

yi!exp(− exp(α + βxi))

}

=exp

{n∑

i=1

yi(α + βxi)}

n∏i=1

yi!exp

(−

n∑i=1

exp(α + βxi)

)

となります。これより、対数尤度関数は

l(θ) =n∑

i=1

yi(α + βxi) −n∑

i=1

log yi! −n∑

i=1

exp(α + βxi)

= α

(n∑

i=1

yi

)+ β

(n∑

i=1

xiyi

)−

n∑i=1

log yi! −n∑

i=1

exp(α + βxi)

です。これを、α, β で2階まで微分します。まず1階微分は、

∂l

∂α(θ) =

n∑i=1

yi −n∑

i=1

exp(α + βxi)

∂l

∂β(θ) =

n∑i=1

xiyi −n∑

i=1

xi exp(α + βxi)

です。次に2階微分は

∂2l

∂α2(θ) = −

n∑i=1

exp(α + βxi)

∂2l

∂α∂β(θ) = −

n∑i=1

xi exp(α + βxi)

∂2l

∂β2(θ) = −

n∑i=1

x2i exp(α + βxi)

となります。これより、F(θ) =

∂l∂α (θ)

∂l∂β (θ)

とおくと、

F(θ) =

n∑

i=1

yi −n∑

i=1

exp(α + βxi)

n∑i=1

xiyi −n∑

i=1

xi exp(α + βxi)

となり、

∂F∂θ

(θ) =

∂2l∂α2 (θ) ∂2l

∂α∂β (θ)

∂2l∂α∂β (θ) ∂2l

∂β2 (θ)

=

n∑i=1

exp(α + βxi) −n∑

i=1

xi exp(α + βxi)

−n∑

i=1

xi exp(α + βxi) −n∑

i=1

x2i exp(α + βxi)

(14)

となります。これを用いて、(12)は

θm = θm−1 −(

∂F∂θ

(θm−1))−1

F(θm−1)

16

となります。成分ごとに詳しく見ますと、

αm

βm

=

αm−1

βm−1

n∑i=1

exp(αm−1 + βm−1xi) −n∑

i=1

xi exp(αm−1 + βm−1xi)

−n∑

i=1

xi exp(αm−1 + βm−1xi) −n∑

i=1

x2i exp(αm−1 + βm−1xi)

−1

×

n∑

i=1

yi −n∑

i=1

exp(αm−1 + βm−1xi)

n∑i=1

xiyi −n∑

i=1

xi exp(αm−1 + βm−1xi)

(15)

となります。 (一般論終わり)

 これに今のデータを用います。3∑

i=1

yi = 10 + 15 + 20 = 45,3∑

i=1

xiyi = 1 · 10 + 2 · 15 + 10 · 20 = 240より、

l(θ) = 45α + 240β −3∑

i=1

log yi! − exp(α + β) − exp(α + 2β) − exp(α + 10β)

∂l

∂α(θ) = 45 − exp(α + β) − exp(α + 2β) − exp(α + 10β)

∂l

∂β(θ) = 240 − exp(α + β) − 2 exp(α + 2β) − 10 exp(α + 10β)

∂2l

∂α2(θ) = − exp(α + β) − exp(α + 2β) − exp(α + 10β)

∂2l

∂α∂β(θ) = − exp(α + β) − 2 exp(α + 2β) − 10 exp(α + 10β)

∂2l

∂β2(θ) = − exp(α + β) − 4 exp(α + 2β) − 100 exp(α + 10β)

となります。これより、

F(θ) =

3∑

i=1

yi −3∑

i=1

exp(α + βxi)

3∑i=1

xiyi −3∑

i=1

xi exp(α + βxi)

=

45 − exp(α + β) − exp(α + 2β) − exp(α + 10β)

240 − exp(α + β) − 2 exp(α + 2β) − 10 exp(α + 10β)

となり、

∂F∂θ

(θ) =

3∑i=1

exp(α + βxi) −3∑

i=1

xi exp(α + βxi)

−3∑

i=1

xi exp(α + βxi) −3∑

i=1

x2i exp(α + βxi)

(16)

17

=

− exp(α + β) − exp(α + 2β) − exp(α + 10β) − exp(α + β) − 2 exp(α + 2β) − 10 exp(α + 10β)

− exp(α + β) − 2 exp(α + 2β) − 10 exp(α + 10β) − exp(α + β) − 4 exp(α + 2β) − 100 exp(α + 10β)

となります。(15)より、Newton-Raphson法のくり返し計算は長くなりますので横に倒して書きますと、

18

αm

βm

= α

m−

1

βm

−1

+

exp(

αm

−1

m−

1)+

exp(

αm

−1

+2β

m−

1)+

exp(

αm

−1

+10

βm

−1)

exp(

αm

−1

m−

1)+

2ex

p(α

m−

1+

2βm

−1)+

10ex

p(α

m−

1+

10β

m−

1)

exp(

αm

−1

m−

1)+

2ex

p(α

m−

1+

2βm

−1)+

10ex

p(α

m−

1+

10β

m−

1)

exp(

αm

−1

m−

1)+

4ex

p(α

m−

1+

2βm

−1)+

100

exp(

αm

−1

+10

βm

−1)

−1

×

45

−ex

p(α

m−

1+

βm

−1)−

exp(

αm

−1

+2β

m−

1)−

exp(

αm

−1

+10

βm

−1)

240−

exp(

αm

−1

m−

1)−

2ex

p(α

m−

1+

2βm

−1)−

10ex

p(α

m−

1+

10β

m−

1)

となります。

19

これより、SASプログラムは以下のようになります。

%macro f(alpha, beta, x);

  exp(&alpha +&x * &beta )

%mend f;

*l alpha;

%macro f1(alpha, beta);

  45 -% f(&alpha,&beta, 1) -% f(&alpha,&beta, 2) -% f(&alpha,&beta, 10)

%mend f1;

*l beta;

%macro f2(alpha, beta);

  240 -% f(&alpha,&beta, 1) - 2*% f(&alpha,&beta, 2) - 10*% f(&alpha,&beta, 10)

%mend f2;

*l alphaalpha;

%macro f11(alpha, beta);

 -% f(&alpha,&beta, 1) -% f(&alpha,&beta, 2) -% f(&alpha,&beta, 10)

%mend f11;

*l alphabeta;

%macro f12(alpha, beta);

 -% f(&alpha,&beta, 1) - 2*% f(&alpha,&beta, 2) - 10*% f(&alpha,&beta, 10)

%mend f12;

*l betabeta;

%macro f22(alpha, beta);

 -% f(&alpha,&beta, 1) - 4*% f(&alpha,&beta, 2) - 100*% f(&alpha,&beta, 10)

%mend f22;

20

*Newton-Raphson法のくり返し;

%macro seqn(x1, x2);

  x1 = &x1;

  x2 = &x2;

  f1 =% f1(x1, x2);

  f2 =% f2(x1, x2);

  f11 =% f11(x1, x2);

  f12 =% f12(x1, x2);

  f22 =% f22(x1, x2);

  det = f11*f22 - f12**2;

  y1 = x1 - (f22 * f1 - f12*f2) / det;

  y2 = x2 - (- f12*f1 + f11*f2 ) / det;

%mend seqn;

21

*実行マクロ;

*methodは計算方法。n:Newton-Raphson法、f:Fisher’s Scoring法;

%macro exe(init1, init2, method, no);

  data d&no;

   length i 3.0 diff x1 x2 y1 y2 f1 f2

  % if ” &method” = ”n” % then % do;

    f11 f12 f22

  % end;

  % else % if ” &method” = ”f” % then % do;

    I11 I12 I22

  % end;

   det sol1 sol2 check1 check2 8.0;

   i = 1;

   diff = 10;

   x1 = &init1;

   x2 = &init2;

   do until(diff < 10**(-8) or det = 0 or i> 1000);

   % seq&method(x1, x2)

    output;

    diff = sqrt((y1 - x1)**2 + (y2 - x2)**2);

    x1 = y1;

    x2 = y2;

    i = i +1;

   end;

   sol1 = y1; *Newton-Raphson法による解;

   sol2 = y2;

   check1 =% f1(sol1, sol2); *元の関数に入れて大体 0になるか確認;

   check2 =% f2(sol1, sol2); *元の関数に入れて大体 0になるか確認;

   output;

  run;

%mend exe;

実行プログラムは以下の通りです。初期値は (α0, β0) = (0, 0)とします。

% exe(0, 0, n, 5)

出力は以下の通りです。

22

idi

ffy1

y2f1

f2f1

1f1

2f2

2

110

.000

0000

009.

9931

5068

50.

9246

5753

442

.000

0000

0022

7.00

0000

00-3

.000

0000

00-1

3.00

0000

00-1

05.0

0000

00

210

.035

8383

898.

9933

0779

10.

9246

4183

2-2

2702

7456

.5-2

2686

6616

4-2

2702

7501

.5-2

2686

6640

4-2

2683

9431

63

30.

9998

4289

47.

9937

3479

50.

9245

9915

6-8

3518

721.

93-8

3459

5577

.1-8

3518

766.

93-8

3459

5817

.1-8

3449

5708

9

40.

9995

7299

86.

9948

9509

70.

9244

8319

0-3

0724

808.

86-3

0703

0491

.1-3

0724

853.

86-3

0703

0731

.1-3

0699

3890

5

50.

9988

3970

45.

9980

4607

70.

9241

6826

6-1

1303

013.

63-1

1295

0142

.1-1

1303

058.

63-1

1295

0382

.1-1

1293

6816

3

60.

9968

4907

05.

0065

8885

80.

9233

1446

3-4

1581

34.4

59-4

1551

971.

75-4

1581

79.4

59-4

1552

211.

75-4

1547

2082

.9

70.

9914

5758

64.

0296

4576

00.

9210

1006

3-1

5296

80.3

23-1

5286

052.

78-1

5297

25.3

23-1

5286

292.

78-1

5284

4392

.0

80.

9769

4581

63.

0911

2769

60.

9148

6537

8-5

6272

6.14

13-5

6233

61.2

88-5

6277

1.14

13-5

6236

01.2

88-5

6229

064.

04

90.

9385

3818

02.

2499

0170

20.

8989

9751

6-2

0700

3.72

93-2

0686

55.9

94-2

0704

8.72

93-2

0688

95.9

94-2

0686

271.

68

100.

8413

7563

61.

6279

6444

70.

8612

1718

1-7

6141

.167

12-7

6095

3.66

27-7

6186

.167

12-7

6119

3.66

27-7

6108

10.4

04

110.

6230

8370

51.

3775

3652

30.

7863

3055

5-2

8000

.507

14-2

7987

8.49

59-2

8045

.507

14-2

8011

8.49

59-2

8006

20.2

71

120.

2613

8506

51.

4663

0523

00.

6776

4589

6-1

0292

.530

95-1

0290

4.08

90-1

0337

.530

95-1

0314

4.08

90-1

0310

56.7

92

130.

1403

2903

71.

6539

9537

70.

5594

0031

7-3

780.

3665

54-3

7802

.438

44-3

825.

3665

54-3

8042

.438

44-3

8007

8.72

80

140.

2218

3238

81.

8410

0715

80.

4421

2041

7-1

385.

4394

47-1

3854

.047

43-1

430.

4394

47-1

4094

.047

43-1

4060

2.10

07

150.

2207

4415

32.

0195

6942

50.

3280

8873

1-5

04.4

4472

99-5

044.

0999

66-5

49.4

4472

99-5

284.

0999

66-5

2508

.570

75

160.

2118

6719

62.

1829

9165

60.

2217

9116

0-1

80.4

1256

72-1

803.

7907

43-2

25.4

1256

72-2

043.

7907

43-2

0111

.386

95

170.

1949

5127

42.

3168

0196

50.

1331

8439

2-6

1.42

6816

48-6

13.9

7338

95-1

06.4

2681

65-8

53.9

7338

95-8

218.

8285

65

180.

1604

8787

52.

3994

2160

10.

0775

9370

7-1

8.24

9840

22-1

82.2

9230

96-6

3.24

9840

22-4

22.2

9230

96-3

906.

8046

08

190.

0995

8076

42.

4259

1928

40.

0595

4995

3-3

.707

3478

40-3

6.99

2244

36-4

8.70

7347

84-2

76.9

9224

44-2

456.

9110

64

200.

0320

5782

72.

4281

5403

80.

0580

1808

8-0

.270

6112

95-2

.697

5552

73-4

5.27

0611

30-2

42.6

9755

53-2

115.

0192

14

210.

0027

0937

92.

4281

6868

90.

0580

0802

4-0

.001

7561

35-0

.017

4996

31-4

5.00

1756

14-2

40.0

1749

96-2

088.

3116

31

220.

0000

1777

52.

4281

6869

00.

0580

0802

4-0

.000

0000

75-0

.000

0007

49-4

5.00

0000

08-2

40.0

0000

07-2

088.

1372

62

230.

0000

0000

12.

4281

6869

00.

0580

0802

4-0

.000

0000

75-0

.000

0007

49-4

5.00

0000

08-2

40.0

0000

07-2

088.

1372

62

23

idi

ffx1

x2y1

y2de

tso

l1so

l2ch

eck1

chec

k2

110

.000

0000

000.

0000

0000

00.

0000

0000

09.

9931

5068

50.

9246

5753

414

6.00

0000

00.

..

.

210

.035

8383

899.

9931

5068

50.

9246

5753

48.

9933

0779

10.

9246

4183

23.

0316

889E

15.

..

.

30.

9998

4289

48.

9933

0779

10.

9246

4183

27.

9937

3479

50.

9245

9915

64.

1034

824E

14.

..

.

40.

9995

7299

87.

9937

3479

50.

9245

9915

66.

9948

9509

70.

9244

8319

05.

5554

377E

13.

..

.

50.

9988

3970

46.

9948

9509

70.

9244

8319

05.

9980

4607

70.

9241

6826

67.

5257

471E

12.

..

.

60.

9968

4907

05.

9980

4607

70.

9241

6826

65.

0065

8885

80.

9233

1446

31.

0211

794E

12.

..

.

70.

9914

5758

65.

0065

8885

80.

9233

1446

34.

0296

4576

00.

9210

1006

313

9189

8769

08.

..

.

80.

9769

4581

64.

0296

4576

00.

9210

1006

33.

0911

2769

60.

9148

6537

819

2030

9711

5.

..

.

90.

9385

3818

03.

0911

2769

60.

9148

6537

82.

2499

0170

20.

8989

9751

627

3563

1583

.9.

..

.

100.

8413

7563

62.

2499

0170

20.

8989

9751

61.

6279

6444

70.

8612

1718

142

2681

132.

69.

..

.

110.

6230

8370

51.

6279

6444

70.

8612

1718

11.

3775

3652

30.

7863

3055

578

4440

55.0

31.

..

.

120.

2613

8506

51.

3775

3652

30.

7863

3055

51.

4663

0523

00.

6776

4589

619

8783

94.8

53.

..

.

130.

1403

2903

71.

4663

0523

00.

6776

4589

61.

6539

9537

70.

5594

0031

767

1333

1.37

97.

..

.

140.

2218

3238

81.

6539

9537

70.

5594

0031

71.

8410

0715

80.

4421

2041

724

8061

8.30

32.

..

.

150.

2207

4415

31.

8410

0715

80.

4421

2041

72.

0195

6942

50.

3280

8873

192

8845

.018

93.

..

.

160.

2118

6719

62.

0195

6942

50.

3280

8873

12.

1829

9165

60.

2217

9116

035

6278

.764

10.

..

.

170.

1949

5127

42.

1829

9165

60.

2217

9116

02.

3168

0196

50.

1331

8439

214

5433

.209

34.

..

.

180.

1604

8787

52.

3168

0196

50.

1331

8439

22.

3994

2160

10.

0775

9370

768

773.

9725

07.

..

.

190.

0995

8076

42.

3994

2160

10.

0775

9370

72.

4259

1928

40.

0595

4995

342

944.

9183

91.

..

.

200.

0320

5782

72.

4259

1928

40.

0595

4995

32.

4281

5403

80.

0580

1808

836

846.

1093

80.

..

.

210.

0027

0937

92.

4281

5403

80.

0580

1808

82.

4281

6868

90.

0580

0802

436

369.

2906

14.

..

.

220.

0000

1777

52.

4281

6868

90.

0580

0802

42.

4281

6869

00.

0580

0802

436

366.

1765

66.

..

.

230.

0000

0000

12.

4281

6869

00.

0580

0802

42.

4281

6869

00.

0580

0802

436

366.

1765

662.

4281

6869

00.

0580

0802

4-0

.000

0000

00-0

.000

0000

00

これより、最尤推定値は

α̂=

2.42

82,

β̂=

0.05

80となります。

24

3.3 Fisher’s Scoring法(複数パラメータ)

3.3.1 理論

1変数の場合は F ′(θ)を Fisher情報量 I(θ)で置き換えましたが、それと同様に、今回は ∂F∂θ (θ)を Fisher情報行列 I(θ)

で置き換えます。なお、Fisher情報行列の定義は

I(θ) = −E

[∂F∂θ

(θ)]

です。これを用いて (13)を

θm = θm−1 + I(θm−1)−1F(θm−1) (17)

で置き換えてくり返し計算をします。

3.3.2 具体例

「例題6:Fisher’s Scoring法による Poisson回帰の複数パラメータの最尤推定」

iを被験者番号として、応答変数を yi、共変量を xi とする。ここで、yi ∼ Po(λi)とし、λi = exp(α + βxi)とする。

今、データが以下の通り与えられるとき、パラメータ α, β の最尤推定値を Fisher’s Scoring法で求めよ。なお、収束基準

は 10−8 とせよ。

i xi yi

1 1 10

2 2 15

3 10 20

「解答:例題6」

まず、Fisher情報行列の計算は (14)、(16)より、

I(θ) = −E

[∂F∂θ

]= −

E

[∂2l∂α2 (θ)

]E

[∂2l

∂α∂β (θ)]

E[

∂2l∂α∂β (θ)

]E

[∂2l∂β2 (θ)

] =

n∑

i=1

exp(α + βxi)n∑

i=1

xi exp(α + βxi)

n∑i=1

xi exp(α + βxi)n∑

i=1

x2i exp(α + βxi)

=

exp(α + β) + exp(α + 2β) + exp(α + 10β) exp(α + β) + 2 exp(α + 2β) + 10 exp(α + 10β)

exp(α + β) + 2 exp(α + 2β) + 10 exp(α + 10β) exp(α + β) + 4 exp(α + 2β) + 100 exp(α + 10β)

となります。これを (17)に代入してプログラムを作成します。プログラムは、「例題5」のものを少し変更します。まず、

Fisher情報行列は

*I 11;

%macro I11(alpha, beta);

 % f(&alpha,&beta, 1) +% f(&alpha,&beta, 2) +% f(&alpha,&beta, 10)

%mend I11;

25

*I 12;

%macro I12(alpha, beta);

 % f(&alpha,&beta, 1) + 2*% f(&alpha,&beta, 2) + 10*% f(&alpha,&beta, 10)

%mend I12;

*I 22;

%macro I22(alpha, beta);

 % f(&alpha,&beta, 1) + 4*% f(&alpha,&beta, 2) + 100*% f(&alpha,&beta, 10)

%mend I22;

となります。次に、Fisher’s Scoring法によるくり返し計算は以下の通りです。

*Fisher’s Scoring法のくり返し;

%macro seqf(x1, x2);

  x1 = &x1;

  x2 = &x2;

  f1 =% f1(x1, x2);

  f2 =% f2(x1, x2);

  I11 =% I11(x1, x2);

  I12 =% I12(x1, x2);

  I22 =% I22(x1, x2);

  det = I11*I22 - I12**2;

  y1 = x1 + (I22 * f1 - I12*f2) / det;

  y2 = x2 + (- I12*f1 + I11*f2 ) / det;

%mend seqf;

実行プログラムは、初期値を (α0, β0) = (0, 0)とすると、

% exe(0, 0, f, 6)

とするだけです。出力は以下の通りです。

26

idi

ffy1

y2f1

f2I1

1I1

2I2

2

110

.000

0000

009.

9931

5068

50.

9246

5753

442

.000

0000

0022

7.00

0000

003.

0000

0000

013

.000

0000

0010

5.00

0000

00

210

.035

8383

898.

9933

0779

10.

9246

4183

2-2

2702

7456

.5-2

2686

6616

422

7027

501.

4922

6866

6403

.722

6839

4316

3

30.

9998

4289

47.

9937

3479

50.

9245

9915

6-8

3518

721.

93-8

3459

5577

.183

5187

66.9

3483

4595

817.

1083

4495

7088

.6

40.

9995

7299

86.

9948

9509

70.

9244

8319

0-3

0724

808.

86-3

0703

0491

.130

7248

53.8

6330

7030

731.

0930

6993

8904

.6

50.

9988

3970

45.

9980

4607

70.

9241

6826

6-1

1303

013.

63-1

1295

0142

.111

3030

58.6

2811

2950

382.

0811

2936

8162

.9

60.

9968

4907

05.

0065

8885

80.

9233

1446

3-4

1581

34.4

59-4

1551

971.

7541

5817

9.45

8541

5522

11.7

5041

5472

082.

90

70.

9914

5758

64.

0296

4576

00.

9210

1006

3-1

5296

80.3

23-1

5286

052.

7815

2972

5.32

3215

2862

92.7

8415

2844

392.

01

80.

9769

4581

63.

0911

2769

60.

9148

6537

8-5

6272

6.14

13-5

6233

61.2

8856

2771

.141

3056

2360

1.28

7956

2290

64.0

37

90.

9385

3818

02.

2499

0170

20.

8989

9751

6-2

0700

3.72

93-2

0686

55.9

9420

7048

.729

3020

6889

5.99

3720

6862

71.6

75

100.

8413

7563

61.

6279

6444

70.

8612

1718

1-7

6141

.167

12-7

6095

3.66

2776

186.

1671

1576

1193

.662

7476

1081

0.40

41

110.

6230

8370

51.

3775

3652

30.

7863

3055

5-2

8000

.507

14-2

7987

8.49

5928

045.

5071

4228

0118

.495

9128

0062

0.27

07

120.

2613

8506

51.

4663

0523

00.

6776

4589

6-1

0292

.530

95-1

0290

4.08

9010

337.

5309

4710

3144

.089

0210

3105

6.79

19

130.

1403

2903

71.

6539

9537

70.

5594

0031

7-3

780.

3665

54-3

7802

.438

4438

25.3

6655

4338

042.

4384

4538

0078

.728

03

140.

2218

3238

81.

8410

0715

80.

4421

2041

7-1

385.

4394

47-1

3854

.047

4314

30.4

3944

7314

094.

0474

2814

0602

.100

70

150.

2207

4415

32.

0195

6942

50.

3280

8873

1-5

04.4

4472

99-5

044.

0999

6654

9.44

4729

9152

84.0

9996

6252

508.

5707

47

160.

2118

6719

62.

1829

9165

60.

2217

9116

0-1

80.4

1256

72-1

803.

7907

4322

5.41

2567

2320

43.7

9074

2620

111.

3869

52

170.

1949

5127

42.

3168

0196

50.

1331

8439

2-6

1.42

6816

48-6

13.9

7338

9510

6.42

6816

4885

3.97

3389

5282

18.8

2856

51

180.

1604

8787

52.

3994

2160

10.

0775

9370

7-1

8.24

9840

22-1

82.2

9230

9663

.249

8402

2042

2.29

2309

5639

06.8

0460

78

190.

0995

8076

42.

4259

1928

40.

0595

4995

3-3

.707

3478

40-3

6.99

2244

3648

.707

3478

4027

6.99

2244

3624

56.9

1106

44

200.

0320

5782

72.

4281

5403

80.

0580

1808

8-0

.270

6112

95-2

.697

5552

7345

.270

6112

9524

2.69

7555

2721

15.0

1921

39

210.

0027

0937

92.

4281

6868

90.

0580

0802

4-0

.001

7561

35-0

.017

4996

3145

.001

7561

3524

0.01

7499

6320

88.3

1163

08

220.

0000

1777

52.

4281

6869

00.

0580

0802

4-0

.000

0000

75-0

.000

0007

4945

.000

0000

7524

0.00

0000

7520

88.1

3726

15

230.

0000

0000

12.

4281

6869

00.

0580

0802

4-0

.000

0000

75-0

.000

0007

4945

.000

0000

7524

0.00

0000

7520

88.1

3726

15

27

idi

ffx1

x2y1

y2de

tso

l1so

l2ch

eck1

chec

k2

110

.000

0000

000.

0000

0000

00.

0000

0000

09.

9931

5068

50.

9246

5753

414

6.00

0000

00.

..

.

210

.035

8383

899.

9931

5068

50.

9246

5753

48.

9933

0779

10.

9246

4183

23.

0316

889E

15.

..

.

30.

9998

4289

48.

9933

0779

10.

9246

4183

27.

9937

3479

50.

9245

9915

64.

1034

824E

14.

..

.

40.

9995

7299

87.

9937

3479

50.

9245

9915

66.

9948

9509

70.

9244

8319

05.

5554

377E

13.

..

.

50.

9988

3970

46.

9948

9509

70.

9244

8319

05.

9980

4607

70.

9241

6826

67.

5257

471E

12.

..

.

60.

9968

4907

05.

9980

4607

70.

9241

6826

65.

0065

8885

80.

9233

1446

31.

0211

794E

12.

..

.

70.

9914

5758

65.

0065

8885

80.

9233

1446

34.

0296

4576

00.

9210

1006

313

9189

8769

08.

..

.

80.

9769

4581

64.

0296

4576

00.

9210

1006

33.

0911

2769

60.

9148

6537

819

2030

9711

5.

..

.

90.

9385

3818

03.

0911

2769

60.

9148

6537

82.

2499

0170

20.

8989

9751

627

3563

1583

.9.

..

.

100.

8413

7563

62.

2499

0170

20.

8989

9751

61.

6279

6444

70.

8612

1718

142

2681

132.

69.

..

.

110.

6230

8370

51.

6279

6444

70.

8612

1718

11.

3775

3652

30.

7863

3055

578

4440

55.0

31.

..

.

120.

2613

8506

51.

3775

3652

30.

7863

3055

51.

4663

0523

00.

6776

4589

619

8783

94.8

53.

..

.

130.

1403

2903

71.

4663

0523

00.

6776

4589

61.

6539

9537

70.

5594

0031

767

1333

1.37

97.

..

.

140.

2218

3238

81.

6539

9537

70.

5594

0031

71.

8410

0715

80.

4421

2041

724

8061

8.30

32.

..

.

150.

2207

4415

31.

8410

0715

80.

4421

2041

72.

0195

6942

50.

3280

8873

192

8845

.018

93.

..

.

160.

2118

6719

62.

0195

6942

50.

3280

8873

12.

1829

9165

60.

2217

9116

035

6278

.764

10.

..

.

170.

1949

5127

42.

1829

9165

60.

2217

9116

02.

3168

0196

50.

1331

8439

214

5433

.209

34.

..

.

180.

1604

8787

52.

3168

0196

50.

1331

8439

22.

3994

2160

10.

0775

9370

768

773.

9725

07.

..

.

190.

0995

8076

42.

3994

2160

10.

0775

9370

72.

4259

1928

40.

0595

4995

342

944.

9183

91.

..

.

200.

0320

5782

72.

4259

1928

40.

0595

4995

32.

4281

5403

80.

0580

1808

836

846.

1093

80.

..

.

210.

0027

0937

92.

4281

5403

80.

0580

1808

82.

4281

6868

90.

0580

0802

436

369.

2906

14.

..

.

220.

0000

1777

52.

4281

6868

90.

0580

0802

42.

4281

6869

00.

0580

0802

436

366.

1765

66.

..

.

230.

0000

0000

12.

4281

6869

00.

0580

0802

42.

4281

6869

00.

0580

0802

436

366.

1765

662.

4281

6869

00.

0580

0802

4-0

.000

0000

00-0

.000

0000

00

これより、最尤推定値は

α̂=

2.48

17,

β̂=

0.05

80となります。

28

【補足】計算がうまくいかない場合

【うまくいかないことの検出】

Newton-Raphson法や Fisher’s Scoring法で計算がうまくいかない場合についていくつか注意を述べておきます。基本的

に、プログラムにミスはつきものですので、それをどのようにきちんと検出するかが重要です。

今回のプログラムでは、くり返し計算をする際に

(a) くり返し数が 1,000回を超えたら中止

(b) 分母が 0になったら中止

の 2つの条件をつけました。つまり、

• くり返し数が 1,000回を超えた

• 分母が 0(かもしくはほとんど 0)になった

場合には、計算がうまくいかなかった可能性が高いです。また、

• f(x)や f ′(x)の値などをデータセットに出力するようにした

のも、計算ミスかどうかを検算をしやすくするためです。それから、

• 収束条件の diff が小さくなっていない場合

にもプログラムのミスの可能性があります。

【うまくいかない原因】

うまくいかない原因は大きく分けて2つで

(i) 初期値の設定が不適切

(ii) プログラム(計算)にミスがある

の 2つです。少しずつ見ていきます。

(i) 初期値の設定が不適切な場合

最も重要なことは、計算プログラムが完全に正しくても、初期値の与え方が妥当でなければ、計算がきちんと終了しない

ことがあるということです。

ですので、とりあえず計算がうまくいかなかったら、まずは初期値をいくつか変えてみてください。

(ii)プログラムにミスがある場合

次に、プログラムミスについてです。初期値を変更して何度か実行してみてもうまくいかない場合、プログラムミスが考

えられます。これには大きく分けて

• 計算ミス• プログラムミス

があります。

29

【計算ミス】

F(θ)や ∂F∂θ (θ)や I(θ)の手計算をもう1回確認してみてください。

【プログラムミス】

次に、手計算は合っていたものの、入力プログラムを間違えた場合です。これは上にも書きましたが、まず、

• F(θ)や ∂F∂θ (θ)や I(θ)に初期値を手計算で代入し、その値が出力データセットの1行目の値と一致しているかを確

認する

ことで入力ミスをしているかどうか確認できます。

30