时间序列分解入门

时间:2021-09-19 18:14:56

最近在学习时间序列分析,而在学习的过程中,首先遇到的问题就是如何对时间序列进行分解。如果写的过程中有什么错误,还希望能够被及时纠正。
一、时间序列的组成
经济时间序列的变化受到长期趋势、季节变动和不规则变动这四个因素的影响。其中:
(1) 长期趋势因素(T)
长期趋势因素(T)反映了经济现象在一个较长时间内的发展方向,它可以在一个相当长的时间内表现为一种近似直线的持续向上或持续向下或平稳的趋势。
(2) 季节变动因素(S)
季节变动因素(S)是经济现象受季节变动影响所形成的一种长度和幅度固定的周期波动。
(3) 周期变动因素(C)
周期变动因素也称循环变动因素,它是受各种经济因素影响形成的上下起伏不定的波动。
(4) 不规则变动因素(I)
不规则变动又称随机变动,它是受各种偶然因素影响所形成的不规则变动。
这里值得注意的值得注意的包括以下两点:

  • 季节变动因素和周期变动因素的区别:周期变动因素的变动不具有固定周期,但季节变动的具有固定周期同时与特定日期相关。
  • 很多时候,我们没必要区分长期趋势因素和周期变动因素,统称为趋势-周期因素( T`t )

二、时间序列分解模型
时间序列Y可以表示为以上四个因素的函数,即:

yt=f(Tt,St,Ct,It)

这里 yt , Tt , Ct , It 分别表示时间序列原始值、长期趋势因素、季节变动因素、周期变动因素和不规则变动因素。
时间序列分解的方法有很多,较常用的模型有加法模型和乘法模型。
加法模型为:
yt=Tt+St+Ct+It

乘法模型为:
yt=Tt×St×Ct×It

这两个模型分别试用与不同情形:

  • 如果季节变动的幅度以及趋势和周期的波动都不随时间变化而变化,则比较适合试用加法模型
  • 如果季节变动的幅度或趋势和周期的波动随时间变化而变化,则比较适合试用乘法法模型


  • 在很多时候,这两个模型是可以相互转换的,一个有效的方式就是通过Log函数,即:
    yt=Tt×St×Ct×Itisequivalenttologyt=logTt+logSt+logCt+logIt

  • 三:模型的分解
    3.1 移动平均:
    通常,我们使用移动平均来估计趋势-周期因素。
    一个m阶的公式如下所示:
    T`t=1mj=kkyt+j

    在上式中,m=2k+1. 在这里,我们通过平均k个时间周期的时间序列来消除数据中的一些随机因素,从而来估算趋势-周期因素的值。这里,我们用m-MA来表示m阶的移动平均。
    3.2 移动平均的移动平均
    移动平均的移动平均表示的是我们在对原始时间序列数据应用移动m-MA之后,对其输出的数据继续使用n-MA,这里我们使用”n × m-MA”来表示这个过程。
    我们进行”n × m-MA”的一个重要原因就是为了使得偶数阶移动平均对称。我们以”2 × 4-MA”为例,具体计算如下:
    T`t=12[14yt2+yt1+yt+yt+1+14yt1+yt+yt+1+yt+2]=18yt2+14yt1+14yt+14yt+1+18yt+2

    通过上式,我们发现”2 × 4-MA”具有对称性,所以我们把”2 × 4-MA”称作4阶的中心移动平均。中心移动平均的一个重要用途就是从季节性数据中进行趋势-周期因素的估算,例如我们在使用”2 × 4-MA”,数据为季节性数据时,每个季节都被给予了相同的权重,因此季节性的变动就可以通过这种方式消除。通常”2 × m-MA”等价于所有中间样本被赋予权值 1m ,首尾样本被赋予权值 12m 的”2 × m-MA”。
    当然,我们也可以进行其他组合,例如”3 × 3-MA”。 通常,为了使”n × m-MA”结果满足对称性,n与m要么都是奇数,要么都是偶数。
    3.3经典时间序列分解
    3.3.1加法模型分解的步骤:
    (1)运用移动平均法剔除趋势-周期变化,得到序列T+C(即 T`t ),这里如果m为奇数,则用m-MA,否则使用”2 × m-MA”。
    (2)作散点图,选择适合的曲线模型拟合序列的长期趋势,得到长期趋势T。
    (3)计算周期因素C。用序列T+C减去T即可得到周期变动因素C。
    (4)然后再用按月(季)平均法求出季节指数S,即把所有相同月(季)的数据进行平均。
    (5)将时间序列的T、S、C分解出来后,剩余的即为不规则变动,即:
    I=YTCS

    3.3.2乘法模型分解的步骤:
    乘法模型分解的基本步骤是:
    (1)运用移动平均法剔除趋势-周期变化,得到序列TC(即 T`t ),这里如果m为奇数,则用m-MA,否则使用”2 × m-MA”。
    (2)作散点图,选择适合的曲线模型拟合序列的长期趋势,得到长期趋势T。
    (3)计算周期因素C。用序列TC减去T即可得到周期变动因素C。
    (4)然后再用按月(季)平均法求出季节指数S,即把所有相同月(季)的数据进行平均。
    (5)将时间序列的T、S、C分解出来后,剩余的即为不规则变动,即:
    I=YTSC

    3.3.2评价
    尽管经典时间序列分解仍然被广泛使用,但这并不是一种被推荐使用的方法。经典时间序列分解存在如下几个问题:

    • 无法估算最开始和最后的几个样本的趋势值(移动平均法的局限性)。
    • 传统的分解法假设季节因素每年都一样
    • 传统的分解法无法很好的处理异常值

    3.4 X-12-ARIMA分解法
    X-12-ARIMA是现在一种目前广泛使用的时间序列分解法,它基于传统的时间序列分解法,同时克服了传统分解法的缺点,其特点如下:

    • 可以估算所有样本的趋势值
    • 季节因素可以实现随着时间的变化而缓慢变化
    • 对异常值有较好的鲁棒性
    • 可以同时处理加法和乘法分解,但只能针对季度或月份数据

    具体算法请参考: https://www.otexts.org/fpp/6/4
    3.5 STL分解法
    STL分解法是一个兼具通用性和鲁棒性的时间序列分解法。STL是”Seasonal and Trend decomposition using Loess”的简写。
    它具有以下优点:

    • 可以处理任何类型的季节变动因素的数据,而不仅仅是季度或是月份的数据
    • 季度成分可以被允许随着时间变化而变化,并且用户可以自行控制变化率
    • 用户可以自行控制趋势-周期成分的平滑度
    • 对异常值有更好的鲁棒性

    同时它也有以下缺点:

    • 它只适用于加法模型
    • it does not automatically handle trading day or calendar variation