2016-09-11 39 views
0

私は、emceeと呼ばれるpythonパッケージを使用して、いくつかのデータポイントに関数をフィットさせます。フィット感は素晴らしい見えますが、私は各ステップで各パラメータの値をプロットしたいとき、私はこれを取得:彼らはこれを取得(別の関数とデータポイントを)自分の例ではpythonでモンテカルロとフィッティングする

enter image description here

を:

enter image description here

なぜ私の機能は非常に速く収束していますか、なぜ最初に奇妙な形になっていますか?尤度と事後確率を用いてMCMCを適用する。そして、フィット感が非常に良く見えても、関数のパラメータの誤差は非常に小さく(実際の値よりも10^10小さい)、私はランダムな散歩のためだと思います。どのようにそれを修正するための任意のアイデア?フィッティングのコードは次のとおりです。http://dan.iel.fm/emcee/current/user/line/データポイントとフィッティング関数に明白な修正を加えて同じコードを使用しました。

答えて

3

あなたの機能が、あなたがリンクしているemceeのラインフィッティングの例よりも速く収束しているとは言いません。この例では、歩行者はパラメータ空間で最も可能性の高い値をほぼ即座に探索しますが、あなたの場合は確率が高い領域に到達するまでに200回以上の反復が必要です。

トレースプロットのジャンプはバーンインのように見えます。これは、MCMCサンプリングアルゴリズムの一般的な特徴です。歩行者には、後部の大部分から出発点が与えられ、その後、歩行者に向かう必要があります。あなたの場合、尤度関数は非常に滑らかであるので、これを達成するためには100回程度の反復しか必要とせず、あなたの関数にこの「奇妙な形」を与えているようです。

開始点をよりよく抑制することができます。もしそうでなければ、さらなる分析が行われる前にこの最初の長さを破棄することを検討するかもしれません(バーンイン長についてはherehereを参照してください)。

誤差が現実的であるか否かについては、実際のパラメータ値とその不確実性との比にはこのことが言えないため、結果の事後モデルを検査する必要があります。たとえば、リンクexampleを受け取り、真の値bを10^10に変更した場合、結果の誤差は完全に有効なまま10個の大きさになります。

+0

事実、事後分布に非常によく定義された狭いモードがあるようです。メトロポリスの受入れ確率が反復の関数としてどのように発展するかを見て、最大に達すると「良い混合」があるかどうかを知ることができます。もしそうなら、あなたはまだ私がモデルを調べる「小さな」不確実性を心配しています。 – user3465408

関連する問題