2012-01-23 2 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

В коде есть много ошибок. Переход построчно:

Ваша функция модель должна принять ваши параметры

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

Ваша целевая функция не может вызвать f без параметров, а не индекс x по i, который не определен.

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

fminsearch решит проблему минимизации всех переменных одновременно, а не один на один раз.

ffmin=fminsearch(ff,p) 

Это не учитывает возможные ошибки в вашей модели, но, по крайней мере, код должен работать.

+0

Благодарю вас за ваш ответ @ jonnat.I've попытался запустить код, но я, к сожалению, получил сообщение об ошибке. У вас есть идеи по этому поводу? – user1018331

+0

Огромное спасибо, я получил свою ошибку. Fminsearch - это матричное значение, и я должен был написать что-то вроде: {[p fvalue] = fminsearch (ff, p) } – user1018331

+0

@ user1018331 Предупреждение о максимировании указывает на то, что 'fminsearch' испытывает проблемы с конверсией в минимум в пределах разрешенного количества итераций, возможно, из-за неопределенности проблемы. Я внес небольшие изменения в код в своем ответе, который дал ограниченную проблему, но я не могу узнать, правильна ли модель. – foglerit

Смежные вопросы