2013-10-09 65 views
-1

`錯誤fmincon Matlab的

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無法繼續「

+0

請格式化它。這是難以辨認的。 – Memming

+0

garchlike在初始條件下返回什麼? – Memming

+0

garchlike將返回對數似然(1x800)LLf,然後是對數似然LL(一個值)和Ht(時變矩陣3x3)的總和。 – Lauritta

回答

0

‘使用garchlike太多輸入參數錯誤’是你的問題

fmincon呼籲garchlike([psi;gamma;lambda;A],data, p , q),但你的garchlike只需要1個參數

臨提示:。。學習如何使用調試器設置dbstop if error開始

編輯:。沒關係,這裏有一些詳細信息,請仔細閱讀

您。需要1個參數作爲輸入,而你的fmincon用4個參數調用它。 (1)你需要從fmincon中刪除這3個額外的參數(即數據,p,q),或者(2)讓garchlike獲得3個更多的參數!

+0

我正在使用調試器,並且做了你告訴我的,但仍然不知道我more.It向我展示了fmincon中的631行。不過,我剛開始使用matlab,並且對於單變量情況下功能很好:( – Lauritta

+0

我非常感謝,如果你能告訴我該怎麼做,改善和修復錯誤? – Lauritta

+0

我試圖採取所有的參數,而不僅僅是一個,但給了我同樣的錯誤。 – Lauritta