楼主: dustsky
5325 7

[实际应用] 为什么用EVEIWS和MATLAB估计EGARCH结果不一样 [推广有奖]

  • 0关注
  • 1粉丝

博士生

59%

还不是VIP/贵宾

-

威望
0
论坛币
209 个
通用积分
0
学术水平
7 点
热心指数
10 点
信用等级
8 点
经验
10235 点
帖子
69
精华
1
在线时间
421 小时
注册时间
2010-1-7
最后登录
2022-2-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我使用MATLAB的工具包中的EGARCH函数估计和在EVEIWS中估计的参数结果差很多,EVEIWS的OMEGA才0.3左右,而MATLAB中却达到-6,怎么办啊,是不是我使用MATLAB的方法不对啊?请高手解答啊
MATLAB使用UCSD GARCH包中的EGARCH函数估计,包中的EGARCH函数如下所示
function [parameters, likelihood, stderrors, robustSE, ht, scores]=egarch(data,p,o,q,errors, options, startingvals);
% PURPOSE:
%     E_GARCH(P,Q) parameter estimation with different error distributions, the Normal, The T,
%     and the Generalized Error Distribution
%
% USAGE:
%     [parameters, likelihood, stderrors, robustSE, ht, scores]=egarch(data,p,o,q,errors, options, startingvals);
%
% INPUTS:
%     data: A single column of zero mean random data, normal or not for quasi likelihood
%
%     P: Non-negative, scalar integer representing a model order of the ARCH
%        process
%
%     O: Number of assymetric terms to include
%
%     Q: Positive, scalar integer representing a model order of the GARCH
%        process: Q is the number of lags of the lagged conditional variances included
%        Can be empty([]) for ARCH process
%
%     error:  The type of error being assumed, valid types are:
%             'NORMAL' - Gaussian Innovations
%             'STUDENTST' - T-distributed errors
%             'GED' - General Error Distribution
%
%
%     startingvals: A (1+p+q) (plus 1 if STUDENTT OR GED is selected for the nu parameter) vector of starting vals.
%        If you do not provide, a naieve guess of 1/(2*max(p,q)+1) is used for the arch and garch parameters,
%        and omega is set to make the real unconditional variance equal
%        to the garch expectation of the expectation.
%
%     options: default options are below.  You can provide an options vector.  See HELP OPTIMSET
%
%
% OUTPUTS:
%     parameters : a [1+2*p+q X 1] column of parameters with omega, alpha1, alpha2, ..., alpha(p), absolute alpha(1),
%              absolute alpha(2), ... , absolute alpha(p), beta1, beta2, ... beta(q)
%
%     likelihood = the loglikelihood evaluated at he parameters
%
%     robustSE = QuasiLikelihood std errors which are robust to some forms of misspecification(see White 94)
%
%     stderrors = the inverse analytical hessian, not for quasi maximum liklihood
%
%     ht = the estimated time varying VARIANCES
%
%     scores = The numberical scores(# fo params by t) for M testing   
%
%
% COMMENTS:
%   EGARCH(P,Q) the following(wrong) constratins are used(they are right for the (1,1) case or any Arch case
%     (1) nu>2 of Students T and nu>1 for GED
%
%   The time-conditional variance, H(t), of a EGARCH(P,Q) process is modeled
%   as follows:
%
%     log h(t) = Omega + Alpha(1)*r_{t-1}/(sqrt(h(t-1))) + Alpha(2)*r_{t-2}/(sqrt(h(t-2))) +...
%                    + Alpha(P)*r_{t-p}/(sqrt(h(t-p)))+ Absolute Alpha(1)* abs(r_{t-1}/(sqrt(h(t-1)))) + ...
%                    + Absolute Alpha(P)* abs(r_{t-p}/(sqrt(h(t-p)))) +  Beta(1)* log(H(t-1))
%                    + Beta(2)*log(H(t-2))+...+ Beta(Q)*log(H(t-q))
%
%   Default Options
%   
%   options  =  optimset('fmincon');
%   options  =  optimset(options , 'TolFun'      , 1e-003);
%   options  =  optimset(options , 'Display'     , 'iter');
%   options  =  optimset(options , 'Diagnostics' , 'on');
%   options  =  optimset(options , 'LargeScale'  , 'off');
%   options  =  optimset(options , 'MaxFunEvals' , '400*numberOfVariables');
%
% Author: Kevin Sheppard
% kevin.sheppard@economics.ox.ac.uk
% Revision: 2    Date: 12/31/2001
t=size(data,1);
warning off
if strcmp(errors,'NORMAL') | strcmp(errors,'STUDENTST') | strcmp(errors,'GED')
   if strcmp(errors,'NORMAL')
      errortype = 1;
   elseif strcmp(errors,'STUDENTST')
      errortype = 2;
   else
      errortype = 3;
   end
else
   error('error must be one of the three strings NORMAL, STUDENTST, or GED');
end

if size(data,2) > 1
   error('Data series must be a column vector.')
elseif isempty(data)
   error('Data Series is Empty.')
end

if (length(q) > 1) | any(q < 0)
   error('Q must ba a single positive scalar or an empty vector for ARCH.')
end
if (length(p) > 1) | any(p <  0)
   error('P must be a single positive number.')
elseif isempty(p)
   error('P is empty.')
end
if isempty(q) | q==0;
   q=0;
   m=p;
else
   m  =  max(p,q);   
end

if nargin<6 | isempty(options)
   options  =  optimset('fmincon');
   options  =  optimset(options , 'TolFun'      , 1e-006);
   options  =  optimset(options , 'Display'     , 'iter');
   options  =  optimset(options , 'Diagnostics' , 'on');
   options  =  optimset(options , 'LargeScale'  , 'off');
   options  =  optimset(options , 'MaxFunEvals' , 400*(2+p+q)) ;
end

stdEstimate =  std(data,1);                     
data        =  [stdEstimate(ones(m,1)) ; data];  
T           =  size(data,1);                    
if nargin<7
   alpha  =  -.1*ones(p,1)/(p);
   talpha = .2*ones(o,1)/o;
   beta   =  .75*ones(q,1)/q;
   Omega  =  0;
   omega=Omega;
   LLFold=egarchEstLikelihood([Omega;alpha;talpha;beta], data, p ,o, q, T, stdEstimate, 1);
   for i=1:40
        Omega  =  log(std(data)/i);
        LLF=egarchEstLikelihood([Omega;alpha;beta], data, p ,o, q, T, stdEstimate, 1);
        if LLF<LLFold & LLF~=1e5;
            LLFold=LLF;
            omega=Omega;
        end
   end
   
        
   if strcmp(errors,'STUDENTST')
      nu  = 100;
   elseif strcmp(errors,'GED')
      nu = 2;
   else
      nu=[];
   end
else
   omega=startingvals(1);
   alpha=startingvals(2:p+1);
   talpha=startingvals(p+2:p+1+o);
   beta=startingvals(p+o+2:p+o+q+1);
end
LB         =  [];     
UB         =  [];     

if errortype == 1
   startingvals = [omega ; alpha ; talpha; beta];
else
   startingvals = [omega ; alpha ; talpha; beta; nu];
end

% Estimate the parameters.
[parameters, LLF,EXITFLAG,OUTPUT,GRAD] =  fminunc('egarchEstLikelihood', startingvals ,options, data, p ,o, q, T, stdEstimate, errortype);
if errortype ==2;
    nu = 2.1+parameters(p+o+q+2)^2;
    parameters(p+o+q+2) = nu;
elseif errortype ==3;
    nu = 1.05+parameters(p+o+q+2)^2;
    parameters(p+o+q+2) = nu;
end

if EXITFLAG<=0
   EXITFLAG
   fprintf(1,'Not Sucessful! \n')
end
[likelihood, ht]=egarchlikelihood(parameters,data,p,o,q,T,stdEstimate,errortype);
hess = hessian_2sided('egarchlikelihood',parameters,data,p,o,q,T,stdEstimate,errortype);
likelihood=-likelihood;
stderrors=hess^(-1);
if nargout > 4
   h=min(abs(parameters/2),max(parameters,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, HOLDER1, indivlike] = egarchlikelihood(hparameters,data,p,o,q,T,stdEstimate,errortype);
      likelihoodsplus(:,i)=indivlike;
   end
   for i=1:length(parameters)
      hparameters=parameters;
      hparameters(i)=hminus(i);
      [HOLDER, HOLDER1, indivlike] = egarchlikelihood(hparameters,data,p,o,q,T,stdEstimate,errortype);
      likelihoodsminus(:,i)=indivlike;
   end
   scores=(likelihoodsplus-likelihoodsminus)./(2*repmat(h',t,1));
   scores=scores-repmat(mean(scores),t,1);
   B=scores'*scores;
   robustSE=stderrors*B*stderrors;
end
warning on
二维码

扫码加我 拉你入群

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

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

关键词:Eveiws MATLAB EGARCH eveiw matla MATLAB 结果 Eveiws EGARCH

沙发
liuxin9023 发表于 2011-7-20 07:28:59 |只看作者 |坛友微信交流群
把代码贴出来 matlab里需要设置更多参数的 参数设置正确的话 两个应该相差不大猜对

使用道具

藤椅
lvxin2311 发表于 2011-8-8 09:40:34 |只看作者 |坛友微信交流群
Eviews里的EGARCH和Matlab中的可能不一样。EGARCH最早是Nelson提出的,我用Eviews做EGARCH的时候发现这里的模型和Nelson的不太一样。Eviews只选取了EGARCH模型中最精华的部分,还有很多模型细节的改进都没写进程序。然而Matlab可能将这些细节提升都实现了,所以结果不太一样。~~我用的是EVIEWS5.0,其他版本我没看过~
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
dustsky + 1 + 1 + 1 xiexie

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

这个函数我怎么跑不通呢?请问你参数怎么输入的?
options  =  optimset('fmincon');
startingvals=[0.5,0.5,0.5];
[parameters, likelihood, stderrors, robustSE, ht, scores]=egarch(inputSeries,1,1,1,'NORMAL', startingvals);

出现以下的问题:
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> egarchcore at 27
    h(t) = exp(parameters' * [1 ; data(t-(1:p))./sqrt(h(t-(1:p)));
    abs(data(t-(1:o)))./sqrt(h(t-(1:o))); log(h(t-(1:q)))]);

Error in ==> egarchEstLikelihood at 65
h=egarchcore(data, parameters, stdEstimate, p, o, q ,m , T);

Error in ==> egarch at 130
        LLF=egarchEstLikelihood([Omega;alpha;beta], data, p ,o, q, T, stdEstimate, 1);

使用道具

报纸
shenmeng124 发表于 2014-5-28 15:34:38 |只看作者 |坛友微信交流群
请高手解答,我也在研究这个程序!

使用道具

地板
紫羽馨宸 学生认证  发表于 2014-5-29 16:01:57 |只看作者 |坛友微信交流群
心声聆听┌ 发表于 2014-3-1 23:28
这个函数我怎么跑不通呢?请问你参数怎么输入的?
options  =  optimset('fmincon');
startingvals=[0.5, ...
这个函数问题解决了吗?我的也出现这个问题了

使用道具

7
2200801056 学生认证  发表于 2014-8-8 19:08:05 |只看作者 |坛友微信交流群
也碰到相同问题,求解!

使用道具

8
Egrach 发表于 2014-9-12 20:28:00 来自手机 |只看作者 |坛友微信交流群
dustsky 发表于 2011-7-19 15:47
我使用MATLAB的工具包中的EGARCH函数估计和在EVEIWS中估计的参数结果差很多,EVEIWS的OMEGA才0.3左右,而MA ...
请问eviews中的egarch怎么用的!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 07:38