精华内容
下载资源
问答
  • Jouchi Nakajima 2013 的TVP-VAR模型的OX代码
  • Koop大神写出来的时变向量自回归模型的进化版,希望对大神写作有帮助。
  • NAKAJIMA的TVP-SV-VAR模型,希望对大家了解时变向量自回归有帮助。
  • TVP-VAR模型matlab代码
  • 贝叶斯_TVPVAR TVP-VAR模型的贝叶斯估计 此仓库包含有关如何使用TVP-VAR模型进行贝叶斯分析的信息。 在深入研究代码之前,您应该看一下Bayes_TVPVAR_Presentation文件。 这将使您对TVP-VAR与常规VAR模型有何不同...
  • TVP-VAR模型的MATLAB代码

    2019-05-18 11:05:20
    TVP-VAR模型的MATLAB代码,修改变量与数据可以直接运行,很方便!
  • 9(Tvp-var model matlab code and self-study manual
  • NAKAJIMA2020年5月的最新版本,删除了a2检验,希望有人可以解答一下原因。
  • 【数学建模】基于matlab时变参数随机波动率向量自回归模型(TVP-VAR)【含Matlab源码 037期】.zip
  • 包含了目前主流的时变参数向量自回归模型代码以及文献
  • tvp var_tvp-var_tvpvar参考书籍_tvp模型_tvpvar代码_var.zip
  • TVPVAR-新.zip

    2020-04-14 11:29:26
    tvp-var模型,matlab代码。直接改数据就可以使用,nakajima的原包。内附pdf教程。
  • tvp var_tvp-var_tvpvar参考书籍_tvp模型_tvpvar代码_var_源码.zip
  • 用OX软件做TVP-VAR模型的代码与一篇理论论文
  • TVP-VAR:Time Varying Parameter-Stochastic Volatility-Vector Auto Regression。时变参数随机波动率向量自回归模型,与VAR 不同的是,模型没有同方差的假定,更符合实际。并且时变参数假定随机波动率,更能捕捉到...

    一、获取代码方式

    获取代码方式1:
    完整代码已上传我的资源:【数学建模】基于matlab时变参数随机波动率向量自回归模型(TVP-VAR)【含Matlab源码 037期】

    获取代码方式2:
    通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

    备注:
    订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

    二、部分源代码

    %==================================4.1 Main================================
    clear;
    clc;
     
    % Load Korobilis (2008) quarterly data
    load ydata.dat; % data 
    load yearlab.dat; % data labels 
     
    %%
    %----------------------------------BASICS----------------------------------
     
     
    Y=ydata;
    t=size(Y,1);        % t - The total number of periods in the raw data (t=215)
    M=size(Y,2);        % M - The dimensionality of Y (i.e. the number of variables)(M=3)
    tau = 40;           % tau - the size of the training sample (the first forty quarters)
    p = 2;              % p - number of lags in the VAR model 
     
    %% Generate the Z_t matrix, i.e. the regressors in the model. 
     
    ylag = mlag2(Y,p);          % This function generates a 215x6 matrix with p lags of variable Y. 
    ylag = ylag(p+tau+1:t,:);   % Then remove our training sample, so now a 173x6 matrix. 
     
    K = M + p*(M^2);            % K is the number of elements in the state vector
     
    % Here we distribute the lagged y data into the Z matrix so it is
    % conformable with a beta_t matrix of coefficients. 
     
    Z = zeros((t-tau-p)*M,K);   
    for i = 1:t-tau-p
        ztemp = eye(M);
        for j = 1:p        
            xtemp = ylag(i,(j-1)*M+1:j*M); 
            xtemp = kron(eye(M),xtemp);
            ztemp = [ztemp xtemp];
        end
        Z((i-1)*M+1:i*M,:) = ztemp;
    end
     
    % Redefine our variables to exclude the training sample and the first two
    % lags that we take as given, taking total number of periods (t) from 215 
    % to 173. 
     
    y = Y(tau+p+1:t,:)';
    yearlab = yearlab(tau+p+1:t);
    t=size(y,2); % t now equals 173
     
    %% --------------------MODEL AND GIBBS PRELIMINARIES-----------------------
     
    nrep = 5000;    % Number of sample draws 
    nburn = 2000;   % Number of burn-in-draws
    it_print = 100; % Print in the screen every "it_print"-th iteration
     
     
    %% INITIAL STATE VECTOR PRIOR  
     
    % We use the first 40 observations (tau) to run a standard OLS of the
    % measurement equation, using the function ts_prior. The result is
    % estimates for priors for B_0 and Var(B_0). 
     
    [B_OLS,VB_OLS]= ts_prior(Y,tau,M,p);
     
    % Given the distributions we have, we now have to define our priors for B,
    % Q and Sigma. These are set in accordance with how they are set in 
    % Primiceri (2005). These are the hyperparameters of the beta, Q and Sigma
    % initial priors. 
     
    B_0_prmean = B_OLS;
    B_0_prvar = 4*VB_OLS; 
     
    Q_prmean = ((0.01).^2)*tau*VB_OLS;
    Q_prvar = tau;
     
    Sigma_prmean = eye(M);
    Sigma_prvar = M+1;
     
    % To start the Kalman filtering assign arbitrary values that are in support
    % of their priors, Q and Sigma. 
     
    consQ = 0.0001;
    Qdraw = consQ*eye(K);
    Sigmadraw = 0.1*eye(M);
     
    % Create some matrices for storage that will be filled in once we
    % start the Gibbs sampling.
     
    Btdraw = zeros(K,t); 
    Bt_postmean = zeros(K,t);
    Qmean = zeros(K,K);
    Sigmamean = zeros(M,M);
     
    %% -------------------------IRF-PRELIMINARIES------------------------------
    nhor = 21;     % The number of periods in the impulse response function. 
     
    % Matricies to be filled containing IRFs for 1975q1, 1981q3, 1996q1. The 
    % dimensions correspond to the iterations of the gibbs sample, each of the
    % variables, and each of the 21 periods of the IRF analysis. 
     
    imp75 = zeros(nrep,M,nhor); 
    imp81 = zeros(nrep,M,nhor);
    imp96 = zeros(nrep,M,nhor);
     
    % This corresponds to variable J introduced in equation (14) in the report
     
    bigj = zeros(M,M*p); 
    bigj(1:M,1:M) = eye(M);
     
     
    %% ================ START GIBBS SAMPLING ==================================
     
    tic; % This is just a timer
    disp('Number of iterations');
     
     
    for irep = 1:nrep + nburn    % 7000 gibbs iterations starts here
        % Print iterations - this just updates on the progress of the sampling
        if mod(irep,it_print) == 0
            disp(irep);toc;
        end
        
    %% Draw 1: B_t from p(B_t|y,Sigma)
        
        % We use the function 'carter_kohn_hom' to to run the FFBS algorithm. 
        % This results in a 21x173 matrix, corresponding to one Gibbs sample
        % draw of each of the coefficients in each time period. The inputs
        % Sigmadraw and Qdraw are updated for each Gibbs sample repetition.
        
        [Btdraw] = carter_kohn_hom(y,Z,Sigmadraw,Qdraw,K,M,t,B_0_prmean,B_0_prvar);
        
      
    %% Draw 2: Q from p(Q^{-1}|y,B_t) which is i-Wishart
     
        % We draw Q from an Inverse Wishart distribution. The parameters 
        % of the distribution are derived as equation (11) in the main report.
        % The mean is taken as the inverse of the accumulated sum of squared 
        % errors added to the prior mean, and the variance is simply t.  
        
        % Differencing Btdraw to create the sum of squared errors
        
        Btemp = Btdraw(:,2:t)' - Btdraw(:,1:t-1)'; 
        sse_2Q = zeros(K,K);
        for i = 1:t-1
            sse_2Q = sse_2Q + Btemp(i,:)'*Btemp(i,:);
        end
     
        Qinv = inv(sse_2Q + Q_prmean);      % compute mean to use for Wishart draw
        Qinvdraw = wish(Qinv,t+Q_prvar);    % draw inv q from the wishart distribution
        Qdraw = inv(Qinvdraw);              % find non-inverse q 
        
    %% Draw 3: Sigma from p(Sigma|y,B_t) which is i-Wishart
     
        % We draw Sigma from an Inverse Wishart distribution. The parameters 
        % of the distirbution are derived as equation (10) in the main report. 
        % The mean is taken as the inverse of the sum of squared residuals
        % added to the prior mean. The variance is simply t. 
        
        % Find residuals using data and the current draw of coefficients
        
        resids = zeros(M,t);
        for i = 1:t
            resids(:,i) = y(:,i) - Z((i-1)*M+1:i*M,:)*Btdraw(:,i);
        end
        
        % Create a matrix for the accumulated sum of squared residuals, to
        % be used as the mean parameter in the i-Wishart draw below. 
        sse_2S = zeros(M,M);
        for i = 1:t
            sse_2S = sse_2S + resids(:,i)*resids(:,i)';
        end
        
        Sigmainv = inv(sse_2S + Sigma_prmean);          % compute mean to use for the Wishart
        Sigmainvdraw = wish(Sigmainv,t+Sigma_prvar);    % draw from the Wishsart distribution
        Sigmadraw = inv(Sigmainvdraw);                  % turn into non-inverse Sigma
        
    %% IRF 
        % We only apply IRF analysis once we have exceeded the burn-in draws phase.
        if irep > nburn;         
                
                % Create matrix that is going to contain all beta draws over
                % which we will take the mean after the Gibbs sampler as our moment
                % estimate: 
                Bt_postmean = Bt_postmean + Btdraw;
                
                % biga is the A matrix of the VAR(1) version of our VAR(2) model, 
                % found in equation (12. biga changes in every period of the 
                % analysis, because the coefficients are time varying, so we 
                % apply the analysis below in every time period. 
                
                biga = zeros(M*p,M*p); 
                for j = 1:p-1
                    biga(j*M+1:M*(j+1),M*(j-1)+1:j*M) = eye(M); % fill the A matrix with identity matrix (3) in bottom left corner
                end
     
                % The following procedure is applied separately in each time period. 
                
                % This loop takes coefficients of the relevant time period from
                % Bt_draw (which contains all coefficients for all t) and uses
                % them to update the biga matrix, so that it can change for
                % every t. 
                
                for i = 1:t 
                    bbtemp = Btdraw(M+1:K,i);  % get the draw of B(t) at time i=1,...,T  (exclude intercept)
                    splace = 0;
                    for ii = 1:p
                        for iii = 1:M
                            biga(iii,(ii-1)*M+1:ii*M) = bbtemp(splace+1:splace+M,1)'; % Load non-intercept coefficient draws
                            splace = splace + M;
                        end
                    end
                    
                    % Next we want to create a shock matrix in which the third
                    % column is [0 0 1]', therefore implementing a unit shock
                    % in the interest rate. 
                    
                    shock = eye(3);
                    
                    % Now get impulse responses for 1 through nhor future
                    % periods. impresp is a 3x63 matrix which contains 9
                    % response values in total for each period, 3 for each 
                    % variable. These three responses correspond to the 3
                    % possible shocks that are contained in the schock
                    % matrix
                    
                    % bigai is updated through mulitiplication with the 
                    % coefficient matrix after each time period. 
                                    
                    % Create a results matrix to store impulse responses in all periods
                    impresp = zeros(M,M*nhor); 
                    
                    % Fill in the first period of the results matrix with the shock (as defined above) 
                    impresp(1:M,1:M) = shock;
                    
                    % Create a separate variable for the a matrix so that we
                    % can update it for each period of the IRF analysis. 
                    bigai = biga; 
                    
                    % This follows the impulse response function as in equation 15.
                    % Fill in each period of the results matrix according to
                    % the impulse response function formula. 
                    
                    for j = 1:nhor-1
                        impresp(:,j*M+1:(j+1)*M) = bigj*bigai*bigj'*shock;
                        bigai = bigai*biga; % update the coefficient matrix for next period
                    end
     
                    % The section below keeps only the responses that we are interested in:
                    % - those from the periods 1975q1, 1981q3, and 1996q1
                    % - those that correspond to the shock in the interest 
                    % rate (i.e. those caused by the third column of our shock
                    % matrix). 
                    
                    if yearlab(i,1) == 1975.00;   % store only IRF from 1975:Q1
                        impf_m = zeros(M,nhor);
                        jj=0;
                        for ij = 1:nhor
                            jj = jj + M;    % select only the third column for each time period of the IRF
                            impf_m(:,ij) = impresp(:,jj);
                        end           
                    % For each iteration of the Gibbs sampler, fill in the
                    % results along the first dimension 
                        imp75(irep-nburn,:,:) = impf_m; 
                    end
                    
                    if yearlab(i,1) == 1981.50;   % store only IRF from 1981:Q3
                        impf_m = zeros(M,nhor);
                        jj=0;
                        for ij = 1:nhor
                            jj = jj + M;    % select only the third column for each time period of the IRF
                            impf_m(:,ij) = impresp(:,jj);
                        end
                    % For each iteration of the Gibbs sample, fill in the
                    % results along the first dimension 
                        imp81(irep-nburn,:,:) = impf_m; 
                    end
                    
                    if yearlab(i,1) == 1996.00;   % store only IRF from 1996:Q1
                        impf_m = zeros(M,nhor);
                        jj=0;
                        for ij = 1:nhor
                            jj = jj + M;    % select only the third column for each time period of the IRF
                            impf_m(:,ij) = impresp(:,jj);
                        end
                    % For each iteration of the Gibbs sample, fill in the
                    % results along the first dimension 
                        imp96(irep-nburn,:,:) = impf_m; 
                    end
                end % End getting impulses for each time period 
            end % End the impulse response calculation section   
    end % End main Gibbs loop (for irep = 1:nrep+nburn)
     
    clc;
    toc; % Stop timer and print total time
    %% ================ END GIBBS SAMPLING ==================================
     
    % Even though it is not used in our IRF analysis since we are integrating
    % that into the Gibbs sampling loop, here is how to take the mean of the 
    % draw of the betas as moment estimate:
     
    Bt_postmean = Bt_postmean./nrep;
     
    %% Graphs and tables
     
    % This works out the percentage range of that each variable's coefficient
    % spans across time. I.e. to what extent was the TVP facility used by each
    % variable in the model? This is calculated by finding the range for each
    % variable as a percentage of the mean coefficient size for that variable.
    % The result is a 21x1 vector, and it is reshaped into a 3x7 matrix in order
    % to map onto the system of equations (2,3,and 4) set out in the report.
     
    Bt_range = ones(21,1)
    for i = 1:21
        Bt_range(i) = abs((max(Bt_postmean(i,:))-min(Bt_postmean(i,:)))/mean(Bt_postmean(i,:)))
    end 
    Bt_range = reshape(Bt_range,3,7)
     
    % Create a table of coefficient ranges for export to the report
     
    rowNames = {'Inflation','Unemployment','Interest Rate'};
    colNames = {'Intercept','Inf_1','Unemp_1', 'IR_1','Inf_2','Unemp_2', 'IR_2'};
    pc_change_table = array2table(Bt_range,'RowNames',rowNames,'VariableNames',colNames)
     
    writetable(pc_change_table,'pc_change.csv')
     
    % Now plot a separate chart for each of the coefficients
     
    figure
    for i = 1:21       
        subplot(7,3,i)
        plot(1:t,Bt_postmean(i,:))  
    end 
     
    % Now we move to plotting the IRF. This section takes moments along the
    % first dimension, i.e. across the Gibbs sample iterations. The moments
    % are for the 16th, 50th and 84th percentile. 
     
        qus = [.16, .5, .84];
        imp75XY=squeeze(quantile(imp75,qus)); 
        imp81XY=squeeze(quantile(imp81,qus));
        imp96XY=squeeze(quantile(imp96,qus));
        
        % Plot impulse responses
        figure       
        set(0,'DefaultAxesColorOrder',[0 0 0],...
            'DefaultAxesLineStyleOrder','--|-|--')
        subplot(3,3,1)
        plot(1:nhor,squeeze(imp75XY(:,1,:)))
        title('Impulse response of inflation, 1975:Q1')
        xlim([1 nhor])
        ylim([-0.2 0.1])
    %    % yline(0)
        set(gca,'XTick',0:3:nhor)
        subplot(3,3,2)
        plot(1:nhor,squeeze(imp75XY(:,2,:)))
        title('Impulse response of unemployment, 1975:Q1')
        xlim([1 nhor])
        ylim([-0.2 0.2])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,3)
        %ylim([0 1])
    %    % yline(0)
        plot(1:nhor,squeeze(imp75XY(:,3,:)))
        title('Impulse response of interest rate, 1975:Q1')
        xlim([1 nhor])
        %ylim([-0.3 0.1])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,4)
        plot(1:nhor,squeeze(imp81XY(:,1,:)))
        title('Impulse response of inflation, 1981:Q3')
        xlim([1 nhor])
        ylim([-0.2 0.1])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,5)
        plot(1:nhor,squeeze(imp81XY(:,2,:)))
        title('Impulse response of unemployment, 1981:Q3')
        xlim([1 nhor])
        ylim([-0.2 0.2])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,6)
        plot(1:nhor,squeeze(imp81XY(:,3,:)))
        title('Impulse response of interest rate, 1981:Q3')
        xlim([1 nhor])
        %ylim([-0.4 0.1])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,7)
        plot(1:nhor,squeeze(imp96XY(:,1,:)))
        title('Impulse response of inflation, 1996:Q1')
        xlim([1 nhor])
        ylim([-0.2 0.1])
       % yline(0)
        set(gca,'XTick',0:3:nhor)    
        subplot(3,3,8)
        plot(1:nhor,squeeze(imp96XY(:,2,:)))
        title('Impulse response of unemployment, 1996:Q1')
        xlim([1 nhor])
        ylim([-0.2 0.2])
       % yline(0)
        set(gca,'XTick',0:3:nhor)
        subplot(3,3,9)
        plot(1:nhor,squeeze(imp96XY(:,3,:)))
        title('Impulse response of interest rate, 1996:Q1')
        xlim([1 nhor])
         %ylim([0 1])
        % yline(0)
        set(gca,'XTick',0:3:nhor)
        
    disp('             ')
    disp('To plot impulse responses, use:         plot(1:nhor,squeeze(imp75XY(:,VAR,:)))           ')
    disp('             ')
    disp('where VAR=1 for impulses of inflation, VAR=2 for unemployment and VAR=3 for interest rate')
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1]李昕.MATLAB数学建模[M].清华大学出版社.2017
    [2]王健,赵国生.MATLAB数学建模与仿真[M].清华大学出版社.2016
    [3]余胜威.MATLAB数学建模经典案例实战[M].清华大学出版社.2015

    展开全文
  • TVP-VAR:时变参数向量自回归模型

    千次阅读 2021-08-01 16:42:47
    TVP-VAR 基本原理 3. matlab 命令 4. TVP-VAR 模型的应用 4.1 模型估计结果 4.2 等间距脉冲响应结果 4.3 分时点脉冲响应 5. 参考文献 1. VAR 模型的介绍 我们在利用计量经济模型做实证分析时,通常会以...

    原文链接:https://www.lianxh.cn/news/eae89f78353d4.html

    目录

    1. VAR 模型的介绍

    我们在利用计量经济模型做实证分析时,通常会以某个经济理论为依据,在此基础上借助计量模型刻画经济变量之间结构上的关系。事实上,对于实际经济中的某些问题,我们可能并不关心经济变量之间的结构关系,而是关注变量之间的动态变化关系。此外,在一个方程组中,有的变量 (内生变量) 可能会同时出现在方程的左右两边,分别作为被解释变量和解释变量。在估计这类模型时,要求方程组中的方程是可识别的 (恰好识别或过度识别) ,这就给估计和推断带来了一定难度。为了达到识别的目的,我们常常要假定某些外生变量或前定变量仅出现在某些方程中。

    Sims (1980) 认为,我们为了达到识别目的所做的主观的假定往往是不可靠的,当一组变量确实存在真实的联立关系,同时我们无法判断其中的变量是否为外生变量时,原则上这些变量都应该被平等地对待,在回归之前,人为划分内生变量和外生变量的做法是不恰当的。出于这方面的考虑,Sims (1980) 提出了向量自回归模型 (VAR) 。举一个简单的例子,在两个变量的情况下,假定  受到现在和过去  的影响,并且  受到现在和过去  的影响,我们可以通过变换,将上述关系写成以下形式:

    这就是 VAR 模型的一般标准形式,对于这个模型我们可以利用 OLS 进行估计。

    原文链接:https://www.lianxh.cn/news/eae89f78353d4.html

    展开全文
  • DMA-TVP-FAVAR

    2018-09-04 16:43:41
    设置 l_3=1 (离开 l_1 = l_2 = 0.96, l_4 = 0.99) 给出了 FA TVP VAR, 而设置 l_3 = l_4 = 1 (离开 l_1 = l_2 = 0.96) 给你 heteroskedastic FAVAR。您还可以通过将所有遗忘因子设置为1来获得 homoscedastic FAVAR, ...
  • tvpvar_ox.zip

    2021-05-04 13:07:49
    TVPVAR oxmetrics包,内附中文说明,直接生成脉冲图,无需保存,可以做3-5变量
  • 北北京京市市银银行行业业科科技技金金融融业业务务支支持持科科技技创创新新的的研研究究 基基于于TVP-VAR模模型型的的实实证证检检验验 下下 2020年01月08 相应的 科技创新对科技金融也会起到一定的推动作用 一...
  • 基于TVP-VAR模型的动态溢出指数的计算R代码
  • 基于SV-TVP模型的中国通货膨胀波动特征分析,刘弥然,王斌会,本文构建SV-TVP模型进行1978~2016年中国通货膨胀进行动态变化分析,即分析其持续性与结构突变特征,并同时构建贝叶斯因子来进行时变性
  • 为什么我看的论文中都是曲线,而我做的第三行那个图是直方图呢?需要自己改应该怎么改呢
  • 向量自回归和误差修正模型PPT
  • VAR模型使用指导

    2018-11-06 14:14:06
    VAR模型使用指导,方法介绍,原理说明,还有案例分析,软件使用等
  • Jouchi Nakajima 2013 的TVP-VAR模型的OX代码
  • 读书笔记 最近看到有小伙伴留言FAVAR模型,我之前也没接触过这个模型,然后拜读了下面这篇文章,写下简略的读书笔记。希望各位小伙伴批评指正...中国货币政策的动态有效性研究–基于 TVP-SV-FAVAR 模型的实证分析 ...

    最近看到有小伙伴留言FAVAR模型,我之前也没接触过这个模型,然后拜读了下面这篇文章,写下简略的读书笔记。希望各位小伙伴批评指正,一起学习!

    【公众号】:经济知识综合


    中国货币政策的动态有效性研究–基于 TVP-SV-FAVAR 模型的实证分析

    1. 引言

    文章创新点:

    1. 采用TVP-SV-FAVAR 模型,将中国经济发展过程中的结构突变特征考虑在内。并对货币政策的动态有效性进行研究,
    2. 分别对数量型货币政策和价格型货币政策对宏观经济的调控进行研究,最终发现两种货币政策的影响机制有所不同。
    3. 对“价格之谜”有一定的解释力度。

    这篇文章的引言层层递进,抓住了主要问题,从我国的经济发展出发,说明我国的经济结构和宏观调控的结构性变革,同时将货币政策的有效性及其动态变化考虑在内,因此作者选用TVP-SV-FAVAR模型,对中国货币政策的有效性及其特征变化进行实证分析。

    在文献综述部分,作者首先针对货币政策的有效性进行讨论 ,部分学者认为货币政策是中性的,即货币政策对经济发展没有显著影响,部分学者对1978-2000年和1994-2010年的中国货币政策有效性进行实证,结论均支持长期货币中性。然而,更多的学者持货币政策“非中性”的观点,认为货币政策对于经济系统具有重要的调控作用。

    然后作者针对货币政策的传导机制展开讨论,Taylor 认为利率是唯一能够与物价和经济增长保持长期稳定关系的变量,这表明利率与物价和经济增长之间存在着协整关系,调整利率应该成为货币当局的主要操作方式。Meltzer(1995)货币政策能够改变资产价格, 从而引起需求和产出改变。周英章和蒋振声(2002)认为中国的货币政策是通过信贷渠道和货币渠道的共同传导发挥作用的, 相比之下信贷渠道占主导地位。

    然后作者分析了TVP-SV-FAVAR 模型对于现有问题的实用性。

    2. 模型设定:

    2.1 SVAR模型

    y t \boldsymbol{y}_{t} yt K × 1 K \times 1 K×1阶的观察变量, A , F 1 , … , F s   A, F_{1}, \ldots, F_{s}~ A,F1,,Fs  K × K K \times K K×K阶系数矩阵, u t u_{t} ut K × 1 K \times 1 K×1阶的结构扰动,假定 $ u t ∼ N ( 0 , Σ Σ ) u_{t} \sim N(0, \Sigma \Sigma) utN(0,ΣΣ)

    A y t = F 1 y t − 1 + ⋯ + F s y t − s + u t , t = s + 1 , … , n A \boldsymbol{y}_{t} = F_{1} \boldsymbol{y}_{t-1}+\cdots+F_{s} \boldsymbol{y}_{t-s}+u_{t}, \quad t=s+1, \ldots, n Ayt=F1yt1++Fsyts+ut,t=s+1,,n

    通过递归识别来具体结构扰动之间的同步关系,假定 A A A是下三角阵,这涉及到SVAR系统的理论机制设置,A矩阵左乘以 y t {y}_{t} yt来描述 y t {y}_{t} yt内部的同期影响。

    Σ = ( σ 1 0 ⋯ 0 0 ⋱ ⋱ ⋮ ⋮ ⋱ ⋱ 0 0 ⋯ 0 σ k ) \Sigma=\left(\begin{array}{cccc} \sigma_{1} & 0 & \cdots & 0 \\ 0 & \ddots & \ddots & \vdots \\ \vdots & \ddots & \ddots & 0 \\ 0 & \cdots & 0 & \sigma_{k} \end{array}\right) Σ=σ1000000σk A = ( 1 0 ⋯ 0 a 21 ⋱ ⋱ ⋮ ⋮ ⋱ ⋱ 0 a k 1 ⋯ a k , k − 1 1 ) A=\left(\begin{array}{cccc} 1 & 0 & \cdots & 0 \\ a_{21} & \ddots & \ddots & \vdots \\ \vdots & \ddots & \ddots & 0 \\ a_{k 1} & \cdots & a_{k, k-1} & 1 \end{array}\right) A=1a21ak10ak,k1001

    Reduced Form of VAR Model:,直接求解SAVR,不易求解,需转化为Reduced Form,这就需要判断A矩阵是否可逆

    y t = B 1 y t − 1 + ⋯ + B s y t − s + A − 1 Σ ε t , ε t ∼ N ( 0 , I k ) \boldsymbol{y}_{t}=B_{1} \boldsymbol{y}_{t-1}+\cdots+B_{s} \boldsymbol{y}_{t-s}+A^{-1} \Sigma \varepsilon_{t}, \quad \varepsilon_{t} \sim N\left(0, I_{k}\right) yt=B1yt1++Bsyts+A1Σεt,εtN(0,Ik)

    其中, B i = A − 1 F i ,  for  i = 1 , … , s B_{i}=A^{-1} F_{i}, \text { for } i=1, \ldots, s Bi=A1Fi, for i=1,,s ,将 B i B_i Bi的元素按照行进行堆叠生成 β ( k 2 s × 1  vector  ) \boldsymbol{\beta}\left(k^{2} s \times 1 \text { vector }\right) β(k2s×1 vector ),定义: X t = I k ⊗ ( y t − 1 ′ , … , y t − s ′ ) X_{t}=I_{k} \otimes\left(\boldsymbol{y}_{t-1}^{\prime}, \ldots, \boldsymbol{y}_{t-s}^{\prime}\right) Xt=Ik(yt1,,yts) ⊗ \otimes 代表克罗内克积,

    y t = X t β + A − 1 Σ ε t \boldsymbol{y}_{t}=X_{t} \boldsymbol{\beta}+A^{-1} \Sigma \varepsilon_{t} yt=Xtβ+A1Σεt

    2.2 FAVAR模型(向量增强自回归模型)

    所有的参数都不随时间变化。

    [ F t Y t ] = B 1 [ F t − 1 Y t − 1 ] + ⋯ + B p [ F t − p Y t − p ] + v t (1) \left[\begin{array}{l} F_{t} \\ Y_{t} \end{array}\right]=B_{1}\left[\begin{array}{l} F_{t-1} \\ Y_{t-1} \end{array}\right]+\cdots+B_{p}\left[\begin{array}{l} F_{t-p} \\ Y_{t-p} \end{array}\right]+v_{t} \tag{1} [FtYt]=B1[Ft1Yt1]++Bp[FtpYtp]+vt(1)

      F t   ~F_t~  Ft 为潜在因子构成的   K × 1   ~K \times1~  K×1 维向量, Y t   Y_t~ Yt 为可观测变量和货币政策工具变量构成的 L × 1 L\times1 L×1维向量;   B i ,   i = 1 , 2 , ⋯   , p   ~B_{i},~ i= 1,2,\cdots,p~  Bi, i=1,2,,p    ( K + L ) × ( K + L )   ~(K+L)\times(K+L)~  K+L×K+L 的系数矩阵; v t ∼ N ( 0 , Ω )   v_{t} \sim N(0,\Omega)~ vtN(0,Ω)  Ω \Omega Ω   ( K + L ) × ( K + L )   ~(K+L)\times(K+L)~  K+L×K+L 的协方差矩阵。

    X t = Λ f F t + Λ y Y t + e t (2) X_{t}=\Lambda^{f} F_{t}+\Lambda^{y} Y_{t}+e_{t} \tag{2} Xt=ΛfFt+ΛyYt+et(2)

    X t   X_{t}~ Xt 表示经济系统中存在的大量时间序列,维度是   N × 1   ~N \times1~  N×1 向量,且   K + L ≪ 1   ~K+L \ll1~  K+L1 
    Λ f , Λ y   \Lambda^{f},\Lambda^{y}~ Λf,Λy 分别为 F t , Y t   F^{t},Y^{t}~ Ft,Yt 的因子载荷矩阵,其维度分别是   N × K   ~N \times K~  N×K ,   N × L   ~N \times L~  N×L ; e t ∼ N ( 0 , H ) e_{t} \sim N(0,H) etN(0,H), H H H 是一个对角矩阵,同时假定扰动项 e t e_{t} et 与潜在因子 F t F_t Ft不相关,其自身也不存在序列相关,即:
    E ( e i , t F t ) = 0 , E ( e i , t e j , s ) = 0 ( i , j = 1 , ⋯   , N ; t s = 1 , ⋯   , T ; i ≠ j , t ≠ s ) E\left(e_{i, t} F_{t}\right)=0, E\left(e_{i, t} e_{j, s}\right)=0 \quad (i, j=1, \cdots, N ; ts=1, \cdots, T ; i \neq j, t \neq s) E(ei,tFt)=0,E(ei,tej,s)=0(i,j=1,,N;ts=1,,T;i=j,t=s)

    2.3 TVP模型

    Regression(回归):
    y t = x t ′ β + z t ′ α t + ε t , ε t ∼ N ( 0 , σ t 2 ) , t = 1 , … , n y_{t}=x_{t}^{\prime} \beta+z_{t}^{\prime} \alpha_{t}+\varepsilon_{t}, \quad \varepsilon_{t} \sim N\left(0, \sigma_{t}^{2}\right), \quad t=1, \ldots, n yt=xtβ+ztαt+εt,εtN(0,σt2),t=1,,n

    Time-Varying coefficients(时变系数):

    α t + 1 = α t + u t , u t ∼ N ( 0 , Σ ) , t = 0 , … , n − 1 \alpha_{t+1}=\alpha_{t}+u_{t}, \quad u_{t} \sim N(0, \Sigma), \quad t=0, \ldots, n-1 αt+1=αt+ut,utN(0,Σ),t=0,,n1

    Stochastic volatility(随机波动率):

    σ t 2 = γ exp ⁡ ( h t ) , h t + 1 = ϕ h t + η t , η t ∼ N ( 0 , σ n 2 ) , t = 0 , … , n − 1 \sigma_{t}^{2}=\gamma \exp \left(h_{t}\right), \quad h_{t+1}=\phi h_{t}+\eta_{t}, \quad \eta_{t} \sim N\left(0, \sigma_{n}^{2}\right), \quad t=0, \ldots, n-1 σt2=γexp(ht),ht+1=ϕht+ηt,ηtN(0,σn2),t=0,,n1

    y t y_t yt是标量; x t x_t xt , z t z_t zt分别是 k × 1 k \times 1 k×1 p × 1 p \times 1 p×1维向量; β \beta β k × 1 k \times 1 k×1阶常系数; α t \alpha_t αt p × 1 p \times 1 p×1阶时变系数, h t h_t ht 是随机波动率。

    初始化:假定 α 0 = 0 , u 0 ∼ N ( 0 , Σ 0 ) , γ > 0 ,   h 0 = 0 \alpha_{0}=0,u_{0} \sim N\left(0, \Sigma_{0}\right), \gamma>0, ~ h_{0}=0 α0=0,u0N(0,Σ0),γ>0, h0=0

    2.4 TVP-SV-VAR模型:

    与前文 2.1节 SAVR模型相呼应,TVP-SV-VAR模型为:

    y t = X t β t + A t − 1 Σ t ε t , t = s + 1 , … , n (TVP-SV-VAR) \boldsymbol{y}_{t}=X_{t} \boldsymbol{\beta}_{t}+A_{t}^{-1} \Sigma_{t} \varepsilon_{t}, \quad t=s+1, \ldots, n \tag{TVP-SV-VAR} yt=Xtβt+At1Σtεt,t=s+1,,n(TVP-SV-VAR)
    系数 β t \boldsymbol{\beta}_{t} βt,参数 A t A_{t} At, Σ t \Sigma_{t} Σt 都是时变的,[Primiceri (2005)] 提出 a t = [ a 21 T a 31 T ⋮ a k , k − 1 T ] \boldsymbol{a}_{t}=\begin{bmatrix} a_{21}^{T} \\ a_{31}^{T}\\ \vdots\\ a_{k, k-1}^{T} \end{bmatrix} at=a21Ta31Tak,k1T 成为下三角矩阵 A t A_t At 的堆叠矩阵, h t = [ h 1 t T h 2 t T ⋮ h k t T ] \boldsymbol{h}_{t}=\begin{bmatrix} h_{1 t}^{T} \\ h_{2 t}^{T}\\ \vdots\\ h_{k t}^{T} \end{bmatrix} ht=h1tTh2tThktT,并且 h j t = log ⁡ σ j t 2 , j = 1 , … , k , t = s + 1 , … , n h_{j t}=\log \sigma_{j t}^{2}, j=1, \ldots, k, t=s+1, \ldots, n hjt=logσjt2,j=1,,k,t=s+1,,n

    假定TVP-SV-VAR的参数服从以下随机游走过程:

    β t + 1 = β t + u β t a t + 1 = a t + u a t h t + 1 = h t + u h t \begin{aligned} &\boldsymbol{\beta}_{t+1}=\boldsymbol{\beta}_{t}+u_{\beta t}\quad \\ &\boldsymbol{a}_{t+1}=\boldsymbol{a}_{t}+u_{a t} \quad \\ &\boldsymbol{h}_{t+1}=\boldsymbol{h}_{t}+u_{h t} \end{aligned} βt+1=βt+uβtat+1=at+uatht+1=ht+uht

    β s + 1 ∼ N ( μ β 0 , Σ β 0 ) , a s + 1 ∼ N ( μ a 0 , Σ a 0 ) , N ( μ h 0 , h s + 1 ∼ Σ h 0 ) \boldsymbol{\beta}_{s+1} \sim N\left(\mu_{\beta_{0}}, \Sigma_{\beta_{0}}\right), \boldsymbol{a}_{s+1} \sim N\left(\mu_{a_{0}}, \Sigma_{a_{0}}\right),N\left(\mu_{h_{0}}, \boldsymbol{h}_{s+1} \sim\Sigma_{h_{0}}\right) βs+1N(μβ0,Σβ0),as+1N(μa0,Σa0),N(μh0,hs+1Σh0)
    ( ε t u β t u a t u h t ) ∼ N ( 0 , ( I O O O O Σ β O O O O Σ a O O O O Σ h ) ) \left(\begin{array}{c} \varepsilon_{t} \\ u_{\beta t} \\ u_{a t} \\ u_{h t} \end{array}\right) \sim N\left(0,\left(\begin{array}{cccc} I & O & O & O \\ O & \Sigma_{\beta} & O & O \\ O & O & \Sigma_{a} & O \\ O & O & O & \Sigma_{h} \end{array}\right)\right) εtuβtuatuhtN0,IOOOOΣβOOOOΣaOOOOΣh

    nakajima的matlab code运行结果中,共可以发现七张图,其中图三,图四是针对SVAR结构中的A矩阵的元素绘制的,其中图四为A矩阵的逆矩阵,表示其影响机制上的影响关系。下图是图四matlab code 运行结果的图四。
    图四
    怎么判断运行结果的优劣?这里用的是MCMC抽样方法去学习参数,最终通过贝叶斯估计近确推断参数的后验分布,上述matlab code 运行结果的图三、图四均为A矩阵元素的后验均值,如果这个分布的5% 分位点 和 95% 分位点都不包括0 ,那么这个参数的估计是显著的。下图中 a 2 t a_{2t} a2t后期的后验均值在0附近波动,说明其估计不显著!

    图三

    2.5 TVP-SV-FAVAR模型,

    参数随时间而变化,:
    [ F t Y t ] = B 1 , t [ F t − 1 Y t − 1 ] + ⋯ + B p , t [ F t − p Y t − p ] + v t (3) \left[\begin{array}{l} F_{t} \\ Y_{t} \end{array}\right]=B_{1, t}\left[\begin{array}{l} F_{t-1} \\ Y_{t-1} \end{array}\right]+\cdots+B_{p, t}\left[\begin{array}{l} F_{t-p} \\ Y_{t-p} \end{array}\right]+v_{t}\tag{3} [FtYt]=B1,t[Ft1Yt1]++Bp,t[FtpYtp]+vt(3)

      F t   ~F_t~  Ft 为潜在因子构成的   K × 1   ~K \times1~  K×1 维向量, Y t   Y_t~ Yt 为可观测变量和货币政策工具变量构成的 L × 1 L\times1 L×1维向量;   B i ,   i = 1 , 2 , ⋯   , p   , t = 1 , 2 , ⋯   , T   ~B_{i},~ i= 1,2,\cdots,p~, t = 1,2,\cdots,T~  Bi, i=1,2,,p ,t=1,2,,T  M × M M × M M×M 阶时变系数矩阵;   v t ∼ N ( 0 , Ω T ) ~v_{t} \sim N\left(0, \Omega_{T}\right)  vtN(0,ΩT) M × M M × M M×M 阶时变协方差矩阵。

    方程(2)和方程(3)分别构成了TVP-SV-FAVAR模型模型的主体,分别被称为“因子方程”和“时变参数FAVAR方程

    参数估计过程:

    首先对协方差矩阵   Ω t   ~\Omega_t~  Ωt 进行分解
    A t Ω t A t ′ = ∑ t ∑ t ⟹ Ω t = A t − 1 ∑ t ∑ t ( A t − 1 ) A_{t} \Omega_{t} A_{t}^{\prime}=\sum_{t} \sum_{t} \quad \Longrightarrow \quad\Omega_{t}=A_{t}^{-1} \sum_{t} \sum_{t}\left(A_{t}^{-1}\right) AtΩtAt=ttΩt=At1tt(At1)

    其中 Σ t \Sigma_t Σt是一个对角矩阵, ∑ t = diag ⁡ ( σ 1 , t , ⋯   , σ M , t )   \sum_{t}=\operatorname{diag}\left(\sigma_{1, t}, \cdots, \sigma_{M, t}\right)~ t=diag(σ1,t,,σM,t) , A t A_{t} At是下三角矩阵,
    A t = [ 1 0 ⋯ 0 a 21 , t 1 ⋱ ⋮ ⋮ ⋱ ⋱ 0 a M 1 , t ⋯ a M ( M − 1 ) , t 1 ] A_{t}=\left[\begin{array}{cccc} 1 & 0 & \cdots & 0 \\ a_{21, t} & 1 & \ddots & \vdots \\ \vdots & \ddots & \ddots & 0 \\ a_{M 1, t} & \cdots & a_{M(M-1), t} & 1 \end{array}\right] At=1a21,taM1,t01aM(M1),t001

    将(3)中的系数矩阵 B t B_t Bt按照行元素重新堆叠
    B t = ( vec ⁡ ( B 1 , t ) ′ , ⋯   , vec ⁡ ( B p , t ) ′ ) ′ log ⁡ σ t = ( log ⁡ σ 1 , t ′ , ⋯   , log ⁡ σ M , t ′ ) , α t = ( a j 1 , t ′ , ⋯   , a j ( j − 1 ) , t ′ ) ′ , j = 1 , ⋯   , M ∘ \begin{aligned} B_{t}&=\left(\operatorname{vec}\left(B_{1, t}\right)^{\prime}, \cdots, \operatorname{vec}\left(B_{p, t}\right)^{\prime}\right)^{\prime} \\ \log \sigma_{t} & =(\log\left.\sigma_{1, t}^{\prime}, \cdots, \log \sigma_{M, t}^{\prime}\right),\\ \alpha_{t} &= \left(a_{j 1, t}^{\prime}, \cdots, a_{j(j-1), t}^{\prime}\right)^{\prime}, j=1, \cdots, M_{\circ} \end{aligned} Btlogσtαt=(vec(B1,t),,vec(Bp,t))=(logσ1,t,,logσM,t),=(aj1,t,,aj(j1),t),j=1,,M
    假定   B t , α t , log ⁡ σ t   ~B_{t},\alpha_{t},\log \sigma_{t}~  Bt,αt,logσt 服从一下的随机游走过程:
    B t = B t − 1 + J t B η t B α t = α t − 1 + J t α η t α log ⁡ σ t = log ⁡ σ t − 1 + J t σ η t σ \begin{aligned} B_{t} &=B_{t-1}+J_{t}^{B} \eta_{t}^{B} \\ \alpha_{t} &=\alpha_{t-1}+J_{t}^{\alpha} \eta_{t}^{\alpha} \\ \log \sigma_{t} &=\log \sigma_{t-1}+J_{t}^{\sigma} \eta_{t}^{\sigma} \end{aligned} Btαtlogσt=Bt1+JtBηtB=αt1+Jtαηtα=logσt1+Jtσηtσ
    θ t ∈ { B t , α t , log ⁡ σ t } \theta_{t} \in\left\{B_{t}, \alpha_{t}, \log \sigma_{t}\right\} θt{Bt,αt,logσt},其中   η t θ ∼ N ( 0 , Q θ )   ~\eta_{t}^{\theta} \sim N\left(0, Q_{\theta}\right)~  ηtθN(0,Qθ) 为互相独立的冲击变量, Q θ Q_{\theta} Qθ是向量参数的   B t , α t , log ⁡ σ t   ~B_{t}, \alpha_{t}, \log \sigma_{t}~  Bt,αt,logσt 冲击协方差矩阵。 J θ J_{\theta} Jθ取值为 0 或 1, J θ = 1   J_{\theta} = 1~ Jθ=1 表示参数是时变的, J θ = 0   J_{\theta} = 0~ Jθ=0 表示参数是固定的;

    G t = Λ Z t + W u t G Z t = B t ( L ) Z t + A t − 1 ∑ t u t Z (4) \begin{array}{c} G_{t}=\Lambda Z_{t}+W u_{t}^{G} \tag{4} \\ Z_{t}=B_{t}(L) Z_{t}+A_{t}^{-1} \sum_{t} u_{t}^{Z} \end{array} Gt=ΛZt+WutGZt=Bt(L)Zt+At1tutZ(4)
    G t = [ X t Y t ]    Z t = [ F t Y t ] W = diag ⁡ ( exp ⁡ ( h 1 / 2 ) , ⋯   , exp ⁡ ( h N / 2 ) , ⋯   , exp ⁡ ( H N / 2 ) , 0 1 × L )    ⟹ W W ′ = [ H 0 1 × L ] Λ = [ Λ f Λ y 0 L × K I L ] B t ( L ) = B 1 , t L + ⋯ + B p , t L p \begin{aligned} G_{t}& =\begin{bmatrix} X_{t} \\ Y_{t} \end{bmatrix} \ \ Z_{t}=\begin{bmatrix} F_{t} \\ Y_{t} \end{bmatrix} \\ W & =\operatorname{diag}\left(\exp \left(h_{1} / 2\right), \cdots, \exp \left(h_{N} / 2\right), \cdots, \exp \left(H_{N} / 2\right), 0_{1 \times L}\right) \ \ \\ \Longrightarrow & W W^{\prime}=\begin{bmatrix} H \\ 0_{1} \times L \end{bmatrix} \quad \Lambda=\left[\begin{array}{ll} \Lambda^{f} & \Lambda^{y} \\ 0_{L \times K} & I_{L} \end{array}\right]\\ & B_{t}(L)=B_{1, t} L+\cdots+B_{p, t} L^{p} \end{aligned} GtW=[XtYt]  Zt=[FtYt]=diag(exp(h1/2),,exp(hN/2),,exp(HN/2),01×L)  WW=[H01×L]Λ=[Λf0L×KΛyIL]Bt(L)=B1,tL++Bp,tLp

    ( u t G , u t Z ) \left(u_{t}^{G}, u_{t}^{Z}\right) (utG,utZ)是取自标准正态分布且相互独立的扰动项,

    通过方程(4)向量移动平均(VMA)表达式:

    G t = Λ B ~ t ( L ) − 1 A t − 1 ∑ t u t Z + W u t G = Δ t ( L ) ζ t (5) G_{t}=\Lambda \tilde{B}_{t}(L)^{-1} A_{t}^{-1} \sum_{t} u_{t}^{Z}+W u_{t}^{G}=\Delta_{t}(L) \zeta_{t} \tag{5} Gt=ΛB~t(L)1At1tutZ+WutG=Δt(L)ζt(5)

    其中, B ~ t ( L ) = I − B t ( L ) , ζ t ∼ N ( 0 , 1 ) \tilde{B}_{t}(L)=I-B_{t}(L), \zeta_{t} \sim N(0,1) B~t(L)=IBt(L),ζtN(0,1),可以对模型(5)进行脉冲响应分析

    Step1 : 利用主成分分析法, 从宏观经济信息集 X t X_t Xt 提取前 K 个主成分构成潜在因子 F t F_t Ft
    Step2:基于第一步中提取的潜在因子使用MCMC方法对模型参数进行估计。

    2.6 主成分分析法提取潜在因子:

    Method1: Bernanke 等( 2005) 提出的方案,首先将信息集 X t X_t Xt中的所有要素分为“慢速变化”和“快速变化”两组,然后分别对和“慢速变量”进行主成分分析, 提取前K个主成分构成信息集合 P C t PC_t PCt P C t s PC_t^{s} PCts,最后, 对回归方程:
    P C t = β s P C t s + β Y Y t + μ t PC_t = \beta_{s} PC_t^{s} + \beta_{Y}Y_{t} + \mu_{t} PCt=βsPCts+βYYt+μt

    由此得到潜在因子 F t F_{t} Ft的估计值, F ^ t = P C t − β Y Y t \hat{F}_{t} = PC_t -\beta_{Y}Y_{t} F^t=PCtβYYt, 将其代入方程(3) 即可对模型参数进行估计,该方案得到的潜在因子称为“BBE 因子”, 记为TVP-SV-FAVAR-BBE

    Method2:由 Belviso 和 Milani( 2006) 提出首先将信息集 X t X_t Xt中的所有变量分为 I I I组: X t 1 , X t 2 , ⋯   , X t I X_{t}^{1},X_{t}^{2}, \cdots , X_{t}^{I} Xt1,Xt2,,XtI, 其中 X t i X_{t}^{i} Xti N i × 1 N_{i} \times 1 Ni×1 维向量, ∑ i I N i = N \sum_{i}^{I} N_{i} = N iINi=N, 然后, 对每一组变量进行主成分分析, 得到相应的潜在因子: F t 1 , F t 2 , ⋯   , F t I F_{t}^{1} , F_{t}^{2},\cdots ,F_{t}^{I} Ft1,Ft2,,FtI,其中 F t i F_{t}^{i} Fti K i × 1 K_{i} \times 1 Ki×1 维向量, ∑ i I K i = K \sum_{i}^{I} K_{i} = K iIKi=K。最后, 将 F t 1 , F t 2 , ⋯   , F t I F_{t}^{1} , F_{t}^{2},\cdots ,F_{t}^{I} Ft1,Ft2,,FtI代入方程(3)即可对模型参数进行估计。得到的潜在因子我们将其称为“分组因子”,对应的模型记为 TVPSV-FAVAR-Block

    3. 实证研究:

    3.1 变量选取与数据说明:

    • 共选取了 136 个经济指标, 作为描述宏观经济情况的变量。
    • 数据来源,中经网统计数据库,部分数据来自于 Wind 数据库和 EIU 国家数据库
    经济变量具体
    实际经济活动变量工业增加值、消费、投资、进出口、财政收支、就业、工资等
    货币、信贷和金融变量货币供应量、信贷、存贷款、股票市值、债券发行量等
    利率和汇率变量包括各种利率和汇率指标
    价格水平变量包括居民消费价格指数、工业生产者价格指数、企业商品交易价格指数、进出口价格指数等

    3.2 数据清洗:

    1. 消除季节性因素,进行季节调整。
    2. FABAR 模型要求所有变量均转化为标准化的平稳序列
    3. 平稳化处理,标准化处理。

    平稳化处理主要有两种方式: 一是数据本身就平稳的直接取原值; 二是对非平稳数据做一阶对数差分处理。

    3.3 参数时变特征检验:

    采用 Koop 等( 2009) 的 S 个抽样序列, 那么就可以得到 J t θ J_{t}^{\theta} Jtθ的平均后验概率值,计算公式:

    E ( J t θ ∣ D a t a ) = 1 S ∑ s = 1 S ( J t θ ) s , θ t ∈ { B t , α t , log ⁡ σ t } E\left(J_{t}^{\theta} \mid D a t a\right)=\frac{1}{S} \sum_{s=1}^{S}\left(J_{t}^{\theta}\right)_{s}, \theta_{t} \in\left\{B_{t}, \alpha_{t}, \log \sigma_{t}\right\} E(JtθData)=S1s=1S(Jtθ)s,θt{Bt,αt,logσt}

    其中, J t ( s ) θ J_{t(s)}^{\theta} Jt(s)θ J t θ J_{t}^{\theta} Jtθ的第 s 个 MCMC 抽样序列。

    通过考察 FAVAR 模型的估计参数在样本考察期发生状态转移的概率,如果后验概率 p ( π θ ∣  Data  ) p\left(\pi_{\theta} \mid \text { Data }\right) p(πθ Data )接近于1, 那么就可以认为模型的参数是时变的。

    3.4 实证结果

    根据 Korobilis( 2013) 对于初始条件的设定, 时变参数 FVAR 方程参数的先验分布为:
    B 0 ∼ N ( B ‾ , V ‾ ) Q B − 1 ∼ W ( 0.005 × ( dim ⁡ ( B ) + 1 ) × V ‾ , ( dim ⁡ ( B ) + 1 ) ) dim ⁡ ( B ) = M × M × P α 0 ∼ N ( 0 , 4 I ) Q α − 1 ∼ W ( 0.01 × ( dim ⁡ ( α ) + 1 ) × I , ( dim ⁡ ( α ) + 1 ) ) dim ⁡ ( α ) = M ( M − 1 ) / 2 log ⁡ σ 0 ∼ N ( 0 , 4 I ) Q σ − 1 ∼ W ( 0.0001 × ( dim ⁡ ( σ ) + 1 ) × I , ( dim ⁡ ( σ ) + 1 ) ) dim ⁡ ( σ ) = M [ Λ i f , Λ i y ] ∼ N ( 0 1 × M , 10 I M ) , h i 0 ∼ N ( 0 , 4 ) , σ h − 1 ∼  Gamma  ( 0.01 , 0.01 ) , i = 1 , ⋯   , N \begin{aligned} &B_{0} \sim N(\underline{B},\underline{V}) \\ &Q_{B}^{-1} \sim W(0.005 \times(\operatorname{dim}(B)+1) \times \underline{V},(\operatorname{dim}(B)+1)) \\ & \operatorname{dim}(B)=M \times M \times P \\ \\ & \alpha_{0} \sim N(0,4 I) \\ & Q_{\alpha}^{-1} \sim W(0.01 \times(\operatorname{dim}(\alpha)+1) \times I,(\operatorname{dim}(\alpha)+1)) \\ & \operatorname{dim}(\alpha)=M(M-1) / 2 \\ \\ & \log \sigma_{0} \sim N(0,4 I) \\ &Q_{\sigma}^{-1} \sim W(0.0001 \times(\operatorname{dim}(\sigma)+1) \times I,(\operatorname{dim}(\sigma)+1)) \\ & \operatorname{dim}(\sigma)=M \\ \\ & \left[\Lambda_{i}^{f}, \Lambda_{i}^{y}\right] \sim N\left(0_{1 \times M},\right.\left.10 I_{M}\right), \\ &h_{i 0} \sim N(0,4),\\ & \sigma_{h}^{-1} \sim \text { Gamma }(0.01,0.01), i=1, \cdots, N \end{aligned} B0N(B,V)QB1W(0.005×(dim(B)+1)×V,(dim(B)+1))dim(B)=M×M×Pα0N(0,4I)Qα1W(0.01×(dim(α)+1)×I,(dim(α)+1))dim(α)=M(M1)/2logσ0N(0,4I)Qσ1W(0.0001×(dim(σ)+1)×I,(dim(σ)+1))dim(σ)=M[Λif,Λiy]N(01×M,10IM),hi0N(0,4),σh1 Gamma (0.01,0.01),i=1,,N

    其中, B ‾ \underline{B} B V ‾ \underline{V} V 的取值如下:即方程因变量自身一阶滞后变量系数的先验期望为 0.9, 其他变量的先验期望均为 0。
    B ‾ i j τ = { 0.9 i = j , τ = 1 0  others  τ = 1 , ⋯   , p \underline{B}_{i j \tau}=\left\{\begin{array}{ll} 0.9 & i=j, \tau=1 \\ 0 & \text { others } \end{array} \quad \tau=1, \cdots, p\right. Bijτ={0.90i=j,τ=1 others τ=1,,p

    s i 2 s_{i}^{2} si2是因变量 y i y_i yi 的单变量 p 阶自回归模型的残差; i = 1 , ⋯   , M ; j = 1 , ⋯   , M p i=1, \cdots, M ; j=1, \cdots, M p i=1,,M;j=1,,Mp
    V ‾ i j t = { 1 τ 2 i = j 0.001 s i 2 τ 2 s j 2 i ≠ j τ = 1 , ⋯   , p \underline{V}_{i j t}=\left\{\begin{array}{lc} \frac{1}{\tau^{2}} & i=j \\ \frac{0.001 s_{i}^{2}}{\tau^{2} s_{j}^{2}} & i \neq j \end{array} \quad \tau=1, \cdots, p\right. Vijt={τ21τ2sj20.001si2i=ji=jτ=1,,p

    3.5 分析过程

    脉冲响应时点的选择: 原因在于其间发生了一系列重要的国内和国际事件,

    • 2005 年 7 月的人民币汇率制度改革、
    • 2007 年 8 月美国次贷危机爆发、
    • 2010 年欧洲主权债务危机爆发
    • 以及中国经济步入“新常态”。

    在此期间, 我国的经济结构和经济发展环境均发生了重要的变化, 通过比较不同时点上
    的脉冲响应结果, 有助于我们更好地考察货币政策效果的动态变化趋势和特征。

    1. 数量型货币政策的动态有效性

      随着经济全球化的发展,国际金融危机和欧债危机爆发后, 以美国、日本为代表的发达经济体持续推行的量化宽松政策制约了我国货币政策实施的自主性, 我国政策当局可能会被动跟随发达经济体调整货币政策, 这会影响货币政策的有效性。在此强调了经济系统的复杂性!

    2. 价格型货币政策的动态有效性

      对“价格之谜”进行了有效地解释。

    4 主要结论

    主要有三条结论,与引言部分的创新点相呼应,

    最后,在未来一段时间内应该继续采用数量型调控和价格型调控相结合的调控模式, 同时使用数量型和价格型货币政策对国民经济进行调控, 充分发挥二者的协同效应, 以更好地促进国民经济的发展。进一步阐述了两种货币政策之间的关系

    展开全文
  • VAR模型代码R语言

    2020-02-14 17:16:10
    金融计量VAR(向量自回归)模型,R语言代码。 #数据检验:平稳性、时间序列趋势 adfTest(aucl,lag=1,type="nc") adfTest(agcl,lag=1,type="nc") adfTest(agvo,lag=1,type="nc") #不平稳取对数 lnau<-log...
  • 拓端tecdat|R语言时变参数VAR随机模型

    千次阅读 2019-06-13 22:06:27
    时变参数VAR随机模型是一种新的计量经济学方法,用于在具有随机波动率和相关状态转移的时变参数向量自回归(VAR)的大模型空间中执行随机模型规范搜索(SMSS)。这是由于过度拟合的关注以及这些高度参数化模型中通常...

    原文链接:http://tecdat.cn/?p=3223

    原文出处:拓端数据部落公众号

    摘要

    时变参数VAR随机模型是一种新的计量经济学方法,用于在具有随机波动率和相关状态转移的时变参数向量自回归(VAR)的大模型空间中执行随机模型规范搜索(SMSS)。这是由于过度拟合以及这些高度参数化模型中不精确的推断所致。对于每个VAR系数,这种新方法自动确定它是稳定的还是随时间变化的。此外,它可用于将不受限制的时变参数VAR收缩到固定VAR。因此,提供了一种简单的方法(概率地)在时变参数模型中施加平稳性。我们通过局部应用证明了该方法的有效性,我们在非常低的利率期间调查结构性冲击对政府支出对美国税收和国内生产总值(GDP)的动态影响。

    引言

    向量自回归(VAR)广泛用于宏观经济学中的建模和预测。特别是,VAR已被用于理解宏观经济变量之间的相互作用,通常通过估计脉冲响应函数来表征各种结构性冲击对关键经济变量的影响。

    状态空间模型

    允许时间序列模型中的时变系数的流行方法是通过状态空间规范。具体而言,假设ÿ 是Ñ 对因变量的观测向量,是Ñ × 上解释变量的观测矩阵,β 是状态向量。然后可以将通用状态空间模型编写为

    (1)

    (2)

    这种一般的状态空间框架涵盖了宏观经济学中广泛使用的各种时变参数(TVP)回归模型,并已成为分析宏观经济数据的标准框架。然而,最近的研究引起了人们的担忧,过度拟合可能是这些高度参数化模型的问题。此外,这些高维模型通常给出不精确的估计,使任何形式的推理更加困难。受这些问题的影响,研究人员可能希望有一个更简约的规范,以减少过度参数化的潜在问题,同时保持状态空间框架的灵活性,允许系数的时间变化。例如,人们可能希望拥有一个具有时不变系数的默认模型,但是当有强有力的时间变化证据时,这些系数中的每一个都可以转换为随时间变化的。通过这种方式,人们可以保持简洁的规范,从而实现更精确的估计,同时最大限度地降低模型错误指定的风险。

    结果

    我们实施了Gibbs采样器,以获得VECM模型中参数的25,000个后验采样。

    BKK采用类似的“标准化”系列的方法,只影响先验标准,只要在后验计算中适当考虑转换即可。或者,可以使用原始系列并使用训练样本来指定先验,虽然这在操作上更加复杂。值得注意的是,我们在SMSS和TVP-SVECM中应用了相同的标准化。

    我们的算法实现也使用了三个广义Gibbs步骤算法的稳定性,通过跟踪所有抽样变量的低效率因素和复制模拟运行多次验证。

    SMSS产生的IRF与对角线转换协方差的比较,具有完全转换协方差的SMSS和基准TVP-SVECM,在2000Q1之后20个季度的支出减少1%。

    2000年第一季度的税收(虚线)和支出(实线)对1%的支出冲击的中位数冲动响应。

    结束语

    时变VAR广泛用于通过估计脉冲响应函数来研究结构冲击对关键经济变量的动态影响。然而,由于这些模型是高度参数化的,因此推断通常是不精确的,并且通常难以得出结论。在本文中,我们提出了一种新方法,允许数据决定VAR中的参数是时变的还是不变的,从而允许模型在系数的时间变化很小时自动切换到更简约的规范。通过在状态方程的方差之前引入Tobit,计算许多指标的任务被大大简化。

    还有问题吗?请在下面留言!


    参考文献

    1.R语言实现向量自动回归VAR模型

    2.R语言VAR模型的不同类型的脉冲响应分析

    3.R语言时变VAR模型实证研究分析

    4.R语言估计时变VAR模型时间序列的实证研究

    5.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

    6.Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

    7.R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

    8.R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究

    9.R语言基于ARMA-GARCH过程的VAR拟合和预测

    展开全文
  • 黄河内蒙古段流凌预报可变模糊聚类循环迭代模型.pdf
  • 该库提供用于计算 Diebold 和 Yilmaz (2009, 2012) 或 DY Spillover Index 以及连通性表的其他组件的函数。 此外,它还有一些有用的功能。 请查看 Example_DYIndex.m 以了解如何使用。 !!! 注意 !...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 413
精华内容 165
关键字:

tvp-var

友情链接: STM32F427_429_Datasheet.zip