SVAR模型制作过程.docx
《SVAR模型制作过程.docx》由会员分享,可在线阅读,更多相关《SVAR模型制作过程.docx(12页珍藏版)》请在冰豆网上搜索。
![SVAR模型制作过程.docx](https://file1.bdocx.com/fileroot1/2023-1/31/d9353063-3690-47f6-8e28-53fbed18d76a/d9353063-3690-47f6-8e28-53fbed18d76a1.gif)
SVAR模型制作过程
设置月度数据MONTHLY>startdate:
2008M01>enddate2018M08
一,数据的季节调整(利用x-12进行季节性调整)
由于在建模时所选取的是宏观经济的月度数据,而月度数据容易受到季节因素的影响,从而掩盖经济运行的客观规律,因此我们采用CensusX13(功能时最强大的)调整方法对各个变量数据进行季节性调整。
分别记做CPI’、FOOD’、HOUSE’、M2’、VMI’。
时间序列按照时间次序排列的随机变量序列,任何时间序列经过合理的函数变换后都可以被认为由几个部分叠加而成。
三个部分:
趋势部分(T),季节部分(S)和随机噪声部分(I)。
常见的时间序列都是等间隔排列的。
时间序列调整各部分构成的基本模型
Xt=Tt++Tt+It对任何时刻有,E(It)=0,Var(It)=σ2加法模型
Xt=Tt*Tt*It对任何时刻有,E(It)=1,Var(It)=σ2加法模型
(1)判定一个数据序列究竟适合乘法模型还是加法模型,可考察其趋势变化持性及季节变化的波动幅度。
(2)所谓季节调整就是按照上述两种模型将经济时间序列进行分解,去掉季节项的序列成为调过序列。
对于时间序列而言是否存在整体趋势?
如果是,趋势是显示持续存在还是显示将随时间而消逝?
对于时间序列而言是否显示季节性变化?
如果是,那么这种季节的波动是随时间而加剧还是持续稳定存在?
对于时间序列的分解模型主要有加法模型和乘法模型。
加法模型适用于T、S、C相互独立的情形。
乘法模型适用于T、S、C相关的情形。
由于时间序列分解的四大要素一般都存在相互影响,因此大多数的经济数据都采用乘法模型进行季节性分解。
第一步:
双击进行季节性调整的变量组CPI,proc>SeasonalAdjustment>x-12
第二步:
用Eviews软件进行季节调整的操作步骤:
1,准备一个用于调整的时间序列(GDP)(注意:
序列需同口径(当月或当季)、不变价、足够长)
2,在Eviews中建立工作文件,导入序列数据
3,序列图形分析
(1)观察序列中的是否有季节性
(2)是否有离群值或问题值
(3)序列的趋势变动(是加法还是乘法模型)(加法模型主要适用于呈线性增长的数据序列,或者是围绕某一个中指波动的数据序列,如pmi数据序列)(乘法模型主要适用于呈指数级数增长的序列,如GDP、工业增加值,投资数据的名义值、实际值及物价的指数序列等。
)(对数加法模型主要适用于同比增速呈线性增长的数据序列,如GDP、工业、投资及cpi的同比增速数据;伪加法模型则主要是对某些非负时间序列进行季节调整,他们具有这样的性质:
在每一年中的相同月份出现接近与0的正值,在这些月份含有接近于0的季节因子,受这些小因子的影响,季节调整结果将出现偏差。
在一年的特定时期,农产品产量就是这样的数据序列)
Cpi,vmi为对数加法模型,
(4)必要时还要分析谱图和自相关、偏相关图
4,季节调整参数设定
(1)季节调整选择项(模型分解方法、季节虑子、调整后的序列变量名)
a.勾选x11method中的multiplicative,seasonalfilter中的autox12default
b.Componentseriestosave选择finalseasonalfactor(_SF)TrendFilter选择Auto(X12fefat)
(2)ARIMA模型参数(序列是否需要做转换、ARIMA说明)(主要是做预测用)
(3)交易节假日设定(西方模式,不适合中国模式)
(4)离群值设定
(5)模型诊断(选上)
5,执行季节调整
6,查看季节调整后的结果
7,分析季节调整的结果诊断报告
主要查看M1-M11、以及Q统计量有没有通过检验
如果诊断报告不好,返回第4步
8,导出数据,在EXCEL中计算环比增长率
在建立SVAR模型时,需要考虑变量序列的平稳性,这就要求在建模前需要对变量进行平稳性检验,如果变量序列是平稳的,那么可以直接进行SVAR模型的构建,但是如果变量为非平稳序列那么需要对变量序列进行平稳性处理,常用的方法是做差分和取对数,如若变量序列满足同阶单整,则可以进行协整检验,如若各个变量序列满足协整检验,具有长期的均衡关系,则可以建立SVAR模型。
PROC>SeasonalAdjustment>CensusX12
Sensonaladjustment(季节调整选择设定),ARMIAOption,TradingDay/Holiday(交易日、节假日设定),Outliers(离群值设定),diagnostics(诊断)。
做的比较粗糙一点:
(1)打开变量列,proc>x-13>method>x-11>additive(加法)
(2)Output>seasonallyadjusted
一,对各变量序列的平稳性检验(ADF检验)
原因:
模型要求所需的变量数据为平稳序列。
(1)单位根检验
单位根检验是检验数据的平稳性,或是说单整阶数。
引用高人的回答:
滞后阶数的问题。
最佳滞后阶数主要根据AICSC准则判定,当你选择好检验方式,确定好常数项、趋势项选择后,在laggeddifferences栏里可以从0开始尝试,最大可以尝试到7。
你一个个打开去观察,看哪个滞后阶数使得结论最下方一栏中的AIC和SC值最小,那么该滞后阶数则为最佳滞后阶数。
单位根是否应该包括常数项和趋势项可以通过观察序列图确定,通过Quick-graph-line操作观察你的数据,若数据随时间变化有明显的上升或下降趋势,则有趋势项,若围绕0值上下波动,则没有趋势项;其二,关于是否包括常数项有两种观点,一种是其截距为非零值,则取常数项,另一种是序列均值不为零则取常数项。
使得t大于1%,5%,10%条件小的值
步骤:
第一:
利用图形确定常数项和趋势项Quick>seriesstatistic>unitroottest
其中:
检验对象
Level(水平序列),1stdifference(一阶差分序列),2stdifference(二阶差分序列)
检验附加项
Intercept(常数项,漂移项),trendandintercept(趋势项和漂移项),none(无附加项)
Laglength(之后长度)laggeddifferences
Automaticselection(系统自动选择之后长度)
AICSIC等。
Userspecified(用户自己选择)
第二,确定滞后项
方法一是在Userspecified(用户自选模式)中选择从0开始慢慢增加,看下面的AIC与sic的大小,最后AIC与sic最小时,就是滞后项数。
方法二是在Automaticselection中选择AIC模式,可以把最大滞后项数选大一点(7或者以上),软件会自动选择AIC最小时的项,即为滞后项。
D(x(-1))为滞后1项。
(3)Johansen检验(视单整情况而定)
Johansen检验的关键是有同阶单整可以进行协整检验。
非同阶单整可不需要进行Johansen检验。
协整检验是两个或多个变量之间具有长期的稳定关系。
但变量协整的必要条件是他们之间时同阶单整,也就是说在进行协整检验之前进行单位根检验。
根据SIMS(1990)的研究结果,只有在变量序列之间存在长期的均衡关系即协整关系时,VAR模型才能避免出现错误识别,才能通过最小二乘法得到一致估计。
(4)建立VAR模型(不断重复直至模型通过三项检验:
稳定性,滞后阶数正确,外生变量与生变量明晰)
第一步估计var模型,Objects>Newobject/Var
选择VARtype为:
unrestricted
EndogenousVariables:
生变量(d(vmi_d11)差分)(有生变量为1,有外生变量为0)
ExogenousVariables:
外生变量
估计系数的标准差(圆括号中)及t-统计量(方括号中)
d(cpi_d11)d(food_d11)house_d11d(m1_d11)d(vmi_d11)
不断改变EndogenousVariables中(1,?
)?
=1,2,3……
比较结果最下面的AIC与SCDE值越小越好,最后确定VAR模型的滞后阶数。
(注意:
1,其实在初始设置VAR模型的时候可以任意设置为(1,?
)(后面检验的时候才会确认?
的滞后阶数是什么)。
(1,1)自己
2,默认为全体变量为生变量(后面检验的时候可以确定哪些是外生变量))。
第二步检验所估计的VAR模型(三个检验)
1,VAR的滞后阶数检验
在VAR工作表中VIEWS>lagstructure>laglengthcriteria(填写最大阶数)
软件将会用“*”给出某个AIC或者SC准则的最小值。
(滞后阶数越小越好)。
2,的稳定性检验(AR根小于1,在单位圆才能满足脉冲分析及方差分解所需条件)。
VIEWS>lagstructure>ARROOTSTABLE/GRAPH
3,Granger检验
VIEWS>lagstructure>PairwiseGrangerCausalityTests
3,建立的简约式VAR(?
)?
为滞后阶数的模型输出样式
VIEW>REPRESPENTATION
(5)在构建成功VAR模型后,为了验证扰动项之间是否存在同期相关关系,可用残差的同期相关矩阵来描述,可以利用这个模型进行预测即下一步的分析,为了验证扰动项之间是否存在同期相关关系,可以利用残差的同期相关矩阵来描述。
在构建的VAR窗口中:
VIEWS>Residuals>correlationmatrix
进一步表明可以利用同期的影响来构建SVAR模型。
(5)在已构建的VAR模型上构建SVAR模型
第一步:
实施约束
识别条件为k(k-1)/2个,识别约束条件可以是短期约束条件,也可以长期约束条件。
短期约束意味着脉冲响应函数随着时间的变化将会消失,(对D0进行影响)
而长期约束意味着对响应变量未来的值有一个长期的影响。
(更像是累计影响如
不能同时施加长期与短期约束。
短期约束是基于A-B型SVAR模型(Aet=B^ut),长期约束基于脉冲响应的累积响应函数。
(1)短期约束
可识别条件:
AB型SVAR模型至少需要2k2-k(k+1)/2个约束
可识别条件一般假设结构新息^ut有单位方差,因此通常对矩阵B的约束为对角阵(约束个数为k2-k)或者单位矩阵(约束个数为K2),以致获得冲击的标准偏差
A矩阵主对角元素一般设为1(约束个数为k)
在矩阵B为单位阵情况下,对A矩阵的约束相当于对C0矩阵施加约束,即对变量间同期相关关系的约束,如有三个生变量税收
(1),政府支出
(2),产出(3),根据经济理论当期产出不会影响当期政府支出,即矩阵C0中C23=0,在约束时当B为单位阵时,直接写成a23=
约束矩阵中未知元素定义为NA
(2)长期约束
建立包括长期响应矩阵Ψ模块,约束处填写0,比如第2个生变量对第1个结构冲击的长期影响为0,则长期响应矩阵模块中第2行第1列约束为0,其他类同,无约束的填写NA
施加在当期的约束就是短期约束,
(3)为了简便起见应按如下进行SVAR短期约束条件的设立
1,AB型SVAR模型至少需要2k2-k(k+1)/2个约束(AB型的特点是,可以明确建立系统各个生变量的当期结构关系,并且可以直观地分析标准正交随机扰动项对系统产生冲击后的影响情况,即et就是所谓的“标准正交随机扰动项”,因为它的组成元素之间互相正交(即互相独立),并且其方差-协方差为单位阵)
2,若约束矩阵B为单位阵,此时约束个数为K2个
3,若约束矩阵A为主对角元素为1,约束个数为K
4,再加上经济原理上,使得在矩阵A中至少增加
2k2-k(k+1)/2-(k2+k)个0约束
5,构造的约束按照C12=0或者C21=0来进行。
注意:
1,EVIEWS在计算过程中同时限定了矩阵A必须为单位矩阵,对于n变量的SVAR,这实质上又给出了n2个限制条件。
所以,当在EVIEWS中设立长期约束条件时,实际上对矩阵C的约束条件,只要有2n2-n(n+1)/2-n2=n2-n(n+1)/2-n2个就满足了SVAR模型的可识别条件。
2,长期约束,实质上就是要限定短期条件下的矩阵A和B与长期条件下的矩阵C之间的关系。
3,在长期约束过对矩阵C中的元素加以限制,然后利用这些限制条件以及C与矩阵A,B的关系估计出矩阵A与B的系数。
因此,在给定一个限制约束条件的矩阵C后,EViews部算法会给出相应的SVAR模型A、B矩阵中的系数,而无论如何限制矩阵C,EViews给出的结果中矩阵A总是单位矩阵。
所以,当在EViews中设立长期约束条件时,实际上对矩阵C的约束条件,只要有【2n2-n(n+1)/2】-n2=n2-n(n+1)/2个就满足了SVAR模型的可识别条件。
4,在进行短期约束时,可以根据经济理论或者Granger来得到约束条件。
5,构架的短期约束以格兰杰因果检验为主
6,最好不要把B矩阵设为单位阵
7,长期约束条件多用于货币政策的分析,情况较为复杂,在其他领域应用较少。
8,Svar模型根据其建模特点,主要分为3种类型:
K型,c型和AB型,其中AB其中型是最通常的类型,而K型、C型都可视为AB型的特殊形式。
如果模型中的A矩阵为单位矩阵,则AB模型就转化为C模型;如果AB模型中的B矩阵为单位矩阵,则模型就转化为K模型。
9,在EVIEWS中利用约束条件生成矩阵A与B
Objects/newobject/matrix-vector-coef填写矩阵名称A
在命令面板中可以如下输入:
A(1,1)=1,A(1,2)=NA等,表示在A矩阵中第1行第2列中设置为1,和在第1行第2列
或者矩阵命令matrix(5,5)xdata创建一个5*5的矩阵xdata。
第二步:
估计SVAR
从VAR对象窗口的菜单中选择procs>estimatestructuralfactorization
SvarOPTIONS的对话框中,击中MATRIX按钮和short-runpattern,并在相应的编辑框中填入模板矩阵的名字。
e1=-c
(1)*e2-c
(2)*e3-c(3)*e4-c(4)*e5+1*u1
e2=-c(5)*e1-c(6)*e4-c(7)*e5+1*u2
e3=-c(8)*e1-c(9)*e4-c(10)*e5+1*u3
e4=-c(11)*e1-c(12)*e3+1*u4
e5=-c(13)*e1-c(14)*e2-c(15)*e3+1*u5
如上设置的短期约束条件(多增加两个好一点)
d(cpi_d11)d(food_d11)house_d11d(m1_d11)d(vmi_d11)
结果如图所示
约束条件如下:
1:
里面不包含M1不影响当期食物价格,c24
M1不影响当期房屋价格C34
第三步:
分析
A,脉冲响应函数分析
d(cpi_d11)d(food_d11)house_d11d(m1_d11)d(vmi_d11)
主界面view>impulseresponse。
在impulses产生冲击的变量处填写
在response处填写观测其脉冲响应的变量
图片输出,点击输出结果右键,SVAE保存后可输出结果。
B,方差分解分析
Var界面View>variancedecomposition
library(ggplot2)
#type<-c('A','B','C','D','E','F','G')
#nums<-c(10,23,8,33,12,40,60)
type<-c('1HBase','2Spark','3Kylin','4Datadev&analysis')
nums<-c(85,5,5,5)
df<-data.frame(type=type,nums=nums)
#绘制条形图
p<-ggplot(data=df,mapping=aes(x='Content',y=nums,fill=type))+geom_bar(stat='identity',position='stack',width=1)
p
label_value<-paste('(',round(df$nums/sum(df$nums)*100,1),'%)',sep='')
label_value
label<-paste(df$type,label_value,sep='')
label
p+coord_polar(theta='y')+labs(x='',y='',title='')+theme(axis.text=element_blank())+theme(axis.ticks=element_blank())+scale_fill_discrete(labels=label)
---------------------
作者:
bigdata-余建新
来源:
CSDN
原文:
声明:
本文为博主原创文章,请附上博文!