基于Matlab的时间序列(Time Series)(附代码)

一、模型介绍

时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。

1.1. 时间序列的不同分类

  1. 按所研究的对象的多少分,有一元时间序列多元时间序列

  2. 按时间的连续性可将时间序列分为离散时间序列连续时间序列两种。

  3. 按时间序列的分布规律来分,有高斯型时间序列非高斯型时间序列

  4. 按序列的统计特性分,有平稳时间序列非平稳时间序列

    • 严平稳时间序列,也叫狭义平稳时间序列:一个时间序列的概率分布与时间 t t t无关
    • 宽平稳时间序列,也叫广义平稳时间序列:一个时间序列的 一、二阶矩存在,而且对任意时刻 t t t满足:
      1. 均值为常数
      2. 协方差为时间间隔 τ \small \tau τ的函数。

我们以后所研究的时间序列主要是宽平稳时间序列。

1.2. 时间序列构成要素

时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内依照给定的采样率对某种潜在过程进行观测的结果。时间序列数据本质上反映的是某个或者某些随机变量随时间不断变化的趋势,而时间序列预测方法的核心就是从数据中挖掘出这种规律,并利用其对将来的数据做出估计。
构成要素:长期趋势,季节变动,循环变动,不规则变动。

  • 长期趋势( T )现象在较长时期内受某种根本性因素作用而形成的总的变动趋势。
  • 季节变动( S )现象在一年内随着季节的变化而发生的有规律的周期性变动。
  • 循环变动( C )现象以若干年为周期所呈现出的波浪起伏形态的有规律的变动。
  • 不规则变动(I )是一种无规律可循的变动,包括严格的随机变动和不规则的突发性影响很大的变动两种类型。

1.3. 三种时间序列模型

通常用 T t T_{t} Tt表示长期趋势项, S t S_{t} St来表示季节变动趋势项, C t C_{t} Ct来表示循环变动趋势, I t I_{t} It来表示随机干扰项。常见的确定性时间序列模型有以下几种类型:
(1)加法模型 x t = T t + S t + C t + I t x_{t}=T_{t}+S_{t}+C_{t}+I_{t} xt=Tt+St+Ct+It
(2)乘法模型 x t = T t ∗ S t ∗ C t ∗ I t x_{t}=T_{t}*S_{t}*C_{t}*I_{t} xt=TtStCtIt
(3)混合模型 x t = T t ∗ S t + I t x_{t}=T_{t}*S_{t}+I_{t} xt=TtSt+It x t = S t + T t ∗ C t ∗ I t x_{t}=S_{t}+T_{t}*C_{t}*I_{t} xt=St+TtCtIt
其中 x t x_{t} xt是观测目标的观测记录, E ( R t ) = 0 , E ( R t 2 ) = σ 2 E(R_{t})=0,E(R_{t}^{2})=\sigma^{2} E(Rt)=0,E(Rt2)=σ2

如果在预测时间范围以内,无突然变动且随机变动的方差 σ 2 \sigma ^{2} σ2较小,并且有理由认为过去和现在的演变趋势将继续发展到未来,也就是假设研究数据符合宽平稳时间序列时, S t + C t = 0 S_{t}+C_{t}=0 St+Ct=0,对 x t = T t + I t x_{t}=T_{t}+I_{t} xt=Tt+It项的建模方式的不同也就构成了时间序列预测的三种不同模型:

1.3.1. AR(p)模型

AR(p)模型,表示时间 t t t下的 x t x_{t} xt由过去的 t − 1 , t − 2 , . . . , t − p t-1,t-2,...,t-p t1,t2,...,tp时间下的 x t − 1 , x t − 2 , . . . , x t − p x_{t-1},x_{t-2},...,x_{t-p} xt1,xt2,...,xtp决定,称之为p阶自回归(Auto Regression)过程:
x t = ϕ 0 + ϕ 1 x t − 1 + ϕ 2 x t − 2 + ⋯ + ϕ p x t − p + ε t                        ( 1 ) {x_t} = {\phi _0} + {\phi _1}{x_{t - 1}} + {\phi _2}{x_{t - 2}} + \cdots + {\phi _p}{x_{t - p}} + {\varepsilon _t} \; \; \; \; \; \; \; \; \; \; \; (1) xt=ϕ0+ϕ1xt1+ϕ2xt2++ϕpxtp+εt(1)
数字特征:

  1. E ( x t ) = E ( x t − 1 ) = ⋯ = E ( x p ) E({x_t}) = E({x_{t - 1}}) = \cdots = E({x_p}) E(xt)=E(xt1)==E(xp)
  2. D ( x t ) = D ( x t − 1 ) = ⋯ = D ( x p ) D({x_t}) = D({x_{t - 1}}) = \cdots = D({x_p}) D(xt)=D(xt1)==D(xp)
  3. E ( ε t ) = 0 , D ( ε t ) = σ ε t 2 E({\varepsilon _t}) = 0,D({\varepsilon _t})=\sigma _{{\varepsilon _t}}^2 E(εt)=0,D(εt)=σεt2

