TVP-VAR(TVP-SV-VAR)时变参数向量自回归模型实证研究资料包:含OX软件适用/M...
TVP-VARTVP- SV- VAR时变参数向量自回归模型 资料包中包含做tvp-var实证模型的完整讲解步骤OX软件适用Matlab可参考使用、OX6.0和Matlab有关模型的代码以及eviews软件、OX6.0软件的压缩包咱做宏观实证的都懂用传统VAR的时候总有点膈应——假设系数从头到尾不变就像默认十年前的货币政策对GDP的影响和现在一模一样这不扯吗疫情前后的经济结构、美联储加息的传导效果哪哪都在变这时候就得靠TVP-VAR带随机波动率的就是TVP-SV-VAR救场。时变参数能捕捉不同时期的系数变化随机波动率SV还能抓变量本身的波动突变比如2020年原油价格的暴跌用传统VAR根本看不出这种极端波动的影响。先唠OX软件毕竟资料包里的OX步骤最完整而且OX做时间序列计量天生顺手尤其是带MCMC的贝叶斯模型。懒得自己搭框架的直接用资料包里的OX代码把数据路径改成自己的就行连先验参数都给你调好了。贴一段核心估计代码看看proc main() local data, y, tvpvar, prior, mcmc, results // 加载数据替换成自己的宏观数据csv就行资料包里有示例格式 data load(macro_data.csv); y data[2:rows(data), 1:3]; // 取GDP、CPI、利率3个变量跳过表头行 // 初始化TVP-SV-VAR滞后2阶带常数项开启随机波动率 tvpvar TVPVar(); tvpvar.SetLags(2); tvpvar.SetEndogenous(y); tvpvar.IncludeConstant(true); tvpvar.EnableStochasticVolatility(true); // 关键开启随机波动率就是SV版本 // 设置先验分布——给模型初始值定个“合理范围”不能太放飞 prior tvpvar.MakePrior(); prior.SetTvpCoeffPrior(0.0, 1.0); // 时变系数先验均值0方差1贴合经济数据惯性 prior.SetSvPrior(0.1, 0.01); // 随机波动率的先验给波动突变留空间但不夸张 // MCMC抽样配置抽10000次前2000次当“预热”直接扔每2次存1个样本降相关性 mcmc McmcSampler(); mcmc.SetIterations(10000); mcmc.SetBurnin(2000); mcmc.SetThinning(2); // 跑模型、出结果、画图 results tvpvar.Estimate(prior, mcmc); results.PrintCoeffSummary(); // 输出参数后验统计量 results.PlotTimeVaryingIRF(1, 3); // 画GDP对利率冲击的时变脉冲响应 results.PlotStochasticVolatility(); // 画各变量的随机波动率图 endp;这段代码里最省心的是EnableStochasticVolatility(true)直接把普通TVP-VAR升级成TVP-SV-VAR不用自己写SV的状态空间模型MCMC的burnin期就像烤面包的预热前几次抽的样本太糙扔了不心疼时变脉冲响应图跑完直接出不用自己再写循环计算每一期的IRF资料包里的完整代码还加了结果保存功能直接导成png插论文。TVP-VARTVP- SV- VAR时变参数向量自回归模型 资料包中包含做tvp-var实证模型的完整讲解步骤OX软件适用Matlab可参考使用、OX6.0和Matlab有关模型的代码以及eviews软件、OX6.0软件的压缩包要是习惯用Matlab的兄弟资料包里也有现成的Matlab代码核心是用MCMC抽样跟踪时变参数和随机波动率。贴一段核心估计函数的片段function [theta, sigma, irf] tvp_sv_var_estimation(y, lags, n_draws, n_burn) [T, k] size(y); % T是样本量k是变量数 theta zeros(T, k*lags 1); % 时变系数每一期包含滞后项系数和常数项 sigma zeros(T, k); % 随机波动率每一期每个变量的波动水平 % MCMC抽样循环抽够次数为止 for draw 1:n_draws % 抽样时变系数theta用卡尔曼滤波跟踪状态就像每天更新对股价的判断 theta sample_time_varying_coeff(y, sigma, lags); % 抽样随机波动率sigma抓变量的波动突变比如2008年的跳涨 sigma sample_stochastic_volatility(y, theta, lags); % 预热期过了再存结果避免样本太糙 if draw n_burn saved_thetas(:, :, draw - n_burn) theta; saved_sigmas(:, :, draw - n_burn) sigma; end end % 计算时变脉冲响应每一期的系数对应不同的冲击效果 irf compute_time_varying_irf(saved_thetas, saved_sigmas, lags); end这里的sampletimevaryingcoeff用卡尔曼滤波处理时变参数就像你调奶茶甜度试一次记一次慢慢调到刚好samplestochastic_volatility用的是多变量SV的MCMC方法能同时捕捉多个变量的波动联动比如通胀和利率的波动率总是一起涨。注意Matlab要装Statistics and Machine Learning Toolbox不然MCMC的随机数生成会报错资料包里的软件包没包含这个工具箱得自己补懂的都懂。最后说句实在的刚碰时变模型的新人别自己啃文献头大直接扒资料包里的完整讲解步骤从数据预处理比如差分、平稳性检验到模型估计再到结果解读一步一步跟着走就行OX和Matlab的代码直接改数据路径就能跑连OX6.0和Eviews的软件压缩包都打包好了省得自己找安装包踩版本不兼容的坑。跑出来的时变脉冲响应图往论文里一放答辩时老师问起来就说“考虑了经济结构的时变性和变量的波动突变结果比固定系数VAR更贴合现实”直接拿捏。咱做实证的效率和实用才是王道对吧