时间序列

1. 确定性时间序列分析方法

1.1 移动平均法
设观测序列为 y 1 , ⋯   , y T y_1,\cdots,y_T y1,,yT,取移动平均的项数N<T。一次移动平均值计算公式为 M t ( 1 ) = 1 N ( y t + y t − 1 + ⋯ + y t − N + 1 ) = M t − 1 ( 1 ) + 1 N ( y t − y t − N ) M_t^{(1)}=\cfrac1N(y_t+y_{t-1}+\cdots+y_{t-N+1})=M_{t-1}^{(1)}+\cfrac1N(y_t-y_{t-N}) Mt(1)=N1(yt+yt1++ytN+1)=Mt1(1)+N1(ytytN)二次移动平均值计算公式为 M t ( 2 ) = 1 N ( M t ( 1 ) + ⋯ + M t − N + 1 ( 1 ) ) = M t − 1 ( 2 ) + 1 N ( M t ( 1 ) − M t − N ( 1 ) ) M_t^{(2)}=\cfrac1N(M_{t}^{(1)}+\cdots+M_{t-N+1}^{(1)})=M_{t-1}^{(2)}+\cfrac1N(M_{t}^{(1)}-M_{t-N}^{(1)}) Mt(2)=N1(Mt(1)++MtN+1(1))=Mt1(2)+N1(Mt(1)MtN(1))当预测目标的基本趋势是在某一水平上下波动时,可用一次移动平均方法建立预测模型。其预测标准误差为 S = ∑ t = N + 1 T ( y ^ t − y t ) 2 T − N S=\sqrt{\cfrac{\sum_{t=N+1}^T(\hat{y}_t-y_t)^2}{T-N}} S=TNt=N+1T(y^tyt)2 将最近N期序列值得平均值作为未来各期的预测结果,一般N取值范围 5 ⩽ N ⩽ 200 5\leqslant N\leqslant200 5N200。选择最佳N值的一个有效方法是,比较若干模型的预测误差,预测标准差最小者为好。
当预测目标的基本趋势与某一线性模型相吻合时,常用二次移动平均法,但序列同时存在线性趋势和周期波动时,可用趋势移动平均法建立预测模型 y ^ T + m = a T + b T m   , m = 1 , 2 , ⋯ \hat{y}_{T+m}=a_T+b_Tm\ ,m=1,2,\cdots y^T+m=aT+bTm ,m=1,2,式中 a T = 2 M T ( 1 ) − M T ( 2 ) , b T = 2 N − 1 ( M T ( 1 ) − M T ( 2 ) ) a_T=2M_T^{(1)}-M_T^{(2)},b_T=\cfrac{2}{N-1}(M_T^{(1)}-M_T^{(2)}) aT=2MT(1)MT(2),bT=N12(MT(1)MT(2))
移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况。如果目标的发展趋势存在其他的变化,采用简单的移动平均法就会产生较大的预测偏差和滞后。

1.2 指数平滑法
一次移动平均认为最近N期数据对未来值影响相同,都加权1/N,而N期以前的数据对未来值没有影响,加权为0。二次及更高次移动平均的权数却不是1/N,两端权数小,中间权数大,不符合一般系统的动态性。更切实际的方法是对各期观测值依时间顺序进行加权平均作为预测值,可使用指数平滑法。

1.2.1 一次指数平滑法

  • 预测模型:设时间序列为 y 1 , y 2 , ⋯   , y t , ⋯   , α y_1,y_2,\cdots,y_t,\cdots,\alpha y1,y2,,yt,,α为加权系数, 0 < α < 1 0<\alpha<1 0<α<1,一次指数平滑公式为 S t ( 1 ) = α y t + ( 1 − α ) S t − 1 ( 1 ) S_t^{(1)}=\alpha y_t+(1-\alpha)S_{t-1}^{(1)} St(1)=αyt+(1α)St1(1)以这种平滑值进行预测,就是一次指数平滑法,预测模型为 y ^ t + 1 = S t ( 1 ) \hat{y}_{t+1}=S_t^{(1)} y^t+1=St(1),即 y ^ t + 1 = α y t + ( 1 − α ) y ^ t \hat{y}_{t+1}=\alpha y_t+(1-\alpha)\hat{y}_{t} y^t+1=αyt+(1α)y^t
  • 加权系数的选择:由预测公式看出, α \alpha α值越大,新数据所占的比重就越大。将公式改写为 y ^ t + 1 = y ^ t + α ( y t − y ^ t ) \hat{y}_{t+1}= \hat{y}_{t}+\alpha(y_t-\hat{y}_{t}) y^t+1=y^t+α(yty^t)可看出 α \alpha α值越大,修正幅度越大。实际中应多取几个 α \alpha α值进行试算,哪个预测误差小就采用哪个。
  • 初始值的确定:用一次指数平滑法进行预测,除了选择合适的 α \alpha α外,还要确定初始值 s 0 ( 1 ) s_0^{(1)} s0(1),初始值是由预测者估计或指定的。当时间序列的数据较多时(20个以上),初始值对以后的预测值影响很小,可选用第一期的数据为初始值。若时间序列的数据较少,一般以最初几期实际值的平均值作为初始值。

1.2.2 二次指数平滑法
一次指数平滑法虽然克服了移动平均法的缺点,但当时间序列的变动出现直线趋势时,用一次指数平滑法进行预测,仍存在明显的滞后偏差,因此也必须加以修正。二次指数平滑法利用滞后偏差的规律建立直线趋势模型,计算公式为 S t ( 2 ) = α S t ( 1 ) + ( 1 − α ) S t − 1 ( 2 ) S_t^{(2)}=\alpha S_t^{(1)}+(1-\alpha)S_{t-1}^{(2)} St(2)=αSt(1)+(1α)St1(2)当时间序列 { y t } \left\{y_t\right\} {yt}从某时期开始具有直线趋势时,可用直线趋势模型进行预测 y ^ t + m = a t + b t m   , m = 1 , 2 , ⋯ \hat{y}_{t+m}=a_t+b_tm\ ,m=1,2,\cdots y^t+m=at+btm ,m=1,2,式中 a t = 2 S t ( 1 ) − S t ( 2 ) , b t = α 1 − α ( S t ( 1 ) − S t ( 2 ) ) a_t=2S_t^{(1)}-S_t^{(2)},b_t=\cfrac{\alpha}{1-\alpha}(S_t^{(1)}-S_t^{(2)}) at=2St(1)St(2),bt=1αα(St(1)St(2))

1.2.3 三次指数平滑法
当时间序列的变动表现为二次曲线趋势时,需要用三次指数平滑法,是在二次指数平滑的基础上,在进行一次平滑,计算公式为 S t ( 3 ) = α S t ( 2 ) + ( 1 − α ) S t − 1 ( 3 ) S_t^{(3)}=\alpha S_t^{(2)}+(1-\alpha)S_{t-1}^{(3)} St(3)=αSt(2)+(1α)St1(3)三次指数平滑法的预测模型为 y ^ t + m = a t + b t m + C t m 2   , m = 1 , 2 , ⋯ \hat{y}_{t+m}=a_t+b_tm+C_tm^2\ ,m=1,2,\cdots y^t+m=at+btm+Ctm2 ,m=1,2,式中 a t = 3 S t ( 1 ) − 3 S t ( 2 ) + S t ( 3 ) , b t = α 2 ( 1 − α ) 2 [ ( 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 ) ] a_t=3S_t^{(1)}-3S_t^{(2)}+S_t^{(3)},b_t=\cfrac{\alpha}{2(1-\alpha)^2}[(6-5\alpha)S_t^{(1)}-2(5-4\alpha)S_t^{(2)}+(4-3\alpha)S_t^{(3)}],c_t=\cfrac{\alpha^2}{2(1-\alpha)^2}[S_t^{(1)}-2S_t^{(2)}+S_t^{(3)}] at=3St(1)3St(2)+St(3),bt=2(1α)2α[(65α)St(1)2(54α)St(2)+(43α)St(3)],ct=2(1α)2α2[St(1)2St(2)+St(3)]

指数平滑预测模型是以时刻t为起点,综合历史序列的信息,对未来进行预测。选择合适的加权参数 α \alpha α是提高预测精度的关键环节,经验取值范围一般为0.1~0.3。若序列的基本趋势较稳,预测偏差由随机因素造成,则 α \alpha α应取小一些,使预测模型能包含更多历史数据的信息。若预测目标的基本趋势已发生系统的变化,则 α \alpha α值应取大一些,使预测模型适应预测目标的新变化。
由于指数平滑公式是递推公式,所以必须确定初始值 S 0 ( 1 ) , S 0 ( 2 ) , S 0 ( 3 ) S_0^{(1)},S_0^{(2)},S_0^{(3)} S0(1),S0(2),S0(3),可以取前3~5个数据的算术平均值作为初始值。

1.3 差分指数平滑法
当时间序列的变动具有直线趋势时,用一次指数平滑法会出现滞后偏差,其原因在于数据不满足模型要求。因此,也可以从数据变换的角度来考虑改进措施,差分方法是改变数据变动趋势的简易方法。

1.3.1 一阶差分指数平滑法
当时间序列呈直线增加时,可使用一阶差分指数平滑模型来预测,公式如下 ∇ y t = y t − y t − 1 ∇ y ^ t + 1 = α ∇ y t + ( 1 − α ) ∇ y ^ t y ^ t + 1 = ∇ y ^ t + 1 + y t \nabla y_t=y_t-y_{t-1} \\ \nabla\hat{y}_{t+1}=\alpha\nabla y_t+(1-\alpha)\nabla\hat{y}_t\\ \hat{y}_{t+1}=\nabla\hat{y}_{t+1}+y_t yt=ytyt1y^t+1=αyt+(1α)y^ty^t+1=y^t+1+yt式中 ∇ \nabla 为差分记号。

dyt=diff(yt);		%求yt的一阶向前差分

1.3.2 二阶差分指数平滑模型
当时间序列呈二次曲线增加时,可使用二阶差分指数平滑模型来预测,公式如下 ∇ y t = y t − y t − 1 ∇ 2 y t = ∇ y t − ∇ y t − 1 ∇ 2 y ^ t + 1 = α ∇ 2 y t + ( 1 − α ) ∇ 2 y ^ t y ^ t + 1 = ∇ 2 y ^ t + 1 + ∇ y t + y t \nabla y_t=y_t-y_{t-1}\\ \nabla^2 y_t=\nabla y_t-\nabla y_{t-1} \\ \nabla^2\hat{y}_{t+1}=\alpha\nabla^2 y_t+(1-\alpha)\nabla^2\hat{y}_t\\ \hat{y}_{t+1}=\nabla^2\hat{y}_{t+1}+\nabla y_t+y_t yt=ytyt12yt=ytyt12y^t+1=α2yt+(1α)2y^ty^t+1=2y^t+1+yt+yt式中 ∇ 2 \nabla^2 2为二阶差分。

差分方法和指数平滑法的联合应用,除了能克服一次指数平滑法的滞后偏差之外,对初始值的问题也有显著的改进。数据经过差分处理后,所产生的新序列基本上是平稳的,此时初始值取新序列的第一期数据对未来预测值不会有多大影响。但是,对于指数平滑法的加权系数 α \alpha α的选择问题,以及只能逐期预测问题,差分指数平滑模型并未改进。

