⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 becm_g.m

📁 计量工具箱
💻 M
字号:
function results = becm_g(y,nlag,prior,ndraw,nomit,r)% PURPOSE: Gibbs sampling estimates for Bayesian error correction %          model using Minnesota-type prior%          dy = A(L) DY  + E, E = N(0,sige*V), %          V = diag(v1,v2,...vn), rval/vi = ID chi(rval)/rval, rval = Gamma(m,k)%          c = R A(L) + U, U = N(0,Z), Minnesota prior%---------------------------------------------------% USAGE: result = becm(y,nlag,prior,ndraw,nomit,r) % where:    y    = an (nobs x neqs) matrix of y-vectors in levels%           nlag = the lag length%          prior = a structure variable%               prior.weight, Litterman's weight (matrix or scalar)%               prior.decay,  Litterman's lag decay = lag^(-decay) %               prior.rval, rval prior hyperparameter, default=4%               prior.m,    informative Gamma(m,k) prior on r%               prior.k,    informative Gamma(m,k) prior on r  %          ndraw = # of draws%          nomit = # of initial draws omitted for burn-in       %           r    = # of cointegrating relations to use%                  (optional: this will be determined using%                  Johansen's trace test at 95%-level if left blank)                                    % NOTES: - constant vector automatically included%        - error correction variables are automatically%          constructed using output from Johansen's ML-estimator %---------------------------------------------------% RETURNS a structure% results.meth  = 'becm_g'% results.nobs  = nobs, # of observations% results.neqs  = neqs, # of equations% results.nlag  = nlag, # of lags% results.nvar  = nlag*neqs+nx+1, # of variables per equation% results.coint = # of co-integrating relations (or r if input)% results.tight = tightness hyperparameter% results.weight= weight matrix or scalar% results.decay = lag decay hyperparameter% results.m  = prior m-value for r hyperparameter (if input)% results.k  = prior k-value for r hyperparameter (if input)% results.r  = value of hyperparameter r (if input)% results.ndraw  = # of draws% results.nomit  = # of initial draws omitted% results.x      = cointegrating variables matrix (nobs x nx)% results.nx     = # of cointegrating relations% --- the following are referenced by equation # --- % results(eq).bdraw = bhat draws for equation eq% results(eq).vmean = mean of vi draws for equation eq % results(eq).sdraw = sige draws for equation eq% results(eq).rdraw = r-value draws for eq, if Gamma(m,k) prior % results(eq).y     = actual observations for eq (nobs x 1)% results(eq).dy    = actual y in 1st difference form (nobs-1 x 1)% results(eq).time  = time taken for sampling eq% ---------------------------------------------------    %  SEE ALSO: bvar_g, rvar_g, recm_g, prt_varg % ---------------------------------------------------%  References: James P. LeSage, % ``A Comparison of the Forecasting Ability of ECM and VAR Models'',%  Review of Economics and Statistics,  1990, Vol 72, number 4, pp. 664-671.% written by:% James P. LeSage, Dept of Economics% University of Toledo% 2801 W. Bancroft St,% Toledo, OH 43606% jpl@jpl.econ.utoledo.edu[nobs neqs] = size(y);nx = 0;% error checking on inputif ~isstruct(prior)    error('becm_g: must supply the prior as a structure variable');end;if nargin == 6 % user is specifying the # of error correction terms to             % include -- get them using johansen() jres = johansen(y,0,nlag); % recover error correction vectors ecvectors = jres.evec;   index = jres.ind; % construct r-error correction variables x = mlag(y(:,index),1)*ecvectors(:,1:r);    [nobs2 nx] = size(x);   elseif nargin == 5 % we need to find r jres = johansen(y,0,nlag); % find r = # significant co-integrating relations using % the trace statistic output trstat = jres.lr1; tsignf = jres.cvt; r = 0; for i=1:neqs;  if trstat(i,1) > tsignf(i,2)   r = i;  end; end; % recover error correction vectors ecvectors = jres.evec;   index = jres.ind; % construct r error correction variables x = mlag(y(:,index),1)*ecvectors(:,1:r);    [junk nx] = size(x);    else error('Wrong # of arguments to becm_g');end;fields = fieldnames(prior);nf = length(fields);mm = 0; rval = 4; % rval = 4 is defaultnu = 0; d0 = 0; % default to a diffuse prior on sigefor i=1:nf    if strcmp(fields{i},'rval')        rval = prior.rval;     elseif strcmp(fields{i},'m')        mm = prior.m;        kk = prior.k;        rval = gamm_rnd(1,1,mm,kk);    % initial value for rval    elseif strcmp(fields{i},'tight')        tight = prior.tight;        if tight < 0.01        warning('Tightness less than 0.01 in becm_g');        elseif tight > 1.0        warning('Tightness greater than unity in becm_g');        end;    elseif strcmp(fields{i},'weight')        weight = prior.weight;              [wchk1 wchk2] = size(weight);       if (wchk1 ~= wchk2)        error('non-square weight matrix in becm_g');       elseif wchk1 > 1        if wchk1 ~= neqs        error('wrong size weight matrix in becm_g');        end;       end;    elseif strcmp(fields{i},'decay')        decay = prior.decay;            if decay < 0        error('Negative lag decay in becm_g');        end;           end;end;if nlag < 1error('Lag length less than 1 in becm_g');end;[nobs nvar] = size(x);if nlag > nobserror('Lag length exceeds observations in becm_g');end;% nvar adjusted for constant term  k = neqs*nlag+nx+1; nvar = k;% transform to 1st difference formdy = tdiff(y,1);dy = trimr(dy,1,0); % account for differencingx = trimr(x,1,0);   % account for differencing% pass prior structure variable in call to bvar_g% call BVAR using 1st difference and co-integrating variables% call depends on whether we have an x-matrix or notif nx ~= 0 results = bvar_g(dy,nlag,ndraw,nomit,prior,x);elseresults = bvar_g(dy,nlag,ndraw,nomit,prior);end;nobst = length(x);results(1).meth = 'becm_g';results(1).coint = nx;results(1).index = index;if nx > 0results(1).x = x;end;% delete results.nx fieldname returned by bvar_gfor j=1:neqs;results(j).y = y(:,j);results(j).dy = dy(:,j);end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -