时间序列分析关注事件或者说变量在时间上的动态变化情况。如果将时间人为分期,并记变量y在第t期的值为yt,那么将变量在第t期的值yt与另外的变量wt及第t期以前的值(如yt-1)联系起来的方程即为差分方程。下面首先介绍一阶差分方程,然后介绍p阶差分方程。

一、一阶差分方程

1、一阶差分方程的概念

一阶差分方程为:

yt = Φyt-1+wt

这个动态方程将变量在第t期的值yt与变量wt及变量在第t-1期的值联系起来。在后面的分析中,wt将被处理为随机变量,但在目前,我们先将其看作一期期的确定值。

2、用递归法求解差分方程

假定已知条件为:y-1和wt,其中t=0,1,2,...

在每个时期,我们都有一个方程将当期的y与前一期的y及当期的w联系起来,从而在已知y-1和wt在任意时期的值时,我们可以通过递归模拟出这个动态过程,进而求出y在每一时期的值。

第0期 y0= Φy-1+w0

第1期 y1= Φy0+w1

第2期 y2= Φy1+w2

• •

• •

• •

第t期 yt= Φyt-1+wt

进而,y1= Φy0+w1=Φ(Φy-1+w0)=

Φ2y-1+Φw0+w1

y2= Φy1+w2=Φ(Φ2y-1+Φw0+w1)=

Φ3y-1+Φ2w0+Φw1+w2

依此类推,可得




python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点


3、动态乘子

通过递归法模拟一阶差分方程,我们将yt表示为y-1与w的历史值的线性函数,这让我们很容易地看到w的各期值对yt的影响,如w0对yt的影响为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_02


我们可以将yt+j表示为yt-1和w的历史值的线性函数(这里先贴图,后面有时间再打公式):


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_03


从而,wt对yt+j的影响为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_04


这里就能很明显地看出,动态乘子(我理解为w的某一期值对y的某一期值的影响系数)只取决于时间间隔 j,而与时间t无关。

Φ的值密切相关。当0<Φ<1,随着时间间隔 j 的增大,w的影响以几何级数的速度趋于0;当-1<Φ<0,w对y的影响会震荡收敛于0;当Φ>1或Φ<-1时,动态乘子将以指数速度增加(不知道是不是所谓的爆炸过程),只不过都Φ为负时是一个振荡发散过程。因此,当|Φ|<1,差分方程是稳定(收敛)的,当|Φ|>1时系统是发散的。而对于边界情况Φ=1,式子变为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_05


即w的每一历史值对y的影响均为1,w每增加一单位将导致y永久性地增加一单位:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_06


接下来我们考虑w对y的所有现值的影响效应,假设利率为r,则t时刻的现值为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_07


记β=1/(1+r)为折现因子,则现值为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_08


将该式对wt求偏导有:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_09


对于动态乘子的计算,该式只关心wt增加一单位同时wt+1及以后的未来值均不改变时对y的影响,即它计算的是w的某一时期的单个冲击对y的某一时期的影响效应,所以也称动态乘子式为脉冲响应函数。有时我们可能更关心w的永久变化对y的影响效应,永久变化的意思是说从某一期开始,w的值永久性增加1个单位,对y的影响为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_10


当|Φ|<1且j趋于无穷时,我们就得到了w对y的长期效应:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_11


另一个相关的问题是考虑w某一时期的一个冲击对y各个时期的累积影响效应为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_12


注意w的冲击对y的累积效应等于w的永久变化对y的某一时期的长期效应。

二、p阶差分方程

1、p阶差分方程的概念


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_13


该动态方程将第t期的值与p阶滞后性及wt关联起来,称之为p阶差分方程。

首先定义(px1)的向量ξt为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_14


定义(pxp)的矩阵F为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_15


定义(px1)的向量vt为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_16


则有以下一阶向量差分方程:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_17


简单验证可知该方程的第一个分量表达式即为前面的p阶差分方程。将p阶差分方程转化为一阶向量差分方程可以类比一阶差分方程的思路去解p阶差分方程。


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_18


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_19


按照上式递归:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_20


将这个结果转化为ξ和v的定义式,有:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_21


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_22


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_23


。则该系统的第一个方程可以写为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_24


将式子推广:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_25


同样的方法可以得出:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_26


从而,p阶差分方程的动态乘子式为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_27


对于该动态乘子的具体数值,我们可以通过数值模拟得出。步骤如下


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_28


并且令其他的所有w为0,然后递归到第t期得到的y值即为yt对w0的脉冲响应。

