全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
11774 18
2012-03-12
悬赏 50 个论坛币 未解决
大家好 我用了这个源代码

function [parameters, loglikelihood, Ht, likelihoods, stdresid, stderrors, A, B, scores]  = full_bekk_mvgarch(data,p,q, BEKKoptions);

% PURPOSE:

%      To Estimate a full BEKK multivariate GARCH model.  %

%

% USAGE:

%      [parameters, loglikelihood, Ht, likelihoods, stdresid, stderrors, A, B, scores]  = full_bekk_mvgarch(data,p,q,options);

%

%

% INPUTS:

%      data          - A t by k matrix of zero mean residuals

%      p             - The lag length of the innovation process

%      q             - The lag length of the AR process

%      options       - (optional) Options for the optimization(fminunc)

%

% OUTPUTS:

%      parameters    - A (k*(k+1))/2+p*k^2+q*k^2 vector of estimated parameteters. F

%                         or any k^2 set of Innovation or AR parameters X,

%                         reshape(X,k,k) will give the correct matrix

%                         To recover C, use ivech(parmaeters(1:(k*(k+1))/2)

%      loglikelihood - The loglikelihood of the function at the optimum

%      Ht            - A k x k x t 3 dimension matrix of conditional covariances

%      likelihoods   - A t by 1 vector of individual likelihoods

%      stdresid      - A t by k matrix of multivariate standardized residuals

%      stderrors     - A numParams^2 square matrix of robust Standad Errors(A^(-1)*B*A^(-1)*t^(-1))

%      A             - The estimated inverse of the non-robust Standard errors

%      B             - The estimated covariance of teh scores

%      scores        - A t by numParams matrix of individual scores

% need to try and get some smart startgin values

if size(data,2) > size(data,1)

    data=data';

end

[t k]=size(data);

k2=k*(k+1)/2;

scalaropt=optimset('fminunc');

scalaropt=optimset(scalaropt,'TolFun',1e-1,'Display','iter','Diagnostics','on','DiffMaxChange',1e-2);

startingparameters=scalar_bekk_mvgarch(data,p,q,scalaropt);

CChol=startingparameters(1:(k*(k+1))/2);

C=ivech(startingparameters(1:(k*(k+1))/2))*ivech(startingparameters(1:(k*(k+1))/2))';

newA=[];

newB=[];

for i=1:p

    newA=[newA diag(ones(k,1))*startingparameters(((k*(k+1))/2)+i)];

end

for i=1:q

    newB=[newB diag(ones(k,1))*startingparameters(((k*(k+1))/2)+i+p)];

end

newA=reshape(newA,k*k*p,1);

newB=reshape(newB,k*k*q,1);

startingparameters=[CChol;newA;newB];

if nargin<=3 | isempty(BEKKoptions)

    options=optimset('fminunc');

    options.Display='iter';

    options.Diagnostics='on';

    options.TolX=1e-4;

    options.TolFun=1e-4;

    options.MaxFunEvals=5000*length(startingparameters);

    options.MaxIter=5000*length(startingparameters);   

else

    options=BEKKoptions;

end

parameters=fminunc('full_bekk_mvgarch_likelihood',startingparameters,options,data,p,q,k,k2,t);

[loglikelihood,likelihoods,Ht]=full_bekk_mvgarch_likelihood(parameters,data,p,q,k,k2,t);

loglikelihood=-loglikelihood;

likelihoods=-likelihoods;

% Standardized residuals

stdresid=zeros(size(data));

for i=1:t

    stdresid(i,:)=data(i,:)*Ht(:,:,i)^(-0.5);

end

%Std Errors

if nargout>=6

    A=hessian_2sided('full_bekk_mvgarch_likelihood',parameters,data,p,q,k,k2,t);

    h=max(abs(parameters/2),1e-2)*eps^(1/3);

    hplus=parameters+h;

    hminus=parameters-h;

    likelihoodsplus=zeros(t,length(parameters));

    likelihoodsminus=zeros(t,length(parameters));

    for i=1:length(parameters)

        hparameters=parameters;

        hparameters(i)=hplus(i);

        [HOLDER, indivlike] = full_bekk_mvgarch_likelihood(hparameters,data,p,q,k,k2,t);

        likelihoodsplus(:,i)=indivlike;

    end

    for i=1:length(parameters)

        hparameters=parameters;

        hparameters(i)=hminus(i);

        [HOLDER, indivlike] = full_bekk_mvgarch_likelihood(hparameters,data,p,q,k,k2,t);

        likelihoodsminus(:,i)=indivlike;

    end

    scores=(likelihoodsplus-likelihoodsminus)./(2*repmat(h',t,1));

    B=cov(scores);

    A=A/t;

    stderrors=A^(-1)*B*A^(-1)*t^(-1);

end

然后出来的结果是这样

parameters =

   -0.5804

   -1.3458

   -0.1689

    2.2979

    0.0869

    0.1618

    1.1404

    0.2854

    0.0222

    0.0378

    1.0745

    0.0072

    0.0760

    0.1526

    1.0116

    0.0000

    0.0000

    0.0000

   -0.0000

    0.0000

    0.0000

   -0.0000

   -0.0000

0.0001

Ht

val(:,:,1) =

    0.3437    0.7849    0.1013

    0.7849    7.0938    0.4288

    0.1013    0.4288    0.0638

val(:,:,2) =

   34.0053   41.1017   27.9163

   41.1017   55.3789   33.7416

   27.9163   33.7416   23.0469

val(:,:,3) =

   34.0624   41.6003   28.0812

   41.6003   56.4968   34.2960

   28.0812   34.2960   23.2808

val(:,:,4) =

   33.8926   41.4722   27.8987

   41.4722   56.4355   34.1393

   27.8987   34.1393   23.0949

val(:,:,5) =

   33.8041   41.2873   27.4702

   41.2873   56.1174   33.5562

   27.4702   33.5562   22.4494

val(:,:,6) =

   33.9644   41.3480   27.2928

   41.3480   56.0301   33.2337

   27.2928   33.2337   22.0547

val(:,:,7) =

   34.2687   41.5123   27.1801

   41.5123   55.9848   32.9358

   27.1801   32.9358   21.6772

val(:,:,8) =

   34.6165   41.8540   28.2687

   41.8540   56.3040   34.1802

   28.2687   34.1802   23.2126

val(:,:,9) =

   34.7279   42.0222   28.2464

   42.0222   56.5474   34.1821

   28.2464   34.1821   23.1011

val(:,:,10) =

   34.8838   42.1895   28.6618

   42.1895   56.7245   34.6640

   28.6618   34.6640   23.6791

val(:,:,11) =

   34.5067   41.9003   28.2063

   41.9003   56.5736   34.2518

   28.2063   34.2518   23.1842

val(:,:,12) =

   34.2872   41.7850   28.0333

   41.7850   56.6148   34.1662

   28.0333   34.1662   23.0482

val(:,:,13) =

   34.2872   41.7767   28.1257

   41.7767   56.5946   34.2708

   28.1257   34.2708   23.2004

val(:,:,14) =

   34.2769   41.7343   28.0296

   41.7343   56.5073   34.1302

   28.0296   34.1302   23.0490

val(:,:,15) =

   34.5165   41.8314   28.0754

   41.8314   56.3937   34.0282

   28.0754   34.0282   22.9628

val(:,:,16) =

   34.6405   41.8935   28.1238

   41.8935   56.3643   34.0155

   28.1238   34.0155   22.9591

val(:,:,17) =

   34.4716   41.7853   27.9648

   41.7853   56.3478   33.9018

   27.9648   33.9018   22.8120

val(:,:,18) =

   34.5402   41.8332   28.1137

   41.8332   56.3639   34.0524

   28.1137   34.0524   23.0097

val(:,:,19) =

   34.5515   41.8867   28.3077

   41.8867   56.4763   34.3183

   28.3077   34.3183   23.3209

val(:,:,20) =

   34.4037   41.7846   28.0050

   41.7846   56.4444   34.0164

   28.0050   34.0164   22.9232

val(:,:,21) =

   34.8090   42.0257   28.2741

   42.0257   56.4394   34.1387

   28.2741   34.1387   23.0922

val(:,:,22) =

   34.3959   41.7580   27.9933

   41.7580   56.3917   33.9882

   27.9933   33.9882   22.9093

val(:,:,23) =

   34.1381   41.6266   28.0080

   41.6266   56.4497   34.1535

   28.0080   34.1535   23.1077

val(:,:,24) =

   33.5451   41.2177   27.8280

   41.2177   56.3302   34.1929

   27.8280   34.1929   23.2176

val(:,:,25) =

   33.2610   40.9830   27.4282

   40.9830   56.1802   33.7985

   27.4282   33.7985   22.7489

val(:,:,26) =

   33.5606   41.4775   27.6517

   41.4775   56.9416   34.1781

   27.6517   34.1781   22.9136

val(:,:,27) =

   33.8297   41.4955   27.5416

   41.4955   56.5848   33.7879

   27.5416   33.7879   22.5492

val(:,:,28) =

   35.0818   42.2619   28.2274

   42.2619   56.6142   34.0097

   28.2274   34.0097   22.8357

val(:,:,29) =

   35.5107   42.5064   28.3764

   42.5064   56.5887   33.9725

   28.3764   33.9725   22.7969

val(:,:,30) =

   35.4499   42.4587   28.2142

   42.4587   56.5613   33.7996

   28.2142   33.7996   22.5757

val(:,:,31) =

   35.0797   42.2332   28.2176

   42.2332   56.5489   33.9769

   28.2176   33.9769   22.8213

val(:,:,32) =

   33.8428   41.3958   27.6241

   41.3958   56.3234   33.7931

   27.6241   33.7931   22.6757

val(:,:,33) =

   34.2471   41.6559   27.8913

   41.6559   56.3616   33.9285

   27.8913   33.9285   22.8419

val(:,:,34) =

   29.9220   38.3825   26.1603

   38.3825   54.8814   33.5510

   26.1603   33.5510   23.0212

val(:,:,35) =

   34.2352   41.5762   27.9202

   41.5762   56.1868   33.9098

   27.9202   33.9098   22.8974

val(:,:,36) =

   33.4603   41.0648   27.5139

   41.0648   56.0835   33.7693

   27.5139   33.7693   22.7540

极大似然估计值

-517.556473556469

请问大侠们 为什么参数有24个?他们代表什么?C  A B 的矩阵数值没这么多啊?还有Ht的值为什么有36个?希望能得到解答

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-3-19 15:32:53
你应该是用3*36的序列做的garch(1,1),3*(3+1))/2+1*3^2+1*3^2=24,ht是矩阵,3*3,你好好研究下bekk的理论。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-20 21:39:32
caizz188 发表于 2012-3-19 15:32
你应该是用3*36的序列做的garch(1,1),3*(3+1))/2+1*3^2+1*3^2=24,ht是矩阵,3*3,你好好研究下bekk的理论 ...
嗯 是的 我的这个MATLAB的程序是直接下载下来用的没有自己编程过  这个是可以直接用还是需要改动啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-21 09:39:13
guizidongxi 发表于 2012-3-20 21:39
嗯 是的 我的这个MATLAB的程序是直接下载下来用的没有自己编程过  这个是可以直接用还是需要改动啊?
我原来想用matlab来做bekk的,后来我请教了epoh,他说matlab中没有系数的检验,我就转投winrats了,这个软件不错,做garch很全,也很简单,可以参考https://bbs.pinggu.org/forum.php? ... ;page=1#pid12323660
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-21 20:23:16
caizz188 发表于 2012-3-21 09:39
我原来想用matlab来做bekk的,后来我请教了epoh,他说matlab中没有系数的检验,我就转投winrats了,这个软 ...
对  不能系数检验 好的谢谢 我试试
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-3-21 20:31:46
另:我对这个软件不是很懂希望能加QQ咨询你一下 谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群