typora-root-url: …\图
时间序列预测(不包含深度学习)
文章目录
一、单变量预测
ARIMA
ARIMA(p,d,q)模型全称为差分自回归移动平均模型,其中AR是自回归,p是自回归项;MA是移动平均,q是移动平均项数;d是时间序列变得平稳时所做的差分次数。
原理:将非平稳时间序列转化为平稳时间序列,然后对因变量的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。
1.基本步骤
-
获取被观测系统时间序列数据;
-
对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行 d d d阶差分运算,化为平稳时间序列;
-
经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF ,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p p p 和阶数 q q q;
-
由以上得到的 d d d、 q q q、 p p p,得到ARIMA模型。然后开始对得到的模型进行模型检验。
(1)自回归模型AR
描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测
自回归模型必须满足平稳性要求
p阶自回归过程的公式定义:
y t y_t yt是当前值, μ \mu μ是常数项, P P P是阶数, γ i \gamma_i γi是自相关系数, ϵ t \epsilon_t ϵt是误差(符合正态分布)
(P 当前值距p天前值的关系)
(2)移动平均模型MA
移动平均模型关注的是自回归模型中的误差项的累加
q阶自回归过程的公式定义:
(3)自回归移动平均模型(ARMA)
(4)选择 p p p和 q q q的方法
(1)自相关函数ACF(q),偏自相关函数PACF(p)
模型 | ACF | PACF |
---|---|---|
AR§ | 衰减趋于零(几何型或震荡型) | P阶后截尾 |
MA(q) | q阶后截尾 | 衰减趋于零(几何型或震荡型) |
ARMA(p,q) | q阶后衰减趋于零(几何型或震荡型) | p阶后衰减趋于零(几何型或震荡型) |
-
若PACF p阶段后截尾,则截尾的阶数即为模型所确定的参数p
-
若ACF q阶段后截尾,则截尾的阶数即为模型所确定的参数q
(2)AIC准则,BIC准则
2.参数(以Merlion包下ARIMA模型为例)
max_forecast_steps:想要预测的期数
target_seq_index:预测目标的索引
order:(p,d,q)
二、多变量预测
1.VAR
向量自回归模型,简称VAR模型,是AR 模型的推广,是一种常用的计量经济模型。在一定的条件下,多元MA和ARMA模型也可转化成VAR模型。
**原理:**VAR模型把系统中每一个内生变量作为系统中所有内生变量滞后值的函数来构造模型,从而实现了将单变量自回归模型推广到由多元时间序列变量组成的“向量”自回归模型。
(1)基本步骤
其中,
-
Y t Y_t Yt 表示 k k k 维内生变量列向量
-
Y t − i , i = 1 , 2 , . . . , p Y_{t-i},i=1,2,...,p Yt−i,i=1,2,...,p为滞后的内生变量
-
X t X_t Xt表示 d d d维外生变量列向量,它可以是常数变量、线性趋势项或者其他非随机变量
-
p p p是滞后阶数
-
T T T为样本数目
-
Φ i 即 Φ 1 , Φ 2 , . . . , Φ p \Phi_i即\Phi_1,\Phi_2,...,\Phi_p Φi即Φ1,Φ2,...,Φp为 k × k k×k k×k维的待估矩阵
-
B B B为 k × d k×d k×d维的待估矩阵
-
ε t ε_t εt~ N ( 0 , Σ ) N(0,Σ) N(0,Σ) 为 k 维白噪声向量,它们相互之间可以同期相关,但不与自己的滞后项相关( ε t ε_t εt独立同分布,而 ε t ε_t εt中的分量不要求相互独立),也不与上式中右边的变量相关。 Σ Σ Σ 是 ε t ε_t εt的协方差矩阵, 是一个 k × k k×k k×k的正定矩阵。
(2)参数
max_forecast_steps:想要预测的期数
target_seq_index:预测目标的索引
maxlags:AR的最大滞后数
2.回归树
核心:划分点选择 + 输出值确定。
回归树就是将特征空间划分成若干单元,每一个划分单元有一个特定的输出。因为每个结点都是“是”和“否”的判断,所以划分的边界是平行于坐标轴的。对于测试数据,我们只要按照特征将其归到某个单元,便得到对应的输出值。
【例】左边为对二维平面划分的决策树,右边为对应的划分示意图,其中c1,c2,c3,c4,c5是对应每个划分单元的输出。
如现在对一个新的向量(6,6)决定它对应的输出。第一维分量6介于5和8之间,第二维分量6小于8,根据此决策树很容易判断(6,6)所在的划分单元,其对应的输出值为c3。
(1)基本步骤
[切分点选择:最小二乘法]; [输出值:单元内均值]
假设X和Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集为 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) D={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} D=(x1,y1),(x2,y2),...,(xN,yN),其中 x i = ( x i ( 1 ) , x i ( 2 ) , . . . , x i ( n ) ) x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)}) xi=(xi(1),xi(2),...,xi(n))为输入实例(特征向量),n为特征个数, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N, N N N为样本容量。
对特征空间的划分采用启发式方法,每次划分逐一考察当前集合中所有特征的所有取值,根据平方误差最小化准则选择其中最优的一个作为切分点。如对训练集中第 j j j个特征变量 x ( j ) x^{(j)} x(j)和它的取值s,作为切分变量和切分点,并定义两个区域 R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } R_1(j,s)=\{x|x^{(j)}\leq s\} R1(j,s)={x∣x(j)≤s}和 R 2 ( j , s ) = { x ∣ x ( j ) > s } R_2(j,s)=\{x|x^{(j)}>s\} R2(j,s)={x∣x(j)>s},为找出最优的 j j j和 s s s,对下式求解
也就是找出使要划分的两个区域平方误差和最小的 j j j和 s s s。
其中, c 1 c_1 c1, c 2 c_2 c2为划分后两个区域内固定的输出值,方括号内的两个min意为使用的是最优的 c 1 c_1 c1和 c 2 c_2 c2,也就是使各自区域内平方误差最小的 c 1 c_1 c1和 c 2 c_2 c2,易知这两个最优的输出值就是各自对应区域内 Y Y Y的均值,所以上式可写为
其中,
,
。
(2)示例
下表为训练数据集,特征向量只有一维,根据此数据表建立回归决策树。
x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
y | 5.56 | 5.7 | 5.91 | 6.4 | 6.8 | 7.05 | 8.9 | 8.7 | 9 | 9.05 |
1) 选择最优切分变量j与最优切分点s:
在本数据集中,只有一个特征变量,最优切分变量自然是x。接下来考虑9个切分点 { 1.5 , 2.5 , 3.5 , 4.5 , 5.5 , 6.5 , 7.5 , 8.5 , 9.5 } \{1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5\} {1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5}(切分变量两个相邻取值区间 [ a i , a i + 1 ) [a^i,a^{i+1}) [ai,ai+1)内任一点均可),计算每个待切分点的损失函数值:
其中,
,
a. 计算子区域输出值
当s=1.5时,两个子区域 R 1 = { 1 } R_1=\{1\} R1={1}, R 2 = { 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } R_2=\{2,3,4,5,6,7,8,9,10\} R2={2,3,4,5,6,7,8,9,10}, c 1 = 5.56 c_1=5.56 c1=5.56, c 2 = 1 9 ( 5.7 + 5.91 + 6.4 + 6.8 + 7.05 + 8.9 + 8.7 + 9 + 9.05 ) = 7.5 c_2=\frac19 (5.7+5.91+6.4+6.8+7.05+8.9+8.7+9+9.05)=7.5 c2=91(5.7+5.91+6.4+6.8+7.05+8.9+8.7+9+9.05)=7.5
同理,得到其他各切分点的子区域输出值,列表如下
s | 1.5 | 2.5 | 3.5 | 4.5 | 5.5 | 6.5 | 7.5 | 8.5 | 9.5 |
---|---|---|---|---|---|---|---|---|---|
c 1 c_1 c1 | 5.56 | 5.63 | 5.72 | 5.89 | 6.07 | 6.24 | 6.62 | 6.88 | 7.11 |
c 2 c_2 c2 | 7.5 | 7.73 | 7.99 | 8.25 | 8.54 | 8.91 | 8.92 | 9.03 | 9.05 |
b. 计算损失函数值,找到最优切分点
当s=1.5时, L ( 1.5 ) = ( 5.56 − 5.56 ) 2 + [ ( 5.7 − 7.5 ) 2 + ( 5.91 − 7.5 ) 2 + . . . + ( 9.05 − 7.5 ) 2 ] = 15.72 L(1.5)=(5.56-5.56)^2+[(5.7-7.5)^2+(5.91-7.5)^2+...+(9.05-7.5)^2]=15.72 L(1.5)=(5.56−5.56)2+[(5.7−7.5)2+(5.91−7.5)2+...+(9.05−7.5)2]=15.72
同理,计算得到其他各切分点的损失函数值,列表如下
s | 1.5 | 2.5 | 3.5 | 4.5 | 5.5 | 6.5 | 7.5 | 8.5 | 9.5 |
---|---|---|---|---|---|---|---|---|---|
L(s) | 15.72 | 12.07 | 8.36 | 5.78 | 3.91 | 1.93 | 8.01 | 11.73 | 15.74 |
易知,取 s = 6.5 s=6.5 s=6.5时,损失函数值最小。因此,第一个划分点为 ( j = x , s = 6.5 ) (j=x,s=6.5) (j=x,s=6.5)。
2)用选定的对 ( j , s ) (j,s) (j,s)划分区域并决定相应的输出值:
划分区域为: R 1 = { 1 , 2 , 3 , 4 , 5 , 6 } , R 2 = { 7 , 8 , 9 , 10 } R_1=\{1,2,3,4,5,6\},R_2=\{7,8,9,10\} R1={1,2,3,4,5,6},R2={7,8,9,10}
对应输出值: c 1 = 6.24 , c 2 = 8.91 c_1=6.24,c_2=8.91 c1=6.24,c2=8.91
3) 调用步骤(1),(2),继续划分:
对 R 1 R_1 R1,取切分点 { 1.5 , 2.5 , 3.5 , 4.5 , 5.5 } \{1.5,2.5,3.5,4.5,5.5\} {1.5,2.5,3.5,4.5,5.5},计算得到单元输出值为
s | 1.5 | 2.5 | 3.5 | 4.5 | 5.5 |
---|---|---|---|---|---|
c 1 c_1 c1 | 5.56 | 5.63 | 5.72 | 5.89 | 6.07 |
c 2 c_2 c2 | 6.37 | 6.54 | 6.75 | 6.93 | 7.05 |
损失函数值为
s | 1.5 | 2.5 | 3.5 | 4.5 | 5.5 |
---|---|---|---|---|---|
L(s) | 1.3087 | 0.754 | 0.2771 | 0.4368 | 1.0644 |
L(3.5)最小,取s=3.5为划分点。后面同理。
4) 生成回归树:
假设两次划分后即停止,则最终生成的回归树为: