【问题标题】:fminsearch usage with likelihoodfminsearch 的使用可能性
【发布时间】:2012-01-24 23:30:40
【问题描述】:

我为给定的数据编写了下面的代码。我可能通过编写嵌套函数犯了一个错误。谁能告诉我错误?我会很高兴得到任何友好的答案,

    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))

【问题讨论】:

    标签: math matlab


    【解决方案1】:

    代码中有很多错误。一行一行:

    你的模型函数应该接受你的参数

    f=@(t,p) p(1,1).*t.^(-p(2,1));%model function
    

    您的目标函数不能在没有参数的情况下调用f,也不能通过未定义的i 索引x

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

    fminsearch 将同时解决所有变量的最小化问题,而不是一次一个。

    ffmin=fminsearch(ff,p)
    

    这并不能说明模型中可能出现的错误,但至少代码应该可以运行。

    【讨论】:

    • 非常感谢您的回答,@jonnat。我试图让代码运行,但不幸的是收到一条错误消息。你有什么想法吗?
    • 非常感谢,我弄错 fminsearch 是一个矩阵值,我应该这样写:{[p fvalue]=fminsearch(ff,p) }
    • @user1018331 maxiter 警告表明fminsearch 无法在允许的迭代次数内收敛到最小值,这可能是由于问题不受限制。我在回复中对代码进行了一些小改动,这产生了一个有界问题,但我无法知道模型是否正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多