1.4 具有季节性特点的时间序列的预测
对于季节性时间序列的预测,要从数学上完全拟合其变化曲线是非常困难的。一种名为季节系数法的具体步骤如下:

  1. 收集m年的每年各季度(每年n个季度)的时间序列样本数据 a i j a_{ij} aij。其中i表示年份的序号,j表示季度的序号。
  2. 计算每年所有季度的算术平均值 a ˉ \bar{a} aˉ,即 a ˉ = 1 k ∑ i = 1 m ∑ j = 1 n a i j   , k = m n \bar{a}=\cfrac1k\sum_{i=1}^m\sum_{j=1}^na_{ij}\ ,k=mn aˉ=k1i=1mj=1naij ,k=mn
  3. 计算同季度数据的算术平均值 a ˉ ⋅ j = 1 m ∑ i = 1 m a i j \bar{a}_{\cdot j}=\cfrac1m\sum_{i=1}^ma_{ij} aˉj=m1i=1maij
  4. 计算季度系数 b j = a ˉ ⋅ j / a ˉ b_j=\bar{a}_{\cdot j}/\bar{a} bj=aˉj/aˉ
  5. 预测计算:当时间序列是按季度列出时,先求出预测年份(下一年)的年加权平均 y m + 1 = ∑ i = 1 m w i y ∑ i = 1 m w i y_{m+1}=\cfrac{\sum_{i=1}^mw_iy}{\sum_{i=1}^mw_i} ym+1=i=1mwii=1mwiy式中 y i = ∑ j = 1 n a i j y_i=\sum_{j=1}^na_{ij} yi=j=1naij为第i年的年合计数; w i w_i wi为第i年的权数,按自然数列取值,即 w i = i w_i=i wi=i
    再计算预测年份的季度平均值 y ˉ m + 1 = y m + 1 / n \bar{y}_{m+1}=y_{m+1}/n yˉm+1=ym+1/n最后预测年份第j季度的预测值为 y m + 1 , j = b j y ˉ m + 1 y_{m+1,j}=b_j\bar{y}_{m+1} ym+1,j=bjyˉm+1

2. 平稳时间序列模型

平稳时间序列的统计特性不随时间的平移而变化,即均值和协方差不随时间的平移而变化。

