【问题标题】:error in fmincon Matlabfmincon Matlab中的错误
【发布时间】:2013-10-09 03:24:52
【问题描述】:

`

function [LLF, LL, H  ] = garchlike(data)


p=1;
q=1;


 if isempty(q)
    m=p;
 else
     m  =  max(p,q);   
 end

%this are the parameters
psi=[0.01;0.01];
 gamma=[0;0.02;0.02;0];
 lambda=[0;0.03;0.03;0];
  A=[1;-0.04;-0.03;1];

 stdestimate = std(data,1);                      
data   =  [stdestimate ; data];
T =  size(data,1);

B=(reshape(A,2,2))^-1;
%I am squaring each element of the inverse of A
B2=((reshape(A,2,2))^-1).^2;
%getting the Bl matrix(squared interactions)

Bl=[B2(1,:);B(1,:).*B(2,:);B2(2,:)];

garchc=Bl*psi;
garcha=Bl*(reshape(gamma,2,2))*reshape(A.^2,2,2);
garchb= Bl*(reshape(lambda,2,2))*reshape(A.^2,2,2);

H(1,1).day=[0.001; 0; 0; 0.002; ];
%convert to matrix

  H(1,1).day=ivech(H(1,1).day);

for t = (m + 1):T


  H(1,t).day= ivech(garchc + garcha*(diag(H(1,t-1).day))+ garchb*(data((t-1),:).^2)');

end
% Getting the loglikelihood
LLF=zeros(1,T);
%the loklikelihood
for t = (m + 2):T

  LLF(t)= log(det(H(1,t).day))+ data(t,:)/(H(1,t).day)*data(t,:)';

end
t=(m+2):T;
LLF=-LLF(t);
LL=sum(LLF);
`

我有这个功能并尝试使用 fmincon 最小化:

`  [parameters,LLF,EXITFLAG, OUTPUT,HESSIAN] =  fmincon('garchlike',    [psi;gamma;lambda;A],sumA ,sumB ,[] , [] , LB , UB,[],options, data, p , q);`

我不知道为什么不工作并给我一个错误: “使用 garchlike 时出错 使用 garchlike 时出错 输入参数过多。 fmincon 中的错误(第 631 行) initVals.f = feval(funfcn{3},X,varargin{:}); 造成的: 初始用户提供的目标函数评估失败。 FMINCON 无法继续。”

【问题讨论】:

  • 请更好地格式化它。这是难以辨认的。
  • garchlike 在初始条件下返回什么?
  • garchlike 将返回对数似然(1x800)LLf,然后是对数似然 LL(一个值)和 Ht(时变矩阵 3x3)之和..

标签: matlab optimization


【解决方案1】:

“错误使用 garchlike 输入参数太多。”是你的问题。

fmincon 正在调用 garchlike([psi;gamma;lambda;A],data, p , q),但您的 garchlike 只需要 1 个参数。

专业提示:了解如何使用调试器。首先设置dbstop if error

编辑:好的,这里有更多细节。请仔细阅读。

您的 garchlike 将 1 个参数作为输入,而您的 fmincon 使用 4 个参数调用它。 要么(1)你需要从 fmincon 中删除这 3 个额外的参数(即 data、p、q),要么(2)让 garchlike 多带 3 个参数!!

【讨论】:

  • 我正在使用调试器并按照您告诉我的操作,但仍然没有告诉我更多信息。它向我显示了 fmincon 中的第 631 行。对不起,但我刚开始使用 matlab,对于单变量案例是功能顺利:(
  • 非常感谢您能告诉我该怎么做,以改进和修复错误?
  • 我试图接受所有的论点,不仅是一个,而且给了我同样的错误..
  • 使用调试器,您可以准确地看到feval 语句中输入的内容。
  • 我使用了调试器并检查了第 631 行,即:initVals.f = feval(funfcn{3},X,varargin{:}); initVals.f(is 14x1, the initial values I have),funfcn(is 1x5 cell,'fun' 'fmincon' garchlike [] []),X(14x1),varargin(empty)。还告诉我 fmincon必须至少有 4 个输入,我不是有 4 个吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多