- mcmc.m
一、TVP-VAR模型与常用代码简介
TVP-VAR模型(Time-Varying Parameter Vector AutoRegression,时变参数向量自回归模型)是在VAR模型的基础上拓展而来的模型,其假定系数矩阵和协方差矩阵是时变的,使得模型可以捕捉经济结构随时间变化的过程。
日本学者中岛上智(Jouchi Nakajima)于2011年发表的Time-Varying Parameter VAR Model with Stochastic Volatility: An Overview of Methodology and Empirical Applications是TVP-VAR领域的经典文献,其同时在个人网站上(https://sites.google.com/site/jnakajimaweb/)分享了论文中估计TVP-VAR模型所用的Oxmetrics和MATLAB程序代码,由于OxMetrics软件较为小众,因此很多人会选择使用更为熟悉的MATLAB版本的代码。
中岛上智教授分享的代码上一次更新时间为2020年5月1日,然而MATLAB版本的代码相比OxMetrics存在部分美中不足的地方,即MATLAB版本的代码无法显示现实的时间点,只能显示其在样本数据中的顺序,且MATLAB的作图限制导致其最多允许四条曲线叠加,如果想同时观察四种以上不同情况,难度比较大。
针对上述情况,我们谨慎修改了中岛上智教授发布的MATLAB版本的TVP-VAR模型代码,允许用户补充时间标签数据并将其显示出来,同时添加了生成三维脉冲响应图形的功能;针对许多人反应的缺少sa2参数的问题,我们谨慎添加了sa2参数结果的汇报。需要声明的是,我们并未修改任何估计方法或参数,以确保结果的准确无误。
以下为原始输出结果和修改后输出结果的对比:
以下为部分三维脉冲响应图形的展示:
以下为添加了sa2参数的汇报结果的对比展示:
三、使用说明
中岛上智教授提供了样例数据,请严格按照样例数据的格式将要估计的数据存入EXCEL表中,每一列存储一个变量,左上角不留空白,且表中除数据外不存在多余的空白行,否则会导致估计出错。
例如,在中岛教授提供的tvpvar_ex.xlsx中,总共有124期、共三个变量的数据,存储在A1-C124的范围内的单元格中,如果存在空白行,则可能导致MATLAB在载入数据时扩大读取范围,如将A1-D200范围内的单元格一并读入,最终导致参数估计失败。
我们仿照并补充了中岛上智教授的样例数据所对应的时间标签数据,存储在tvpvar_ex_time.xlsx的A1-A124范围内的单元格中,EXCEL表中同样不允许存在多余的空白行。
时间格式等参数请参阅MATLAB的相关文档。
tvpvar_m文件夹中为中岛教授的原始代码,tvpvar_m_modified_by_qiyandata文件夹中为修改后的代码,本版本代码仅修改了以下文件:drawimp.m;mcmc.m;tvpvar_ex1.m;tvpvar_ex2.m。
sa2参数的汇报功能由团队成员添加,如存疑可自行删去。
本代码仅是对中岛上智教授工作成果的少量修饰,代码本身仍然是中岛上智教授的工作成果,如果使用了本代码,请按如下规范引用:
Nakajima, J. (2011) "Time-varying parameter VAR model with stochastic volatility: An overview of methodology and empirical applications" Monetary and Economic Studies, 29, 107-142.
严禁私自将本代码用于商业目的!违者必究!
五、更新记录
2023.3.9更新说明:
1.我们修改了时间标签的代码,现在用户可自由决定“时间单位”和前面的量词,显示效果如“5天”、“6年”、“20个月”;
2.针对大家反应的跟oxmetrics输出结果相比缺少sa2参数的问题,我们增加了sa2参数的统计和展示,该功能由团队成员自行添加,请谨慎使用;如对该参数的结果存疑,可自行删去。
2023.3.10更新说明:
1.增加了坐标轴时间格式的显示设置功能。
2023.3.17更新说明:
1.修复了只有两个变量时输出不存在的sa2导致报错的问题。