2.1 时间序列的基本概念

  • 定义1:设随机序列 { X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,}满足 ( 1 )   E ( X t ) = μ = 常 数 ( 2 )   γ t + k , t = γ k   ( k = 0 , ± 1 , ± 2 , ⋯   ) 与 t 无 关 (1)\ E(X_t)=\mu=常数 \\ (2)\ \gamma_{t+k,t}=\gamma_k\ (k=0,\pm1,\pm2,\cdots)与t无关 (1) E(Xt)=μ=(2) γt+k,t=γk (k=0,±1,±2,)t则称 X t X_t Xt为平稳随机序列(平稳时间序列),简称平稳序列。其中 γ t , s = Cov ⁡ ( X t , X s ) \gamma_{t,s}=\operatorname{Cov}(X_t,X_s) γt,s=Cov(Xt,Xs),称为自协方差函数。将 γ t , s \gamma_{t,s} γt,s标准化后,为自相关函数 ρ t , s = γ t , s γ t , t γ s , s = γ t , s σ t σ s \rho_{t,s}=\cfrac{\gamma_{t,s}}{\sqrt{\gamma_{t,t}}\sqrt{\gamma_{s,s}}}=\cfrac{\gamma_{t,s}}{\sigma_t\sigma_s} ρt,s=γt,t γs,s γt,s=σtσsγt,s

  • 定义2:设平稳序列 { ε t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{\varepsilon_t,t=0,\pm1,\pm2,\cdots\right\} {εt,t=0,±1,±2,}的自协方差函数为 γ k = σ 2 δ k , 0 = { 0   , k ≠ 0 σ 2   , k = 0 \gamma_k=\sigma^2\delta_{k,0}=\begin{cases}0\ ,k\neq0\\\sigma^2\ ,k=0\end{cases} γk=σ2δk,0={0 ,k=0σ2 ,k=0则称该序列为平稳白噪声序列。平稳白噪声序列的方差是常数 σ 2 \sigma^2 σ2,且任意两个不同时点之间是不相关的,是一种最基本的平稳序列。
    平稳序列的样本自协方差函数有如下两种形式 γ ^ k = 1 n ∑ t = 1 n − k ( X t + k − X ˉ ) ( X t − X ˉ ) 或 γ ^ k ∗ = 1 n − k ∑ t = 1 n − k ( X t + k − X ˉ ) ( X t − X ˉ )   , 0 ⩽ k ⩽ n − 1 \hat{\gamma}_k=\cfrac1n\sum_{t=1}^{n-k}(X_{t+k}-\bar{X})(X_t-\bar{X})\quad或\quad\hat{\gamma}_k^*=\cfrac{1}{n-k}\sum_{t=1}^{n-k}(X_{t+k}-\bar{X})(X_t-\bar{X})\ ,0\leqslant k\leqslant n-1 γ^k=n1t=1nk(Xt+kXˉ)(XtXˉ)γ^k=nk1t=1nk(Xt+kXˉ)(XtXˉ) ,0kn1样本自相关函数为 ρ ^ k = γ ^ k γ ^ 0 或 ρ ^ k ∗ = γ ^ k ∗ γ ^ 0   , 0 ⩽ k ⩽ n − 1 \hat{\rho}_k=\cfrac{\hat{\gamma}_k}{\hat{\gamma}_0}\quad或\quad \hat{\rho}_k^*=\cfrac{\hat{\gamma}_k^*}{\hat{\gamma}_0}\ ,0\leqslant k\leqslant n-1 ρ^k=γ^0γ^kρ^k=γ^0γ^k ,0kn1

  • 定义3:设 { ε t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{\varepsilon_t,t=0,\pm1,\pm2,\cdots\right\} {εt,t=0,±1,±2,}是零均值平稳白噪声, Var ⁡ ( ε t ) = σ ε 2 \operatorname{Var}(\varepsilon_t)=\sigma_{\varepsilon}^2 Var(εt)=σε2,若 { G k   , k = 0 , 1 , 2 , ⋯   } \left\{G_k\ ,k=0,1,2,\cdots\right\} {Gk ,k=0,1,2,}是一数列,满足 ∑ k = 0 ∞ ∣ G k ∣ < + ∞   , G 0 = 1 \sum_{k=0}^{\infty}|G_k|<+\infty\ ,G_0=1 k=0Gk<+ ,G0=1定义随机序列 X t = ∑ k = 1 ∞ G k ε t − k X_t=\sum_{k=1}^{\infty}G_k\varepsilon_{t-k} Xt=k=1Gkεtk则称 X t X_t Xt随机线性序列,可证明 X t X_t Xt是平稳序列。

  • 定义4:设 { X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,}是零均值平稳序列,如果已知 { X t − 1 , X t − 2 , ⋯   , X t − k } \left\{X_{t-1},X_{t-2},\cdots,X_{t-k}\right\} {Xt1,Xt2,,Xtk}的值,要对 X t X_t Xt作出预报。考虑线性最小均方估计,选择系数 φ k , 1 , φ k , 2 , ⋯   , φ k , k \varphi_{k,1},\varphi_{k,2},\cdots,\varphi_{k,k} φk,1,φk,2,,φk,k,使得 min ⁡ δ = E [ ( X t − ∑ j = 1 k φ k , j X t − j ) 2 ] \min\delta=E[(X_t-\sum_{j=1}^k\varphi_{k,j}X_{t-j})^2] minδ=E[(Xtj=1kφk,jXtj)2] ∂ δ ∂ φ k , j = 0 \cfrac{\partial\delta}{\partial\varphi_{k,j}}=0 φk,jδ=0,可解得 φ k , j \varphi_{k,j} φk,j应满足的线性方程组 [ 1 ρ 1 ⋯ ρ k − 1 ρ 1 1 ⋯ ρ k − 2 ⋮ ⋮ ⋱ ⋮ ρ k − 1 ρ k − 2 ⋯ 1 ] [ φ k , 1 φ k , 2 ⋮ φ k , k ] = [ ρ 1 ρ 2 ⋮ ρ k ] \begin{bmatrix}1&\rho_1&\cdots&\rho_{k-1}\\\rho_1&1&\cdots&\rho_{k-2}\\\vdots&\vdots&\ddots&\vdots\\\rho_{k-1}&\rho_{k-2}&\cdots&1\end{bmatrix}\begin{bmatrix}\varphi_{k,1}\\\varphi_{k,2}\\\vdots\\\varphi_{k,k}\end{bmatrix}=\begin{bmatrix}\rho_1\\\rho_2\\\vdots\\\rho_k\end{bmatrix} 1ρ1ρk1ρ11ρk2ρk1ρk21φk,1φk,2φk,k=ρ1ρ2ρk该式称为Yule-Walker方程 { φ k , k   , k = 1 , 2 , ⋯   } \left\{\varphi_{k,k}\ ,k=1,2,\cdots\right\} {φk,k ,k=1,2,}称为 X t X_t Xt偏相关系数

2.2 ARMA时间序列
ARMA时间序列是一种重要的平稳时间序列,分为三种类型:AR序列(自回归序列)、MA序列(移动平均序列)、ARMA序列(自回归移动平均序列)。

2.2.1 AR(p)序列
{ X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,}是零均值平稳序列,满足下列模型 X t = φ 1 X t − 1 + φ 2 X t − 2 + ⋯ + φ p X t − p + ε t X_t=\varphi_1X_{t-1}+\varphi_2X_{t-2}+\cdots+\varphi_pX_{t-p}+\varepsilon_t Xt=φ1Xt1+φ2Xt2++φpXtp+εt式中 ε t \varepsilon_t εt为零均值、方差是 σ ε 2 \sigma_{\varepsilon}^2 σε2的平稳白噪声; X t X_t Xt为阶数为p的自回归序列,简记为AR(p)序列; φ = [ φ 1 , φ 2 , ⋯   , φ p ] T \bm{\varphi}=[\varphi_1,\varphi_2,\cdots,\varphi_p]^T φ=[φ1,φ2,,φp]T为自回归参数向量,其分量 φ i \varphi_i φi称为自回归系数。
引入后移算子B,定义为 B X t ≡ X t − 1   , B k X t ≡ X t − k BX_t\equiv X_{t-1}\ ,B^kX_t\equiv X_{t-k} BXtXt1 ,BkXtXtk记算子多项式 φ ( B ) = 1 − φ 1 B − φ 2 B 2 − ⋯ − φ p B p \varphi(B)=1-\varphi_1B-\varphi_2B^2-\cdots-\varphi_pB^p φ(B)=1φ1Bφ2B2φpBp则模型公式可改写为 φ ( B ) X t = ε t \varphi(B)X_t=\varepsilon_t φ(B)Xt=εt

2.2.2 MA(q)序列
{ X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,}是零均值平稳序列,满足下列模型 X t = ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − ⋯ − θ q ε t − q X_t=\varepsilon_t-\theta_1\varepsilon_{t-1}-\theta_2\varepsilon_{t-2}-\cdots-\theta_q\varepsilon_{t-q} Xt=εtθ1εt1θ2εt2θqεtq式中 ε t \varepsilon_t εt为零均值、方差是 σ ε 2 \sigma_{\varepsilon}^2 σε2的平稳白噪声; X t X_t Xt为阶数为q的移动平均序列,简记为MA(q)序列; θ = [ θ 1 , θ 2 , ⋯   , θ q ] T \bm{\theta}=[\theta_1,\theta_2,\cdots,\theta_q]^T θ=[θ1,θ2,,θq]T为移动平均参数向量,其分量 θ i \theta_i θi称为移动平均系数。
对线性后移算子B,有 B ε t ≡ ε t − 1   , B k ε t ≡ ε t − k B\varepsilon_t\equiv \varepsilon_{t-1}\ ,B^k\varepsilon_t\equiv \varepsilon_{t-k} Bεtεt1 ,Bkεtεtk记算子多项式 θ ( B ) = 1 − θ 1 B − θ 2 B 2 − ⋯ − θ q B q \theta(B)=1-\theta_1B-\theta_2B^2-\cdots-\theta_qB^q θ(B)=1θ1Bθ2B2θqBq则模型公式可改写为 X t = θ ( B ) ε t X_t=\theta(B)\varepsilon_t Xt=θ(B)εt

2.2.3 ARMA(p,q)序列
{ X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,}是零均值平稳序列,满足下列模型 X t − φ 1 X t − 1 − ⋯ − φ p X t − p = ε t − θ 1 ε t − 1 − ⋯ − θ q ε t − q X_t-\varphi_1X_{t-1}-\cdots-\varphi_pX_{t-p}=\varepsilon_t-\theta_1\varepsilon_{t-1}-\cdots-\theta_q\varepsilon_{t-q} Xtφ1Xt1φpXtp=εtθ1εt1θqεtq式中 ε t \varepsilon_t εt为零均值、方差是 σ ε 2 \sigma_{\varepsilon}^2 σε2的平稳白噪声; X t X_t Xt为阶数为p,q的自回归移动平均序列,简记为ARMA(p,q)序列。当q=0时是AR(p)序列,当p=0时是MA(q)序列。
应用算子多项式 φ ( B ) , θ ( B ) \varphi(B),\theta(B) φ(B),θ(B),模型公式可改写为 φ ( B ) X t = θ ( B ) ε t \varphi(B)X_t=\theta(B)\varepsilon_t φ(B)Xt=θ(B)εt对一般的平稳序列 { X t , t = 0 , ± 1 , ± 2 , ⋯   } \left\{X_t,t=0,\pm1,\pm2,\cdots\right\} {Xt,t=0,±1,±2,},设其均值 E ( X t ) = μ E(X_t)=\mu E(Xt)=μ,满足下列模型 ( X t − μ ) − φ 1 ( X t − 1 − μ ) − ⋯ − φ p ( X t − p − μ ) = ε t − θ 1 ε t − 1 − ⋯ − θ q ε t − q (X_t-\mu)-\varphi_1(X_{t-1}-\mu)-\cdots-\varphi_p(X_{t-p}-\mu)=\varepsilon_t-\theta_1\varepsilon_{t-1}-\cdots-\theta_q\varepsilon_{t-q} (Xtμ)φ1(Xt1μ)φp(Xtpμ)=εtθ1εt1θqεtq应用算子多项式 φ ( B ) , θ ( B ) \varphi(B),\theta(B) φ(B),θ(B),模型公式可改写为 φ ( B ) ( X t − μ ) = θ ( B ) ε t \varphi(B)(X_t-\mu)=\theta(B)\varepsilon_t φ(B)(Xtμ)=θ(B)εt关于算子多项式 φ ( B ) , θ ( B ) \varphi(B),\theta(B) φ(B),θ(B),通常还要作下列假定:

  • φ ( B ) \varphi(B) φ(B) θ ( B ) \theta(B) θ(B)无公共因子,又 φ p ≠ 0 , θ q ≠ 0 \varphi_p\neq0,\theta_q\neq0 φp=0,θq=0
  • φ ( B ) = 0 \varphi(B)=0 φ(B)=0的根全在单位圆外,这一条件称为模型的平稳性条件
  • θ ( B ) = 0 \theta(B)=0 θ(B)=0的根全在单位圆外,这一条件称为模型的可逆性条件

2.3 ARMA模型的构建及预报
在实际问题建模中,首先要进行模型的识别与定阶,即要判断AR(p)、MA(q)、ARMA(p,q)模型的类别,并估计阶数p,q。当模型定阶后,就要对模型参数 φ = [ φ 1 , φ 2 , ⋯   , φ p ] T \bm{\varphi}=[\varphi_1,\varphi_2,\cdots,\varphi_p]^T φ=[φ1,φ2,,φp]T θ = [ θ 1 , θ 2 , ⋯   , θ q ] T \bm{\theta}=[\theta_1,\theta_2,\cdots,\theta_q]^T θ=[θ1,θ2,,θq]T进行估计。定阶与参数估计完成后,还要对模型进行检验,即要检验 ε t \varepsilon_t εt是否为平稳白噪声。若检验通过,则ARMA时间序列的建模完成。

2.3.1 ARMA模型的构建

  • ARMA模型定阶的AIC准则:选p,q,使得 min ⁡ AIC ⁡ = n ln ⁡ σ ^ ε 2 + 2 ( p + q + 1 ) \min \operatorname{AIC}=n\ln\hat{\sigma}_{\varepsilon}^2+2(p+q+1) minAIC=nlnσ^ε2+2(p+q+1)其中n为样本容量; σ ^ ε 2 \hat{\sigma}_{\varepsilon}^2 σ^ε2 σ ε 2 \sigma_{\varepsilon}^2 σε2的估计,与p和q有关。当ARMA(p,q)序列含有未知均值参数 μ \mu μ时,此时未知参数个数为k=p+q+2,AIC准则为:选p,q,使得 min ⁡ AIC ⁡ = n ln ⁡ σ ^ ε 2 + 2 ( p + q + 2 ) \min \operatorname{AIC}=n\ln\hat{\sigma}_{\varepsilon}^2+2(p+q+2) minAIC=nlnσ^ε2+2(p+q+2)实际上,这两个公式有相同的最小值点 p ^ , q ^ \hat{p},\hat{q} p^,q^
  • ARMA模型的参数估计:有矩估计、逆函数估计、最小二乘估计、条件最小二乘估计、最大似然估计等方法。可直接使用Matlab工具箱给出相关的参数估计。
  • ARMA模型的 χ 2 \chi^2 χ2检验:Matlab中作Ljung-Box检验的函数为lbqtest

2.3.2 ARMA(p,q)序列的预报
时间序列的m步预报,是根据 { X k , X k − 1 , ⋯ } \left\{\bm{X_k,X_{k-1},\cdots}\right\} {Xk,Xk1,}的取值对未来k+m时刻的随机变量 X k + m ( m > 0 ) \bm{X_{k+m}}(m>0) Xk+m(m>0)作出估计。估计量记作 X ^ k ( m ) \hat{X}_k(m) X^k(m),它是 X k , X k − 1 , ⋯ \bm{X_k,X_{k-1},\cdots} Xk,Xk1,的线性组合。

  • AR(p)序列的预报:递推公式为 { X ^ k ( 1 ) = φ 1 X k + φ 2 X k − 1 + ⋯ + φ p X k − p + 1 X ^ k ( 2 ) = φ 1 X ^ k ( 1 ) + φ 2 X k + ⋯ + φ p X k − p + 2 ⋮ X ^ k ( p ) = φ 1 X ^ k ( p − 1 ) + φ 2 X ^ k ( p − 2 ) + ⋯ + φ p − 1 X ^ k ( 1 ) + φ p X k X ^ k ( m ) = φ 1 X ^ k ( m − 1 ) + φ 2 X ^ k ( m − 2 ) + ⋯ + φ p X ^ k ( m − p ) , m > p \left\{\begin{array}{l} \hat{X}_{k}(1)=\varphi_{1} X_{k}+\varphi_{2} X_{k-1}+\cdots+\varphi_{p} X_{k-p+1} \\ \hat{X}_{k}(2)=\varphi_{1} \hat{X}_{k}(1)+\varphi_{2} X_{k}+\cdots+\varphi_{p} X_{k-p+2} \\\qquad\vdots \\\hat{X}_{k}(p)=\varphi_{1} \hat{X}_{k}(p-1)+\varphi_{2} \hat{X}_{k}(p-2)+\cdots+\varphi_{p-1} \hat{X}_{k}(1)+\varphi_{p} X_{k} \\ \hat{X}_{k}(m)=\varphi_{1} \hat{X}_{k}(m-1)+\varphi_{2} \hat{X}_{k}(m-2)+\cdots+\varphi_{p} \hat{X}_{k}(m-p), m>p \end{array}\right. X^k(1)=φ1Xk+φ2Xk1++φpXkp+1X^k(2)=φ1X^k(1)+φ2Xk++φpXkp+2X^k(p)=φ1X^k(p1)+φ2X^k(p2)++φp1X^k(1)+φpXkX^k(m)=φ1X^k(m1)+φ2X^k(m2)++φpX^k(mp),m>p由此可见, X ^ k ( m ) ( m > 1 ) \hat{X}_k(m)(m>1) X^k(m)(m>1)仅依赖于 X t X_t Xt的k时刻以前的p个时刻的值。这是AR(p)序列预报的特点。
  • MA(q)与ARMA(p,q)序列的预报:
    对于MA(q)序列的预报,有 X ^ k ( m ) = 0   , m > q \hat{X}_k(m)=0\ ,m>q X^k(m)=0 ,m>q因此,只需要讨论 X ^ k ( m )   , m = 1 , 2 , ⋯   , q \hat{X}_k(m)\ ,m=1,2,\cdots,q X^k(m) ,m=1,2,,q。为此,定义预报向量 X ^ k ( q ) = [ X ^ k ( 1 ) , X ^ k ( 2 ) , ⋯   , X ^ k ( q ) ] T \bm{\hat{X}}_k^{(q)}=[\hat{X}_k(1),\hat{X}_k(2),\cdots,\hat{X}_k(q)]^T X^k(q)=[X^k(1),X^k(2),,X^k(q)]T递推预报是求 X ^ k ( q ) \hat{X}_k^{(q)} X^k(q) X ^ k + 1 ( q ) \hat{X}_{k+1}^{(q)} X^k+1(q)的,递推关系,对MA(q)序列,有 X ^ k + 1 ( q ) = [ θ 1 1 0 ⋯ 0 θ 2 0 1 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ θ q − 1 0 0 ⋯ 1 θ q 0 0 0 0 ] X ^ k ( q ) − [ θ 1 θ 2 ⋮ θ q ] X k + 1 \hat{\boldsymbol{X}}_{k+1}^{(q)}=\left[\begin{array}{ccccc} \theta_{1} & 1 & 0 & \cdots & 0 \\ \theta_{2} & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \theta_{q-1} & 0 & 0 & \cdots & 1 \\ \theta_{q} & 0 & 0 & 0 & 0 \end{array}\right] \hat{\boldsymbol{X}}_{k}^{(q)}-\left[\begin{array}{c} \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{q} \end{array}\right] \boldsymbol{X}_{k+1} X^k+1(q)=θ1θ2θq1θq1000010000010X^k(q)θ1θ2θqXk+1递推初值可取 X ^ k 0 ( q ) = 0   ( k 0 较 小 ) \bm{\hat{X}}_{k_0}^{(q)}=0\ (k_0较小) X^k0(q)=0 (k0)。因为模型的可逆性保证了递推式渐进稳定,即当n充分大后,初始误差的影响可以逐渐消失。
    对于ARMA(p,q)序列的预报,有 X ^ k + 1 ( q ) = [ − G 1 1 0 ⋯ 0 − G 2 0 1 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ − G q − 1 0 0 ⋯ 1 − G q + φ q ∗ φ q − 1 ∗ φ q − 2 ∗ ⋯ φ 1 ∗ ] X ^ k ( q ) + [ G 1 G 2 ⋮ G q − 1 G q ] X k + 1 + [ 0 0 ⋮ 0 ∑ j = q + 1 p φ j ∗ X k + q + 1 − j ] \hat{\boldsymbol{X}}_{k+1}^{(q)}=\left[\begin{array}{ccccc} -G_{1} & 1 & 0 & \cdots & 0 \\ -G_{2} & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ -G_{q-1} & 0 & 0 & \cdots & 1 \\ -G_{q}+\varphi_{q}^{*} & \varphi_{q-1}^{*} & \varphi_{q-2}^{*} & \cdots & \varphi_{1}^{*} \end{array}\right] \boldsymbol{\hat{X}}_{k}^{(q)}+\left[\begin{array}{c} G_{1} \\ G_{2} \\ \vdots \\ G_{q-1} \\ G_{q} \end{array}\right] \boldsymbol{X}_{k+1}+\left[\begin{array}{c} 0 \\ 0 \\ \vdots \\ 0 \\ \sum_{j=q+1}^{p} \varphi_{j}^{*} X_{k+q+1-j} \end{array}\right] X^k+1(q)=G1G2Gq1Gq+φq100φq1010φq2001φ1X^k(q)+G1G2Gq1GqXk+1+000j=q+1pφjXk+q+1j其中 φ j ∗ = { φ j   , j = 1 , 2 , ⋯   , p 0   , j > p \varphi_j^*=\begin{cases}\varphi_j\ ,j=1,2,\cdots,p\\0\ ,j>p\end{cases} φj={φj ,j=1,2,,p0 ,j>p G j G_j Gj满足 X t = ∑ j = 0 ∞ G j ε t − j \bm{X}_t=\sum_{j=0}^{\infty}G_j\varepsilon_{t-j} Xt=j=0Gjεtj;式中第三项当 p ⩽ q p\leqslant q pq时为0。递推初值可取 X ^ k 0 ( q ) = 0   ( k 0 较 小 ) \bm{\hat{X}}_{k_0}^{(q)}=0\ (k_0较小) X^k0(q)=0 (k0)

3. 时间序列的Matlab工具箱及命令

Matlab时间序列相关命令对应的工具箱有:系统辨识工具箱、计量经济学工具箱、金融工具箱。

3.1 系统辨识工具箱相关命令

  • 观察数据的获取命令:idinput
  • 数据预处理命令:detrend、idfilt、idresamp
  • 模型结构的选择命令:struc、arxstruc、ivstruc、selstruc
  • 参数估计命令:ar、arx、armax、ivx
  • 模型预报与仿真的命令:compare、pe、predict、sim
%%%%%%%%%%%%%%%%%%%拟合AR(p)模型%%%%%%%%%%%%%%%%%%%%%%
for i=1:3
    m{i}=ar(x,i);		%x为时间序列数据的行向量,分别以AR(1)、AR(2)、AR(3)拟合模型
    myaic(i)=aic(m{i});	%计算AIC的值,选取最小的值作为AR(p)的p值
end
xp=predict(m,x);	%计算已知数据的预测值 
res=x-xp;		%计算残差向量,也可以使用命令res=resid(m,x)计算残差向量
h=lbqtest(res)		%对残差向量进行Ljung-Box检验
%%%%%%%%%%%%%%%%%%%拟合ARMA(p,q)模型%%%%%%%%%%%%%%%%%%%%%%
for i=0:3
    for j=0:3
        if i==0 & j==0
            continue	%ARMA(p,q)模型中,p,q不能同时为0
        end
    m=armax(x,[i,j]);	%拟合模型ARMA(i,j),已知数据x必须是列向量
    myaic=aic(m);		%计算AIC指标
    fprintf('p=%d,q=%d,AIC=%f\n',i,j,myaic);	%显示计算结果
    end
end

3.2 计量经济学工具箱相关命令

  • 模型参数获取或设置命令:garchget、garchset
  • 建模和仿真等命令:garchfit、garchpred、garchsim

GARCH模型:GARCH表示广义自回归条件异方差。该模型分为均值方差和方差方差两部分。

  • 均值方程形式: y t = C + ∑ i = 1 R φ i y t − i + ε t + ∑ j = 1 M θ j ε t − j + ∑ k = 1 N x β k X ( t , k ) y_t=C+\sum_{i=1}^R\varphi_iy_{t-i}+\varepsilon_t+\sum_{j=1}^M\theta_j\varepsilon_{t-j}+\sum_{k=1}^{N_x}\beta_k\bm{X}(t,k) yt=C+i=1Rφiyti+εt+j=1Mθjεtj+k=1NxβkX(t,k)式中 φ i \varphi_i φi为自回归系数; θ j \theta_j θj为移动平均系数; X \bm{X} X为解释回归矩阵,它的每一列是一个时间序列。
  • 方差方程形式: σ t 2 = K + ∑ i = 1 P G i σ t − i 2 + ∑ j = 1 Q A j ε t − j 2 \sigma_t^2=K+\sum_{i=1}^PG_i\sigma_{t-i}^2+\sum_{j=1}^QA_j\varepsilon_{t-j}^2 σt2=K+i=1PGiσti2+j=1QAjεtj2其系数满足以下约束条件: ∑ i = 1 P G i + ∑ j = 1 Q A j < 1 , K > 0 , G i > 0 , A j > 0 \sum_{i=1}^PG_i+\sum_{j=1}^QA_j<1,K>0,G_i>0,A_j>0 i=1PGi+j=1QAj<1,K>0,Gi>0,Aj>0
model = garch(P,Q)		%根据P,Q值构建参数大小未知的garch模型
model = garch(Name,Vaule)		%根据属性、属性值构建参数确定的garch模型
%%%%%%%%%%%%%%%%通过给定参数构建一个garch模型,然后再用garch(1,1)模型预测参数%%%%%%%%%%%%%%
VarMd=garch('Constant',0.01,'GARCH',0.2,'ARCH',0.3);%指定模型方差方程的参数,当参数为向量时用用元胞数组作为参数值输入
Md=arima('Constant',0,'AR',0.8,'MA',0.4, 'Variance',VarMd);	%指定模型均值方差的参数
[y,e,v]=simulate(Md,10000);		%产生指定结构模型的10000个模拟数据
ToEstVarMd=garch(1,1);
ToEstMd=arima('ARLags',1,'MALags',1,'Constant',0,'Variance',ToEstVarMd);%指定ARMA模型的p,q值	,高阶时输入数组
[EstMd,EstParamCov,logL,info]=estimate(ToEstMd,y)	%模型拟合
	%EstMd为拟合得到的模型,EstParamCov为估计参数的协方差矩阵,logL为似然目标函数,info输入参数信息
res=infer(EstMd,y);		%计算残差
h=lbqtest(res)		%进行模型检验
yhat=forecast(EstMd,3,'Y0',y)		%预测未来的3个值

3.3 金融工具箱相关命令

  • 构造时间序列数组的命令:fints、ascii2fts
  • 用户图形界面解法命令:ftsgui、ftstool

4. ARIMA序列与季节性序列

在实际中遇到的时间序列往往具有趋势性、季节性、非平稳性。可使用差分方法消除其趋势性、季节性,使变换后的序列是平稳序列,并假设为ARMA序列,再用上面介绍的方法进行建模和预报。

4.1 ARIMA序列与预报
4.1.1 ARIMA序列模型
对于某一时间序列 X t X_t Xt,若其 φ ( B ) = 0 \varphi(B)=0 φ(B)=0的根并非全在单位圆外(有 B ⩽ 1 B\leqslant1 B1的根),则该序列为非平稳序列。此时进行一阶向后差分运算 ∇ X t = X t − X t − 1 = W t \nabla X_t=X_t-X_{t-1}=W_t Xt=XtXt1=Wt可将原来的非平稳序列 X t X_t Xt转化为非平稳序列 W t W_t Wt。如果一阶差分还不能使时间序列平稳化,还可以进行更高阶差分,最后将序列化为平稳序列。
对d阶差分,有 ∇ d X t = ( 1 − B ) d X t \nabla^dX_t=(1-B)^dX_t dXt=(1B)dXt式中 ∇ d \nabla^d d称为d阶差分算子。设 X t X_t Xt是非平稳序列,存在正整数d,使得 ∇ d X t = W t \nabla^dX_t=W_t dXt=Wt W t W_t Wt是ARMA(p,q)序列,则称 X t X_t Xt是ARIMA(p,d,q)序列。此时, X t X_t Xt满足 φ ( B ) ∇ d X t = θ ( B ) ε t 或 φ ( B ) ( ∇ d X t − μ ) = θ ( B ) ε t   , t > d \varphi(B)\nabla^dX_t=\theta(B)\varepsilon_t\quad或\quad\varphi(B)(\nabla^dX_t-\mu)=\theta(B)\varepsilon_t\ ,t>d φ(B)dXt=θ(B)εtφ(B)(dXtμ)=θ(B)εt ,t>d后者称 X t X_t Xt是一般ARIMA(p,d,q)序列。
X t X_t Xt的观测样本是 X 1 , X 2 , ⋯   , X n X_1,X_2,\cdots,X_n X1,X2,,Xn,经过d阶差分后,数据为n-d个。由d阶差分 ∇ d X t \nabla^dX_t dXt复原数据,需要给定初值 X 1 , X 2 , ⋯   , X d X_1,X_2,\cdots,X_d X1,X2,,Xd

4.1.2 在确定模型时,常用以下方法:

  • 先对 X t X_t Xt的样本 X 1 , X 2 , ⋯   , X n X_1,X_2,\cdots,X_n X1,X2,,Xn计算样本自相关函数和样本偏相关函数。
  • 如果是截尾或拖尾,说明已服从ARMA模型。
  • 若自相关函数和偏相关函数至少有一个不是截尾或拖尾的,说明 X t X_t Xt不是平稳的。
  • 对非平稳序列作一阶差分 ∇ X t   , t = 2 , 3 , ⋯   , n \nabla X_t\ ,t=2,3,\cdots,n Xt ,t=2,3,,n,并求其样本自相关函数和样本偏相关函数,再用上述方法讨论。
  • 如此进行,直至判断 ∇ d X t \nabla^dX_t dXt是平稳序列为止。

截尾:在大于某个常数k后快速趋于0
拖尾:在大于某个常数k后在0附近随机波动

若初值 X 1 , X 2 , ⋯   , X d X_1,X_2,\cdots,X_d X1,X2,,Xd已知,由 W t = ∇ d X t   , t = d + 1 , ⋯   , n W_t=\nabla^dX_t\ ,t=d+1,\cdots,n Wt=dXt ,t=d+1,,n可以复原 X t X_t Xt,d=1,2时最常见。

  • d=1时 X t = X 1 + ∑ j = 1 t − 1 W j + 1 = X k + ∑ j = 1 t − k W j + k   , t > k ⩾ 1 X_t=X_1+\sum_{j=1}^{t-1}W_{j+1}=X_k+\sum_{j=1}^{t-k}W_{j+k}\ ,t>k\geqslant1 Xt=X1+j=1t1Wj+1=Xk+j=1tkWj+k ,t>k1
  • d=2时 X t = X 2 + ( t − 2 ) ( X 2 − X 1 ) + ∑ j = 1 t − 2 ( t − j − 1 ) W j + 2 = X k + ( t − k ) ( X k − X k − 1 ) + ∑ j = 1 t − k ( t − j − k + 1 ) W j + k   , t > k ⩾ 2 X_t=X_2+(t-2)(X_2-X_1)+\sum_{j=1}^{t-2}(t-j-1)W_{j+2}\\=X_k+(t-k)(X_k-X_{k-1})+\sum_{j=1}^{t-k}(t-j-k+1)W_{j+k}\ ,t>k\geqslant2 Xt=X2+(t2)(X2X1)+j=1t2(tj1)Wj+2=Xk+(tk)(XkXk1)+j=1tk(tjk+1)Wj+k ,t>k2

4.1.3 ARIMA序列的预报
X t X_t Xt是ARIMA(p,d,q)序列,d=1和d=2的情形在实用中使最常见的。

  • 当d=1时,有 ∇ X ^ k ( m ) = W ^ k ( m ) \nabla\hat{X}_k(m)=\hat{W}_k(m) X^k(m)=W^k(m),预报公式为 X ^ k ( m ) = X k + ∑ j = 1 m W ^ k ( j ) \hat{X}_k(m)=X_k+\sum_{j=1}^m\hat{W}_k(j) X^k(m)=Xk+j=1mW^k(j)
  • 当d=2时,有 ∇ 2 X ^ k ( m ) = W ^ k ( m ) \nabla^2\hat{X}_k(m)=\hat{W}_k(m) 2X^k(m)=W^k(m),预报公式为 X ^ k ( m ) = X k + m ( X k − X k − 1 ) + ∑ j = 1 m ( m + 1 − j ) W ^ k ( j ) \hat{X}_k(m)=X_k+m(X_k-X_{k-1})+\sum_{j=1}^m(m+1-j)\hat{W}_k(j) X^k(m)=Xk+m(XkXk1)+j=1m(m+1j)W^k(j)
r11=autocorr(a)		%计算自相关函数,a为列向量,默认计算20个滞后时间
r12=parcorr(a)		%计算偏相关函数
[EstMd,EstParamCov,logL,info]=estimate(ToEstMd,da);	%模型拟合
numParams = sum(any(EstParamCov));		%计算拟合参数的个数
[aic(k),bic(k)]=aicbic(logL,numParams,n);	%计算AIC和BIC信息

4.2 季节性序列及其预报
由于季节性因素或其他周期因素引起的周期性变化的时间序列,称为季节性时间序列,相应的模型为季节性模型。
一般地,对周期为s的序列,可先进行差分运算,在进行ARIMA建模,即 ∇ s X t = ( 1 − B s ) X t ∇ s d X t = ( 1 − B s ) d X t \nabla_sX_t=(1-B^s)X_t\\\nabla^d_sX_t=(1-B^s)^dX_t sXt=(1Bs)XtsdXt=(1Bs)dXt

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值