2012-02-23 6 views
0

私は、二項分布関数の負の最大尤度モデルにMatlab-fminsearchを使用しました。私はエラー通知を得ることはありませんが、私が推定したいパラメータは、常に開始値を取る。どうやら、間違いがあります。私は完全に一般的な質問をすることを知っています。しかし誰も同じミスを抱えていて、それに対処する方法を知っている可能性はありますか? ありがとう、max likelihood fminsearch

@ woodchips、ありがとうございます。ステップバイステップで、私はあなたが私にアドバイスしたことをやろうとしました。まず第一に、私は実際に最大化しました(-log(尤度))。これは問題ではありません。私は問題を発見したと思うが、もしあなたが気にしなければ、まだいくつかの質問がある。 paramstart = p1で最大化するモデル(param)があります。このモデルは(-log(likelihood(F))のために構築され、FはF(t、Z、X、T、param、m2、m3、k、l)のようなベクトル化された関数です。私は(tdata、kdata、ldata)、X、Tはグリッド、Zはこのグリッド上の関数であり、(m1、m2、m3)のパラメータは与えられている。私はF(tdata、 Z、X、T、m1、m2、m3、kdata、ldata)、良い出力が得られます。しかし、fminsearchはF(tdata、Z、X、T、p、m2、m3、kdata、ldata)を定数のように受け入れると思っています。あなたがそれを微調整する助言を持っているなら、私は幸せになるでしょう。

+0

私はあなたがデモを読んで、fminsearchのために助けを必要とすると思います。 ITには、その使用方法の多くの例があります。この場合、fminsearchは最適化するパラメータを認識していないようです。ここでも例を見て、それに従ってください。 –

+0

@ woodchips、ありがとう。 – user1018331

答えて

2

あなたは微調整しようとすることができるいくつかの選択肢があります。アルゴリズムから始めたいと思います。

実際に関数の値がスタートポイントの周りで変更されない場合は、問題があります。たぶんログ可能性に切り替えることができます。

私は常にfminuncまたはfminconを使用します。また、ヘッセ行列(典型的には「推定値」よりも良い)または「典型的な値」を提供することができ、アルゴリズムが実行不可能な領域で時間を費やさないようにします。

+0

あなたの答えに感謝します。私はあなたのヒントを試みます。 – user1018331

1

尤度関数を最大化する必要はありませんが、常にその関数のログを最大化することは常に事実です。浮動小数点の問題は、そうでなければほとんど常に問題を破損します。あなたの最適化が開始され、同じポイントで停止することは、これが問題であることを示す良い指標です。

上記より少し深いところを掘り下げる必要があるかもしれませんが、この次のテストでは、最適化ツールのすべてのユーザーがそれぞれの問題に対して機能することをお勧めします。オプティマイザ。近くのいくつかの点についてあなたの目的を評価してください。有意に異なる値が得られますか?そうでない場合は、なぜ見ないかを見てください。あなたは最適化するための非滑らかな目的、またはゼロの目的を作成していますか?つまり、供給された公差内でゼロになるでしょうか?

異なる値を出力してもまだ収束していない場合は、オプティマイザを正しく呼び出す方法を確認してください。ええ、そうです、誰もこれまでにこの間違いを犯したことはありませんでした。実際には、これはオプティマイザの障害の非常に一般的な原因です。

さまざまな値が得られますが、オプティマイザを正しく呼び出す必要がある場合は、オプティマイザが分岐してガベージ結果を生成する領域があるかどうかを確認してください。目的は複雑な、または虚偽の結果を生成していますか?

+0

ありがとうございます。私があなたを気にしないなら、私のスタックのために私を助けてくれますか?私は同じ質問の下でそれを書いた。 – user1018331