尽管我们可以通过数值模拟的到任意一个我们关心的脉冲响应,但对动态乘子进行简单分析还是很有必要的。由前面已经,动态乘子等于F的j次方的第(1,1)个元素给出,矩阵论告诉我们该元素可以有F矩阵的特征值容易地给出。解方程:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_29


即可得到F的所有特征值。对于p阶差分方程,该方程实质上是关于λ的p阶方程,将其展开并处理即可得到如下形式


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_30


下面分两种情形继续讨论:

(1)F非奇异,F有p个不同的特征值

(2)F不是可逆矩阵,F存在相同的特征值

  • F有p个不同的特征值

由矩阵论我们知道,当(pxp)的矩阵F有P个不同的特征值时,则存在一个非奇异矩阵T,使得


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_31


其中,Λ是一个主对角线元素为F的特征值,其余元素为0的(pxp)对角矩阵,即:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_32


从而


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_33


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_34


则可以展开为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_35


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_36


从而动态乘子式可以表示为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_37



python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_38


其中:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_39


从而Ci的和为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_40


= 1

因为该和式即为T•T-1的第(1,1)个元素。综上,p阶差分方程的动态乘子式的用F特征值表示的形式为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_41


其中,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_42


接下来我们对P=2的特殊情形进行详细讨论。

2、二阶差分系统

二阶差分方程的特征方程为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_43


可以解出两个特征值为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_44


当Φ12+4Φ2>0时,两个特征值均为实数。当λ1>1时,即λ


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_45


或者


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_46


首先,当Φ1>=2时,上式明显成立,当Φ1<2时,两边平方得


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_47



python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_48


时,λ1>1。

同理,当λ2<-1时,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_49


当Φ1<-2时,上式恒成立,当Φ1>-2时,两边平方得


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_50


时,λ2<-1。见下图


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_51


当Φ1与Φ2组成的坐标点落在直线Φ2=1+Φ1的左上方或者落在直线Φ2=1-Φ1的右上方时,系统均不稳定,即λ1或λ2其中之一的绝对值大于1,二阶差分方程就不稳定。

当Φ12+4Φ2<0时,两个特征值均为复数且共轭,可以写成以下形式


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_52


a,b可以用Φ1与Φ2表示为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_53


为方便进行计算,我们可以将复数转换为极坐标形式


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_54


其中


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_55


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_56


进而可以写为指数形式:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_57


因此,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_58


同理可得(λ1与λ2共轭),


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_59


所以,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_60


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_61


上式看着似乎还是一个复数,不过,实际上,上式是实数。因为λ1与λ2为共轭复数的情形下,c1与c2也为共轭复数,他们可以写为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_62


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_63


带入上式,可得:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_64


可以看到,当R<1时,动态乘子随 j 的增大会振荡收敛于0;当R=1时,动态乘子是关于 j 的周期函数,周期由2π/θ给出;当R>1时,动态乘子是一个振荡发散过程。如图


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_51


当Φ12+4Φ2<0时,即(Φ1,Φ2)位于图中抛物线以下时,λ1,λ2为共轭复数。又由


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_66


可得


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_67


当Φ2<-2时,|R|>1,二阶差分系统振荡发散。即图中位于Φ2=-2以下的点全都不稳定。

综上所述,只有当(Φ1,Φ2)落在图中三角形区域内时,二阶差分系统才是稳定的。

3、F具有重复的特征值

这种情况的相关式子的推导计算更为复杂,但思路大体一致。假设F有重复的特征值并且具有s<p个线性独立的特征向量,利用Jordan分解有:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_68


其中,M为(pxp)矩阵,J 的形式为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_69


其中,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_70


所以,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_71


其中,


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_72


可以看到,只要知道 J 的具体值,就能够向前面一样讨论出动态乘子的表达式。

4、长期与现值的计算

到目前为止,我们一直在讨论动态乘子即脉冲响应的情况,接下来让我们一起看看P阶差分系统的长期效应与w对现值的影响。

若F的所有特征值的模小于1,则当 j 很大时,Fj 趋于0,从而我们可以将yt看着w的无限期历史值的解:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_差分_73


其中ψj即脉冲响应由 Fj 第(1,1)个元素给出。

计算w的暂时冲击对y的现值的影响同样重要,首先有


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_74


v的变化对ξ的现值影响为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_特征值_75


进而,w对y的现值影响为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_76


这实际上就是上述矩阵的第(1,1)个元素,并且其值为


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_计算差分方程的收敛点_77


上式中,令β=1即可得到w的短暂冲击对y的长期效应为:


python 计算时间序列数据的一阶差分 时间序列一阶差分方程_脉冲响应_78


这个式子的另一种解释为w的永久变化对y的影响。