ニュートンラフソンとフィッシャーのスコアリングの最初の反復を明示的に見せていただけますか?


8

サンプルの各メソッドの最初の反復を計算することにより、Newton-Raphsonテクニックとテクニックの違いを理解しようとしFisher scoringていBernoulliます。(私はこのケースでは、私は明示的に、すぐに計算できることを知っている、私は繰り返しそれを行うには、単に理解し、どのように各メソッドの収束を見たいです)。πmle

私は、コインを描くとし回、実際のパラメータπ 、T = 0.3である私には不明、と私は4頭を得たので、ˉ X = 0.4n=10πt=0.3X¯=0.4

スコア関数は次のとおりです。

u(π)=nX¯πn(1X¯)1π

観測された漁師情報は次のとおりです。

J(π)=nX¯π2n(1X¯)(1π)2

予想される漁師情報は次のとおりです。

I(π)=nπtπ2+n(1πt)(1π)2

そして、私たちが期待フィッシャー情報を簡素化できることに注意してください我々がそれを評価する場合にのみ、π=πtが、それがどこにあるか、我々が知りません...

今、私の最初の推測があるとしπ0=0.6

Newton-Raphson単にこのように行きます:

π1=π0u(π0)/J(π0)

そして、どうFisher-scoringですか?

π1=π0+u(π0)/I(π0)

πtπtπmle

これら2つの方法を可能な限り具体的に示してくれませんか。ありがとう!

回答:


4

以下のためにニュートン・ラプソン、はい、私たちは持っています

π1=π0u(π0)/J(π0).

πI(π)I(π)=E(J(π))=E[u(π)u(π)]

I^(π0)=inui(π0)ui(π0),
ui(π)=xiπ1xi1πxi
π1=π0+u(π0)/I^(π0).
n

I_hat(pi)@ihadannyのPythonコードを修正しました。現在、Newton-RaphsonとFisherのスコアリングは同じ結果を提供します。

import random
import numpy as np 

pi_t = random.random()
n = 1000
draws = [1 if x < pi_t else 0 for x in np.random.rand(n)]
x_bar = np.mean(draws)

def u(pi):
    return n*x_bar/pi - n*(1-x_bar)/(1-pi)
def J(pi):
    return -n*x_bar/pi**2 - n*(1-x_bar)/((1-pi)**2)
def I_hat(pi):
    x = 0
    for i in range(0, n): 
        x = x + (draws[i]/pi - (1-draws[i])/(1-pi))**2
    return x
def Newton(pi):
    return pi - u(pi)/J(pi)
def Fisher(pi):
    return pi + u(pi)/I_hat(pi)

def dance(method_name, method):
    print("starting iterations for: " + method_name)
    pi, prev_pi, i = 0.5, None, 0
    while i == 0 or (abs(pi-pi_t) > 0.001 and abs(pi-prev_pi) > 0.001 and i < 10):
        prev_pi, pi = pi, method(pi)
        i += 1
        print(method_name, i, "delta: ", abs(pi-pi_t))

dance("Newton", Newton)
dance("Fisher", Fisher)

Log Message
starting iterations for: Newton
Newton 1 delta:  0.00899203081545
Newton 2 delta:  0.00899203081545
starting iterations for: Fisher
Fisher 1 delta:  0.00899203081545
Fisher 2 delta:  0.00899203081545

更新

I^(π)=in(xiπ1xi1π)2=inxiπ2+(ninxi)(1π)2=J(π),

うーん..これをたくさんありがとう-理にかなっています。しかし、私はあなたの正確なステートメントを実装しました:pastebin.com/m192UYs9-ニュートンは1〜2回の反復後に収束し、フィッシャーは10回の反復後にも近づきません。逆になってしまうのではないですか?私は、フィッシャーがあると思っ改善 ...ニュートン以上
ihadanny

1
π1=π0+1/u(π0)

それはいい!受け入れる前の最後の質問- コードを実行するたびに両方のメソッドがまったく同じ結果を返すのは不思議ではありませんか?もう一度-フィッシャーは改善になるはずでした-あなたの(正しい)近似を使用することでニュートンよりフィッシャーを使用する利点はなくなり、両方の方法は数学的に同等です:(
ihadanny

(そして心配する必要はありません-賞金は期限が切れる前に受け入れて授与します。この質問がメソッド間の根本的な違いを理解するのに役立つことを願っていただけで、現在はそこに到達しませんでした-それは私には同じことの数学の体操のように見えます)
ihadanny

n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.