结合以上的数字特征,藉由式(1)变形可得知:

  1. E ( x t ) = ϕ 0 1 − ϕ 1 − ⋯ ϕ p E({x_t}) = {{{\phi _0}} \over {1 - {\phi _1} - \cdots {\phi _p}}} E(xt)=1ϕ1ϕpϕ0 与p相关
  2. D ( x t ) = σ ε t 2 1 − ϕ 1 2 D({x_t}) = {{\sigma _{{\varepsilon _t}}^2} \over {1 - \phi _1^2}} D(xt)=1ϕ12σεt2

变形过程推导,自相关系数 ρ k {\rho _k} ρk,协方差 r ( k ) = c o v ( x t , x t − k ) {\rm{r(k) = cov}}({x_t},{x_{t - k}}) r(k)=cov(xt,xtk),偏自相关系数,统一见 3.5. 变形推导过程

1.3.2. MA(q)模型

MA(q)模型,表示时间 t t t下的 x t x_{t} xt由过去的 t − 1 , t − 2 , . . . , t − q t-1,t-2,...,t-q t1,t2,...,tq时间下的历史扰动项 ε t − 1 , ε t − 2 , . . . , ε t − q \varepsilon_{t-1},\varepsilon_{t-2},...,\varepsilon_{t-q} εt1,εt2,...,εtq决定,称之为q阶的移动平均(Moving Average)过程:

x t = μ + ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − ⋯ − θ q ε t − q                        ( 2 ) {x_t} = \mu + {\varepsilon _t} - {\theta _1}{\varepsilon _{t - 1}} - {\theta _2}{\varepsilon _{t - 2}} - \cdots - {\theta _q}{\varepsilon _{t - q}}\; \; \; \; \; \; \; \; \; \; \; (2) xt=μ+εtθ1εt1θ2εt2θqεtq(2)

数字特征: E ( ε t ) = 0 , D ( ε t ) = σ ε t 2 E({\varepsilon _t}) = 0,D({\varepsilon _t})=\sigma _{{\varepsilon _t}}^2 E(εt)=0,D(εt)=σεt2

结合以上的数字特征,藉由式(2)变形可得知:

  1. E ( x t ) = μ E({x_t}) = \mu E(xt)=μ
  2. D ( x t ) = ( 1 + θ 1 2 + θ 2 2 + ⋯ + θ q 2 ) ⋅ σ ε 2 D({x_t}) = (1 + \theta _1^2 + \theta _2^2 + \cdots + \theta _q^2) \cdot \sigma _\varepsilon ^2 D(xt)=(1+θ12+θ22++θq2)σε2 与q相关

变形过程推导,自相关系数 ρ k {\rho _k} ρk,协方差 r ( k ) = c o v ( x t , x t − k ) {\rm{r(k) = cov}}({x_t},{x_{t - k}}) r(k)=cov(xt,xtk),偏自相关系数,统一见 3.5. 变形推导过程

1.3.3. ARMA(p,q)模型

将纯AR(p)与纯MA(q)结合,得到一个一般的自回归移动平均(Auto Regressive Moving Average)过程ARMA(p,q):
x t = ϕ 0 + ϕ 1 x t − 1 + ϕ 2 x t − 2 + ⋯ + ϕ p x t − p + ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − ⋯ − θ q ε t − q          ( 3 ) {x_t} = {\phi _0} + {\phi _1}{x_{t - 1}} + {\phi _2}{x_{t - 2}} + \cdots + {\phi _p}{x_{t - p}} + {\varepsilon _t} - {\theta _1}{\varepsilon _{t - 1}} - {\theta _2}{\varepsilon _{t - 2}} - \cdots - {\theta _q}{\varepsilon _{t - q}}\; \; \; \; (3) xt=ϕ0+ϕ1xt1+ϕ2xt2++ϕpxtp+εtθ1εt1θ2εt2θqεtq(3)

