请问R语言里有没有做非线性VAR模型的包?

Python016

请问R语言里有没有做非线性VAR模型的包?,第1张

这里分享一下R语言实现VAR和SVAR的整个流程。

主要步骤包括:

1.单位根检验

2.确定滞后阶数

3.格兰杰因果检验

4.模型稳定性检验

5.脉冲响应

6.方差分解

(Johansen协整检验,如果需要的话)

整个过程用到的R语言的扩展包有:

library(zoo)

library(vars)

library(tseries)

首先,数据是下面的样子:

ps:数据是时间序列类型,可以通过下面方法将dataframe转成时间序列类型

data = ts(data)

1.单位根检验

#对data的第一列进行单位根检验

adf.test(data[,1])

2.滞后阶数确定

VARselect函数结果包括AIC、HQ、SC和FPE准则

#参数y为时间序列数据,lag.max为最大滞后阶数

#参数type值包括const截距,trend趋势,both同时包含截距和趋势,none不包含截距和趋势

VARselect(y=data, lag.max = 10, type = c("const"))

3.格兰杰因果检验

格兰杰因果检验有两个方法,第一个是在构造模型之前,第二个是在构造模型之后在模型的基础上进行格兰杰因果检验。

(1)构造模型之前格兰杰因果检验

#函数格式:grangertest(yt~xt)

eg:

grangertest(Value~BCI)

(2)构造模型之后格兰杰因果检验

#函数格式:causality(VARModel,cause)

eg

var =  VAR(data ,p = 2, type = "const")

causality(var,cause=c('Count','Value'))

ps:在这里如果想要构建SVAR模型的话,需要根据实际情况构建两个矩阵amat和bmat,然后使用这两个矩阵来构建SVAR模型:

svar = SVAR(var,Amat = amat,Bmat = bmat)

4.模型稳定性检验

#这里使用“OLS-CUSUM”,它给出的是残差累积和,在该检验生成的曲线图中,残差累积和曲线以时间为横坐标,

#图中绘出两条临界线,如果累积和超出了这两条临界线,则说明参数不具有稳定性。

sta = stability(var, type = c("OLS-CUSUM"), h = 0.15, dynamic = FALSE, rescale = TRUE)

plot(sta)##结果稳健

5.脉冲响应

#标题栏说明,这是BCI(或者其他变量)对各个变量(包括BCI自身)的脉冲响应

(1)VAR脉冲响应

var.irf<-irf(var,n.head=10)

plot(var.irf)

(2)SVAR脉冲响应

svar.irf<-irf(svar,n.ahead = 100)

plot(svar.irf)

6.方差分解

#反映了各变量的贡献率

(1)VAR方差分解

fevd1<-fevd(var, n.ahead = 10)

fevd1$Count

(2)SVAR方差分解

fevd2<-fevd(svar, n.ahead = 10)

fevd2$Value

ps:有时候需要进行Johansen协整检验

#Johansen协整检验,

#对r=0(不存在协整关系)的检验统计量大于临界值,表明拒绝原假设

yJoTest = ca.jo(data, type = c("trace"), ecdet = c("none"), K = 2)

summary(yJoTest)

网页链接

脉冲响应指的是:在一个输入上施加一个脉冲函数引起的时间响应。

单位脉冲响应(Unit impulse response)系统对单位脉冲输入的响应。也称作记忆函数。脉冲响应确定一个线性系统的特性,包含有与频率域中的传输函数相同的信息,而传输函数是脉冲响应的拉普拉斯变换。线性系统的输出由系统的输入与它的脉冲响应的卷积给出。

单位脉冲响应是指一个无穷大的瞬时冲激,并且由于其在时间轴上的积分为1,而t又趋向于零,所以单位脉冲响应的大小应该是无穷大,但是要知道的是,无穷大量也有大小比较,所以单位脉冲响应可以用一个系数对之进行量度。

扩展资料

1、系统动态性能分析

动态性能是系统性能的一个十分重要的指标,通常用阶跃信号作用来测定系统的动态性能。一般认为,阶跃信号对于系统来说是十分严峻的工作状态,因为阶跃信号中存在跃断点(不连续点)。

针对零初始状态系统在单位阶跃输入下的响应情况,定义了一系列动态性能指标,用以评判系统的动态性能,如超调量、衰减比、上升时间、调节时间、峰值时间等等。

2、建立系统响应模型

对于典型的输入信号,如冲激信号、阶跃信号、斜坡信号等,都建立有响应模型(在此即单位阶跃响应模型)。根据模型,可以快速判断出实际系统的动态性能指标参数,只需要代入实际系统的相关测量参数,就可以定量分析其性能指标。

参考资料来源:百度百科——脉冲响应

参考资料来源:百度百科——单位脉冲响应

设传递函数H(jw)=R(jw)/E(jw),

R(jw)是响应,E(jw)是输入.当输入是脉冲的时候,其拉普拉斯变换是1

所以脉冲函数的响应就是传递函数本身的拉屎反变换.