Использование fminsearch с вероятностью - PullRequest
0 голосов
/ 23 января 2012

Я написал код ниже для данных. Я, вероятно, делаю ошибку, написав вложенные функции. Может ли кто-нибудь показать мне ошибку? Буду рад любому ответу,

    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
    f=@(t)p(1,1).*t.^(-p(2,1));%model function
%%%%%%%%%%%%%%%%%%%%%%%
    ff=@(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 Ответ

1 голос
/ 23 января 2012

В коде много ошибок.Строка за строкой:

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

f=@(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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...