Contents

%-------------------------------------------------------------------------
% Unrestricted likelihood function
%-------------------------------------------------------------------------
function [lf,vc] = neglog_GLS(b,nobs,X,maxlag,x1,x2,d,treshM1,treshV1)

Parameters in variance and neurons

Omega11 = [b(1)  0     0     0     0     0     0;
           b(2)  b(3)  0     0     0     0     0;
           b(4)  b(5)  b(6)  0     0     0     0;
           b(7)  b(8)  b(9)  b(10) 0     0     0;
           b(11) b(12) b(13) b(14) b(15) 0     0;
           b(16) b(17) b(18) b(19) b(20) b(21) 0;
           b(22) b(23) b(24) b(25) b(26) b(27) b(28)];

Omega22 = [b(29) 0     0     0     0     0     0;
           b(30) b(31) 0     0     0     0     0;
           b(32) b(33) b(34) 0     0     0     0;
           b(35) b(36) b(37) b(38) 0     0     0;
           b(39) b(40) b(41) b(42) b(43) 0     0;
           b(44) b(45) b(46) b(47) b(48) b(49) 0;
           b(50) b(51) b(52) b(53) b(54) b(55) b(56)];

Omega33 = [b(57)  0      0      0      0      0     0;
           b(58)  b(59)  0      0      0      0     0;
           b(60)  b(61)  b(62)  0      0      0     0;
           b(63)  b(64)  b(65)  b(66)  0      0     0;
           b(67)  b(68)  b(69)  b(70)  b(71)  0     0;
           b(72)  b(73)  b(74)  b(75)  b(76)  b(77) 0;
           b(78)  b(79)  b(80)  b(81)  b(82)  b(83) b(84)];

Omega44 = [b(85)  0      0      0      0      0      0;
           b(86)  b(87)  0      0      0      0      0;
           b(88)  b(89)  b(90)  0      0      0      0;
           b(91)  b(92)  b(93)  b(94)  0      0      0;
           b(95)  b(96)  b(97)  b(98)  b(99)  0      0;
           b(100) b(101) b(102) b(103) b(104) b(105) 0;
           b(106) b(107) b(108) b(109) b(110) b(111) b(112)];

slopelogM = b(113);
slopelogV = b(114);
slopegamM = b(115);
slopegamV = b(116);
Not enough input arguments.

Error in neglog_GLS (line 7)
Omega11 = [b(1)  0     0     0     0     0     0;

Constracting bigX matrix

Y_t=X(maxlag+1:nobs,:);
[T,Nvar]=size(Y_t);

bigX=[];
for i=1:maxlag
    bigX=[bigX X(maxlag+1-i:end-i,1:Nvar)];
end

bigX=[ones(size(bigX,1),1) bigX];

wM1 =  (1/( 1 + exp(-slopelogM*(x1(maxlag+1-d:nobs-d,1) - treshM1)  ) ))';
wM2 =  gammainc(x2(maxlag+1-d:nobs-d,1),slopegamM);
wV1 =  (1/( 1 + exp(-slopelogV*(x1(maxlag+1-d:nobs-d,1) - treshV1)  ) ))';
wV2 =  gammainc(x2(maxlag+1-d:nobs-d,1),slopegamV);

d1 = (1-wM1).*(1-wM2);
d2 =     wM1.*(1-wM2);
d3 =     wM2.*(1-wM1);
d4 =     wM2.*wM1;

XM=[d1.*bigX d2.*bigX d3.*bigX d4.*bigX];
    cX=size(XM,2);

GLS

        num0=0;
        den0=0;

        for t=1:T
            wgtM=(1-wV2(t,1))*((1-wV1(t,1))*(Omega11*Omega11')+...
                    wV1(t,1)*(Omega22*Omega22')) +...
                    wV2(t,1)*((1-wV1(t,1))*(Omega33*Omega33') +...
                    wV1(t,1)*(Omega44*Omega44'));
            den0 = den0 + kron(wgtM,XM(t,:)'* XM(t,:));
            num0 = num0 + vec(XM(t,:)'*Y_t(t,:)*wgtM);
            vc(:,:,t)  = wgtM;
            detvc(t)   = det(wgtM);
        end

betaK=pinv(den0)*num0;

betaK1=unvec(betaK,cX,Nvar);
v=Y_t-XM*betaK1;

k=Nvar;

for t = 1:nobs-maxlag
lt(t) = - k*0.5*log(2*pi) - 0.5*log(detvc(t)) - 0.5*v(t,:)*inv(vc(:,:,t))*v(t,:)';
end

lf = - mean( lt );
end