2012-01-23 13 views
0

私は与えられたデータに対して以下のコードを書いています。おそらくネストされた関数を書くことによって間違いを犯します。誰も私にエラーを示すことができますか?私はどんな種類の答えにも満足しています。fminsearchの可能性のある使用

clear; 
    t=[1 3 6 9 12 18]';%time 
    y=[.94 .77 .40 .26 .24 .16]';%probability 
    n=100;%trial 
    x=y.*n;%correct replies 
    p=rand(2,1);%starting parameters 
    [email protected](t)p(1,1).*t.^(-p(2,1));%model function 
%%%%%%%%%%%%%%%%%%%%%%% 
    [email protected](p)sum(x.*log(-f)+(n-x(i).*log(-1+f)));%sum of the -loglikelihood 
    ffmin1=fminsearch(ff,p(1,1)) 
    ffmin2=fminsearch(ff,p(2,1)) 

答えて

1

コードには多くの誤りがあります。定義されていないi、ではないインデックスxをすることができます

[email protected](t,p) p(1,1).*t.^(-p(2,1));%model function 

あなたの目的関数は、パラメータなしでfを呼び出すことはできません

あなたのモデル関数は、あなたのパラメーターを受け入れなければならない、と:行ずつ行きます。

ff= @(p) sum(x.*log(-f(t,p))+((n-x).*log(-1+f(t,p)))); 

fminsearchは、すべての変数と同時に、いない時に1つの最小化問題を解決します。

ffmin=fminsearch(ff,p) 

これはモデルで発生する可能性のあるエラーは考慮しませんが、少なくともコードは実行する必要があります。

+0

私はあなたの答えにとても感謝しています。@ jonnat.Iはコードを実行しようとしましたが、残念ながらエラーメッセージが表示されます。あなたはそれについて何か考えていますか? – user1018331

+0

多くのおかげで、間違いましたfminsearchは行列の値なので、{[p fvalue] = fminsearch(ff、p) } – user1018331

+0

@ user1018331のような記述が必要です。おそらく問題が無制限であるために、許容される反復回数内の最小値。私は制限された問題をもたらした私の応答でコードに小さな変更を加えましたが、モデルが正しいかどうかを知る方法がありません。 – foglerit

関連する問題