时间序列
Assumption:
预测所依据的数据具有不规则性
不考虑事物发展之间的因果关系
变化形式:
长期趋势:主要变化趋势
季节变动:在每期内重复出现的周期性变动(周期一般为12月)
循环变动:以期数为周期而重复出现的周期性变动
不规则变动:偶然变动
方法
指数平滑法
一次指数平滑法
设时间序列为y 1 , y 2 , . . . , y t y_{1},y_{2},...,y_{t} y 1 , y 2 , ... , y t ,一次指数平滑法公式为:
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) = S t − 1 ( 1 ) + α ( y t − S t − 1 ( 1 ) ) \begin{array}{l}
\mathrm{S}_{t}^{(1)}=\alpha y_{t}+(1-\alpha) \mathrm{S}_{t-1}^{(1)}=\mathrm{S}_{t-1}^{(1)}+\alpha\left(y_{t}-\mathrm{S}_{t-1}^{(1)}\right)
\end{array}
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) = S t − 1 ( 1 ) + α ( y t − S t − 1 ( 1 ) )
预测模型(指数平滑值)为:
y ^ t + 1 = S t ( 1 ) \hat{y}_{t+1}=S_{t}^{(1)}
y ^ t + 1 = S t ( 1 )
即:
y ^ t + 1 = α y t + ( 1 − α ) y ^ t \hat{y}_{t+1}=\alpha y_{t}+(1-\alpha) \hat{y}_{t}
y ^ t + 1 = α y t + ( 1 − α ) y ^ t
α \alpha α 选择
新数据所占比重与α \alpha α 成正比
α \alpha α 选取0.6-0.8,增强预测模型的灵敏度,跟上数据变化
α \alpha α 选取0.1-0.5,以减小修正幅度,预测模型可以包含较长的信息
初始值选择
数据在20个以上选取第一个值
20个以下选取第一二个的平均值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 clear all; real_sale = [50 52 47 51 49 48 51 40 48 52 51 59 ]; a = [0.2 0.5 0.8 ]; y1 = (real_sale(1 )+real_sale(2 ))/2 ; pre = zeros (3 ,12 ); pre(:,1 ) = y1;for i = 1 :3 for j = 2 :12 pre(i ,j ) = (real_sale(j -1 )*a(i )+pre(i ,j -1 )*(1 -a(i ))); end end pre; real_sale = repmat (real_sale,3 ,1 ); err = sqrt (mean ((real_sale-pre)'.^2 )) err = 4.5029 4.5908 4.8426 故选用0.2 预测1988 数值 pre1988 = 0.2 *real_sale(i ,j )+0.8 *pre(1 ,j ) pre1988 = 51.1754
确定时间序列包含成分——>确定时间序列类型——>找出时间序列变化趋势——>确定预测方法——>对预测方法进行评估,确定最佳方案
一次指数平滑法具有滞后性,拓展为二次指数平滑法
二次指数平滑法
计算公式:
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) S t ( 2 ) = α S t ( 1 ) + ( 1 − α ) S t − 1 ( 2 ) \begin{array}{l}
\mathrm{S}_{t}^{(1)}=\alpha y_{t}+(1-\alpha) \mathrm{S}_{t-1}^{(1)} \\
\mathrm{S}_{t}^{(2)}=\alpha \mathrm{S}_{t}^{(1)}+(1-\alpha) \mathrm{S}_{t-1}^{(2)}
\end{array}
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) S t ( 2 ) = α S t ( 1 ) + ( 1 − α ) S t − 1 ( 2 )
S t ( 1 ) S_{t}^{(1)} S t ( 1 ) 是第一次指数的平滑值,$ S_{t}^{(2)}$ 为二次指数平滑值。
当时间序列 { y t } \left\{y_{t}\right\} { y t } , 从某时刻开始具有直线趋势时, 可 用直线趋势模型:
y ^ = a t + b t T , T = 1 , 2 , ⋯ ⋯ { a t = 2 S t ( 1 ) − S t ( 2 ) b t = α 1 − α ( S t ( 1 ) − S t ( 2 ) ) \begin{array}{l}
\hat{y}=a_{t}+b_{t} T \quad, \quad \mathrm{~T}=1,2, \cdots \cdots \\
\left\{\begin{array}{l}
a_{t}=2 \mathrm{~S}_{t }^{(1)}-\mathrm{S}_{t}^{(2)} \\
b_{t}=\frac{\alpha}{1-\alpha}\left(\mathrm{S}_{t}^{(1)}-\mathrm{S}_{t}^{(2)}\right)
\end{array}\right.
\end{array}
y ^ = a t + b t T , T = 1 , 2 , ⋯⋯ { a t = 2 S t ( 1 ) − S t ( 2 ) b t = 1 − α α ( S t ( 1 ) − S t ( 2 ) )
例子:
选取α \alpha α 为0.3,初始值区序列首项S 0 ( 1 ) = S 0 0 = y ( 1 ) S_{0}^{(1)}=S_{0}^{0}=y(1) S 0 ( 1 ) = S 0 0 = y ( 1 )
计算一次平滑值和二次平滑值S 21 ( 1 ) = 3523.1 , S 21 ( 2 ) = 3032.6 S_{21}^{(1)}=3523.1,S_{21}^{(2)}=3032.6 S 21 ( 1 ) = 3523.1 , S 21 ( 2 ) = 3032.6
得到t = 21 t=21 t = 21 时,a 21 = 4013.7 , b 21 = 210.24 a_{21}=4013.7,b_{21}=210.24 a 21 = 4013.7 , b 21 = 210.24
得到t = 21 t=21 t = 21 时的直线趋势方程为:
y ^ 21 + T = 4013.7 + 210.24 T \hat{y}_{21+T}=4013.7+210.24T
y ^ 21 + T = 4013.7 + 210.24 T
预测1986和1987年的总发电量为:
y ^ 1986 = y ^ 22 = y ^ 21 + 1 = 4223.9 \hat{y}_{1986}=\hat{y}_{22}=\hat{y}_{21+1}=4223.9
y ^ 1986 = y ^ 22 = y ^ 21 + 1 = 4223.9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 clc; clear all; yt = [676 825 774 716 940 1159 1384 1524 1668 1688 1958 2031 2234 2566 2820 3006 3093 3277 3514 3770 4107 ]; n = length (yt); alpha = 0.3 ; st1(1 ) = yt(1 ); st2(1 ) = yt(1 );for i = 2 :n st1(i ) = alpha*yt(i )+(1 -alpha)*st1(i -1 ); st2(i ) = alpha*st1(i )+(1 -alpha)*st2(i -1 );end a21 = 2 *st1-st2; b21 = alpha/(1 -alpha)*(st1-st2); y1986 = a21+b21*1 ; y1987 = a21+b21*2 ;disp ('1986年的预测值为:' ); y1986(end )disp ('1987年的预测值为:' ); y1987(end )
三次指数平滑法
当时间序列的变动呈现为二次曲线趋势时进行三次指数平滑
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) S t ( 2 ) = α S t ( 1 ) + ( 1 − α ) S t − 1 ( 2 ) S t ( 3 ) = α S t ( 2 ) + ( 1 − α ) S t − 1 ( 3 ) \begin{array}{l}
\mathrm{S}_{t}^{(1)}=\alpha y_{t}+(1-\alpha) \mathrm{S}_{t-1}^{(1)} \\
\mathrm{S}_{t}^{(2)}=\alpha \mathrm{S}_{t}^{(1)}+(1-\alpha) \mathrm{S}_{t-1}^{(2)}\\
\mathrm{S}_{t}^{(3)}=\alpha \mathrm{S}_{t}^{(2)}+(1-\alpha) \mathrm{S}_{t-1}^{(3)}
\end{array}
S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) S t ( 2 ) = α S t ( 1 ) + ( 1 − α ) S t − 1 ( 2 ) S t ( 3 ) = α S t ( 2 ) + ( 1 − α ) S t − 1 ( 3 )
三次指数平滑法的预测模型为:
y ^ t + T = a t + b t T + c t T 2 , T = 1 , 2 , … \hat{y}_{t+T}=a_{t}+b_{t} T+c_{t} T^{2}, T=1,2, \ldots
y ^ t + T = a t + b t T + c t T 2 , T = 1 , 2 , …
其中
a t = 3 S t ( 1 ) − 3 S t ( 2 ) + S t ( 3 ) b t = α 2 ( 1 − α ) ( 6 − 5 α ) S t ( 1 ) − 2 ( 5 − 4 α ) S t ( 2 ) + ( 4 − 3 α ) S t ( 3 ) ⋅ c t = α 2 2 ( 1 − α ) 2 [ S t ( 1 ) − 2 S t ( 2 ) + + S t ( 3 ) ] \begin{array}{c}
a_{t}=3 \mathrm{~S}_{t}^{(1)}-3 \mathrm{~S}_{t}^{(2)}+\mathrm{S}_{t}^{(3)} \\
b_{t}=\frac{\alpha}{2(1-\alpha)}(6-5 \alpha) \mathrm{S}_{t}^{(1)}-2(5-4 \alpha) \mathrm{S}_{t}^{(2)}+(4-3 \alpha) \mathrm{S}_{t}^{(3)} \\
\cdot \quad c_{t}=\frac{\alpha^{2}}{2(1-\alpha)^{2}}\left[\mathrm{~S}_{t}^{(1)}-2 \mathrm{~S}_{t}^{(2)}++\mathrm{S}_{t}^{(3)}\right]
\end{array}
a t = 3 S t ( 1 ) − 3 S t ( 2 ) + S t ( 3 ) b t = 2 ( 1 − α ) α ( 6 − 5 α ) S t ( 1 ) − 2 ( 5 − 4 α ) S t ( 2 ) + ( 4 − 3 α ) S t ( 3 ) ⋅ c t = 2 ( 1 − α ) 2 α 2 [ S t ( 1 ) − 2 S t ( 2 ) + + S t ( 3 ) ]
例子
取 a = 0.3 a=0.3 a = 0.3 , 初始值$ S_{1}^{(0)}=S_{2}^{(0)}=S_{3}^{(0)}=\frac{y_{1}+y_{2}+y_{3}}{3}=21.94$
计算S t ( 1 ) , S t ( 2 ) , S t ( 3 ) S_{t}^{(1)}, S_{t}^{(2)}, S_{t}^{(3)} S t ( 1 ) , S t ( 2 ) , S t ( 3 )
得到 S 11 ( 1 ) = 151.77 , S 11 ( 2 ) = 101.28 , S 11 ( 3 ) = 68.43 得到S_{11}^{(1)}=151.77, S_{11}^{(2)}=101.28, S_{11}^{(3)}=68.43
得到 S 11 ( 1 ) = 151.77 , S 11 ( 2 ) = 101.28 , S 11 ( 3 ) = 68.43
当t = 11 t=11 t = 11 时
a 11 = 219.91 , b 11 = 38.38 , c 11 = 1.62 a_{11}=219.91, b_{11}=38.38, c_{11}=1.62
a 11 = 219.91 , b 11 = 38.38 , c 11 = 1.62
得到t = 11 t=11 t = 11 时的预测模型为:
y ^ 11 + T = 219.91 + 38.38 T + 1.62 T 2 \hat{y}_{11+T}=219.91+38.38 T+1.62 T^{2}
y ^ 11 + T = 219.91 + 38.38 T + 1.62 T 2
预测可得1989年和1990年的固定资产投资总额为:
y ^ 1989 = y ^ 12 = y ^ 11 + 1 = a 11 + b 11 + c 11 = 259.9174 y ^ 1990 = y ^ 13 = y ^ 11 + 2 = a 11 + 2 b 11 + 2 2 c 11 = 303.1637 \begin{array}{c}
\hat{y}_{1989}=\hat{y}_{12}=\hat{y}_{11+1}=a_{11}+b_{11}+c_{11}=259.9174 \\
\hat{y}_{1990}=\hat{y}_{13}=\hat{y}_{11+2}=a_{11}+2 b_{11}+2^{2} c_{11}=303.1637
\end{array}
y ^ 1989 = y ^ 12 = y ^ 11 + 1 = a 11 + b 11 + c 11 = 259.9174 y ^ 1990 = y ^ 13 = y ^ 11 + 2 = a 11 + 2 b 11 + 2 2 c 11 = 303.1637
为了计算出各期的模拟值, 令T = 1 \mathrm{T}=1 T = 1 , 则得到:
y ^ t + 1 = 3 − 3 α + α 2 ( 1 − α ) 2 S t ( 1 ) − 3 − α ( 1 − α ) 2 S t ( 2 ) + 1 ( 1 − α ) 2 S t ( 3 ) \hat{y}_{t+1}=\frac{3-3 \alpha+\alpha^{2}}{(1-\alpha)^{2}} S_{t}^{(1)}-\frac{3-\alpha}{(1-\alpha)^{2}} S_{t}^{(2)}+\frac{1}{(1-\alpha)^{2}} S_{t}^{(3)}
y ^ t + 1 = ( 1 − α ) 2 3 − 3 α + α 2 S t ( 1 ) − ( 1 − α ) 2 3 − α S t ( 2 ) + ( 1 − α ) 2 1 S t ( 3 )
令t = 0 , 1 , 2 , … 11 \mathrm{t}=0,1,2, \ldots 11 t = 0 , 1 , 2 , … 11 , 得到各期的模拟值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 clc,clear; yt = [20.04 ;20.06 ;25.72 ;34.62 ;51.77 ;55.92 ;80.65 ;131.11 ;148.58 ;162.67 ;232.26 ]; n = length (yt); alpha = 0.3 ; st1_0 = mean (yt(1 :3 )); st2_0 = st1_0; st3_0 = st1_0; st1(1 ) = alpha*yt(1 )+(1 -alpha)*st1_0; st2(1 ) = alpha*st1(1 )+(1 -alpha)*st2_0; st3(1 ) = alpha*st2(1 )+(1 -alpha)*st3_0;for i = 2 :n st1(i )=alpha*yt(i )+(1 -alpha)*st1(i -1 ); st2(i )=alpha*st1(i )+(1 -alpha)*st2(i -1 ); st3(i )=alpha*st2(i )+(1 -alpha)*st3(i -1 );end st1 = [st1_0,st1]; st2 = [st2_0,st2]; st3 = [st3_0,st3]; a11 = 3 *st1-3 *st2+st3; b11 = 0.5 *alpha/(1 -alpha)^2 *((6 -5 *alpha)*st1-2 *(5 -4 *alpha)*st2+(4 -3 *alpha)*st3); c11 = 0.5 *alpha^2 /(1 -alpha)^2 *(st1-2 *st2+st3); yhat = a11+b11+c11plot (1 :n,yt,'*' ,1 :n,yhat(1 :n),'o' ) y1989 = a11+b11+c11 y1990 = a11+2 *b11+2 ^2 *c11disp ('1989年的预测值为' ); y1989(end )disp ('1990年的预测值为' ); y1990(end )
得到结果:
1 2 3 4 5 6 7 8 9 10 11 1989 年的预测值为ans = 259.9169 1990 年的预测值为ans = 303.1629
优缺点
短期经济发展趋势
数据量小,对存储需求也小
仅需选择一个模型参数α \alpha α
初始值及权数参数选取较为主观,会导致结果不同
对数据转折点的鉴别缺乏,长期预测效果差
ARIMA
模型介绍
平稳性
经由样本时间序列所得到的拟合曲线在未来的一段时间内能顺原有形态延续,要求序列的均值 和方差 不发生明显变化
一般都是都是弱平稳:期望与相关系数不变 ,未来的t值Xt依赖于过去的信息
由于数据集可能浮动很大,要保证数据具有稳定性,可以使用差分法 让均值和方差不发生明显的变化
自回归模型(AR)
定义:描述当前值和历史值的关系(用自身的历史值对自身及逆行预测)
p阶自回归过程定义:
y t = μ + ∑ i = 1 p γ i y t − i + ϵ t y_{t}=\mu+\sum_{i=1}^{p} \gamma_{i} y_{t-i}+\epsilon_{t}
y t = μ + i = 1 ∑ p γ i y t − i + ϵ t
$ y_{t}$ 是当前值 μ \mu μ 是常数项 P \mathrm{P} P 是阶数 γ i \gamma_{i} γ i 是自相关系数 $ \epsilon_{t}$ 是误差
求解可以用最大似然估计、最小二乘法
自回归模型的限制
自回归模型是用自身的数据 来进行预测
必须具有平稳性
必须具有自相关性,如果自相关系数小于0.5,则不宜采用
自回归只适用于预测与自身前期相关的现象
移动平均模型(MA)
定义:自回归模型中的误差项累加
p阶自回归过程定义:
y t = μ + ϵ t + ∑ i = 1 q θ i ϵ t − i y_{t}=\mu+\epsilon_{t}+\sum_{i=1}^{q} \theta_{i} \epsilon_{t-i}
y t = μ + ϵ t + i = 1 ∑ q θ i ϵ t − i
移动平均法能有效地消除预测中的随机波动
自回归移动平均模型(ARMA)
combination
定义:
y t = μ + ∑ i = 1 p γ i y t − i + ϵ t + ∑ i = 1 q θ i ϵ t − i y_{t}=\mu+\sum_{i=1}^{p} \gamma_{i} y_{t-i}+\epsilon_{t}+\sum_{i=1}^{q} \theta_{i} \epsilon_{t-i}
y t = μ + i = 1 ∑ p γ i y t − i + ϵ t + i = 1 ∑ q θ i ϵ t − i
差分自回归移动平均模型(ARIMA)
用anaconda安装一些库
ARIMA(p,d,q) :Autoregressive Integrated Moving Average Model
AR是自回归,p为自回归项,MA为移动平均
q为移动平均项数,d为时间序列成为平稳时所做的差分次数
原理:将非平稳时间序列转化为平稳时间序列然后将因变量
仅对它的滞后值 以及随机误差项的现值和滞后值 进行回归所建立的模型
自相关函数ACF
包含了其他变量的影响
有序的随机变量序列与其自身相比较,反映了同一序列再不同时序的取值之间的相关性
公式(k为阶数):
A C F ( k ) = ρ k = Cov ( y t , y t − k ) Var ( y t ) A C F(k)=\rho_{k}=\frac{\operatorname{Cov}\left(y_{t}, y_{t-k}\right)}{\operatorname{Var}\left(y_{t}\right)}
A CF ( k ) = ρ k = Var ( y t ) Cov ( y t , y t − k )
虚线为置信区间(95%)
偏自相关函数(PACF)
只有这两个变量的相关
对于一个平稳A R ( p ) AR(p) A R ( p ) 型、滞后k k k 自相关系数p ( k ) p(k) p ( k ) 时
实际上得到并不是x ( t ) x(t) x ( t ) 与x ( t − k ) x(t-k) x ( t − k ) 间单纯的相关关系
x ( t ) x(t) x ( t ) 同时还会受到中间k − 1 k-1 k − 1 个随机变量x ( t − 1 ) x(t-1) x ( t − 1 ) 、x ( t 一 2 ) x(t一2) x ( t 一 2 ) 、…x ( t − k + 1 ) x(t-k+1) x ( t − k + 1 ) 的影响
而这k − 1 k-1 k − 1 个随机变量又都和x ( t − k ) x(t-k) x ( t − k ) 具有相关关系
所以自相关系数p ( k ) p(k) p ( k ) 里实际掺杂了其他变量对x ( t ) x(t) x ( t ) 与x ( t − k ) x(t-k) x ( t − k ) 的影响
剔除了中间k-1个随机变量x ( t − 1 ) x(t-1) x ( t − 1 ) 、x ( t 一 2 ) x(t一2) x ( t 一 2 ) 、…x ( t − k ) x(t-k) x ( t − k ) 对x ( t ) x(t) x ( t ) 影响的相关程度。
ACF还包含了其他变量的影响
而偏自相关系数PACF是严格这两个变量才间 的相关性
模型建立
① 首先需要对观测值序列进行平稳性检测,如果不平稳,则对其进行差分运算直到差分后的数据平稳;
② 在数据平稳后则对其进行白噪声检验,白噪声是指零均值常方差的随机平稳序列;
③ 如果是平稳非白噪声序列就计算ACF(自相关系数)、PACF(偏自相关系数),进行ARMA等模型识别;
④ 对已识别好的模型,确定模型参数,最后应用预测并进行误差分析。
参考博客
将序列平稳(差分法确定d)
ARIMA(p,d,q)阶数的确定
截尾:落在置信区间内(95%的的点都符合规则)
例如:
下图AR模型 第2(p p p )阶的时候PACF就落在了置信区间内
下图MA模型第q q q 阶的ACF落在了执行区间内
调用模型
模型评估
用于选择更简单的模型
AIC:赤池信息准则(Akaike lnformation Criterion,AIC)
A I C = 2 k 一 2 l n ( L ) AIC=2k一2ln(L)
A I C = 2 k 一 2 l n ( L )
BIC:贝叶斯信息准则(Bayesian lnformation Criterion,BIC)
B I C = k l n ( n ) 一 2 l n ( L ) BIC=kln(n)一2ln(L)
B I C = k l n ( n ) 一 2 l n ( L )
k为模型参数个数,n为样本数量,L为似然函数
p , q p,q p , q 越大,参数越多,k k k 越大,要使得AIC和BIC越小越好
模型残差检验
ARIMA模型的残差最好是均值为0且方差为常数的正态分布,绘制QQ图
代码可参考
课程链接