把前半部分看出随着时间变化的 T t T_{t} Tt,后面半部分看出历史扰动项 I t I_{t} It,可以得出数字特征:

  1. E ( x t ) = ϕ 0 1 − ϕ 1 − ⋯ − ϕ p E({x_t}) = {{{\phi _0}} \over {1 - {\phi _1} - \cdots - {\phi _p}}} E(xt)=1ϕ1ϕpϕ0
  2. D ( x t ) = D ( T t ) + D ( I t ) D({x_t}) = D({T_t}) + D({I_t}) D(xt)=D(Tt)+D(It) 同时与p,q相关

变形过程推导,自相关系数 ρ k {\rho _k} ρk,协方差 r ( k ) = c o v ( x t , x t − k ) {\rm{r(k) = cov}}({x_t},{x_{t - k}}) r(k)=cov(xt,xtk),偏自相关系数,模型变量太多了,这里我就懒得算了,谁考试让你用手推这个那完全就是变态了

1.3.4. ARIMA(p,d,q)模型

ARIMA模型(Auto Regressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动)。ARIMA(p,d,q)中,AR是“自回归”,p为自回归项数;MA为“滑动平均”,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)

这里需要证明一下,当时间序列本身不是平稳的时候,如果它的增量,即的一次差分,稳定在零点附近,可以将看成是平稳序列。所以在实际的问题中,所遇到的多数非平稳序列可以通过一次或多次差分后成为平稳时间序列,再藉由差分后的平稳序列带入之前的ARMA模型,这就是ARIMA的建模构成方法:

在这里插入图片描述

1.3.5. 变形推导过程

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、基于Matlab进行计算

Step1:指定非季节性 ARIMA 模型

建立一个 ARIMA(2,1,2) 模型:
( 1 − ϕ 1 L − ϕ 2 L 2 ) ( 1 − L ) y t = ( 1 + θ 1 L + θ 2 L 2 ) ε t (1 - {\phi _1}L - {\phi _2}{L^2})(1 - L){y_t} = (1 + {\theta _1}L + {\theta _2}{L^2}){\varepsilon _t} (1ϕ1Lϕ2L2)(1L)yt=(1+θ1L+θ2L2)εt

Mdl = arima(2,1,2)

Step2:参数评估,并查看生成模型的

[EstMdl,EstParamCov,logL,info] = estimate(Mdl,y,Name,Value)

其中生成info中由参数详情,EstParamCov有结果分析
在这里插入图片描述
Step3:预测结果

[Y,YMSE] = forecast(Mdl,numperiods,Y0,Name,Value)

numperiods为预测范围,或预测周期内的时间点数,指定为正整数

Y0用于初始化预测模型的预采样响应数据,指定为长度为 numpreobs 的数值列向量或 numpreobs-by-numpaths 数值矩阵

生成Y代表预测结果,YMSE代表准确性MSE得分

  • 21
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
MATLAB中的时间序列生成对抗网络(Time Series Generative Adversarial Network,简称TSGAN)是一种用于生成时间序列数据的机器学习模型。下面是一个简单的MATLAB代码示例,用于实现TSGAN: ```matlab % 导入数据 data = load('time_series_data.mat'); time_series = data.time_series; % 定义生成器网络 generator = <定义生成器网络的代码>; % 定义判别器网络 discriminator = <定义判别器网络的代码>; % 定义损失函数和优化器 loss = <定义损失函数的代码>; optimizer = <定义优化器的代码>; % 训练模型 num_epochs = 1000; batch_size = 32; for epoch = 1:num_epochs % 随机选择一批训练样本 batch_indices = randperm(size(time_series, 1), batch_size); batch = time_series(batch_indices, :); % 生成假样本 fake_samples = generator(<输入噪声的代码>); % 计算判别器的损失函数 real_labels = ones(batch_size, 1); fake_labels = zeros(batch_size, 1); real_loss = loss(discriminator(batch), real_labels); fake_loss = loss(discriminator(fake_samples), fake_labels); discriminator_loss = real_loss + fake_loss; % 更新判别器的参数 gradients = gradient(discriminator_loss, discriminator.Parameters); optimizer.apply_gradients(gradients); % 计算生成器的损失函数 generator_loss = loss(discriminator(fake_samples), real_labels); % 更新生成器的参数 gradients = gradient(generator_loss, generator.Parameters); optimizer.apply_gradients(gradients); end % 使用生成器生成新的时间序列数据 new_samples = generator(<输入噪声的代码>); % 显示生成的时间序列数据 plot(new_samples); ``` 请注意,上述代码只是一个简单的示例,实际应用中可能需要根据具体问题进行修改和优化。另外,生成器和判别器网络的具体实现需要根据你的数据和任务进行定义。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值