时间序列常用算法总结

时间序列预测算法总结

前言

​ 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。

​ 从时间的序列的平稳性来看,时间序列可以分为平稳序列与非平稳序列,其中平稳序列就是指存在某种周期,季节性及趋势的方差和均值不随时间变化的序列;从变量数目来看分为单变量时间序列与多变量时间序列。

下面就我最近看到的时间序列预测方法进行总结:主要分为基于统计的预测方法与基于深度学习的预测方法

一、基于统计的时序数据建模方法

基于统计的时序数据建模方法也分为两类,一种比较传统时间序列建模方法,比如移动平均法,指数平滑法,AR,MA,ARMA等;一种是基于机器学习的方法,比如随机森林,Xgboost,LightGBM等。

1.1传统时序数据建模方法

传统时序数据建模方法一般都是针对于单变量的预测(自回归),这类方法比较适用于小规模数据集,比如电力负荷预测,燃气预测,某商场的客流量预测等。

1.1.1周期因子法

周期因子法是提取时间序列的周期性特征进行预测,使用的前提是一定要有明显的周期性。

方法步骤:

  • 观察序列,查看该序列是否有明显的周期性,若有就可以尽可能准确的提取这种周期特征,进行预测。

  • 计算周期因子factors

    • 将数据转换成一个方阵,其中行表示一个周期包含的所有时刻数据,列表示不同周期在同一时刻的数据

    • 将时序数据除以周期的周期均值,得到一个比值

    • 按列取每个周期的中位数,这个中位数就表示周期因子

  • 计算base

    • base值根据测试数据的效果来确定的,可以取某个周期的平均值作为base,但是这并不一定是一个好方法,因为对于时间序列预测,可能取一个周期中的最后几天更能反映最新的情况。而且为了防止一些离群情况(比如一些节假日的客流量就会异常大),这种情况就需要去掉周期性因素再平均(即将其处以周期因子)。除此之外,也可比取周期的均值和中位数将其融合来作为base,融合的比例按照测试集的表现来确定;也可以根据与预测的时间距离来赋予不同的权重。
  • 计算预测值,即将周期因子(factors)与base相乘

1.1.2移动平均法

移动平均法(moving average method)是根据时间序列,逐项推移,依次计算包含一定项数的序时平均数,以此进行预测的方法。移动平均法包括一次移动平均法和加权移动平均法。

  • 简单移动平均

    简单移动平均的各元素的权重都相等。简单的移动平均的计算公式如下:
    F t = ( A t − 1 + A t − 2 + . . . + A t − n ) / n F_t =(A_{t-1}+A_{t-2}+...+A_{t-n})/n Ft=(At1+At2+...+Atn)/n

    • F t F_t Ft表示对下一期的预测值
    • n n n表示移动平均的时期个数
    • A t − i A_{t-i} Ati表示前i的实际值
  • 加权移动平均

    加权移动平均给固定跨越期限内的每个变量值以不同的权重。其原理是:历史各期的数据信息对预测未来时期值的作用是不一样的。除了以n为周期的周期性变化外,远离目标期的变量值的影响力相对较低,故应给予较低的权重。 加权移动平均法的计算公式如下:
    F t = w 1 A t − 1 + w 2 A t − 2 + w 3 A t − 3 + … + w n A t − n F_t=w_1A_{t-1}+w_2A_{t-2}+w_3A_{t-3}+…+w_nA_{t-n} Ft=w1At1+w2At2+w3At3++wnAtn

    • F t F_t Ft表示对下一时刻的预测值
    • w i w_i wi第t-i时刻的权重;
    • n n n预测的时刻数,其中 w 1 + w 2 + … + w n = 1 w_1+ w_2+…+ w_n=1 w1+w2++wn=1

    在运用加权平均时,权重的选择是一个需要注意的问题。经验法和试算法是选择权重的最简单的方法。一般而言,最近期的数据最能预示未来的情况,因而权重应大些。例如,根据前一个月的利润和生产能力比起根据前几个月能更好的估测下个月的利润和生产能力。但是,如果数据是季节性的,则权重也应是季节性的。

1.1.3ARIMA模型

自回归模型描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测。

1.1.3.1模型原理
1.平稳性要求

ARIMA模型最重要的地方在于时序数据的平稳性。平稳性是要求经由样本时间序列得到的拟合曲线在未来的短时间内能够顺着现有的形态惯性地延续下去,即数据的均值、方差理论上不应有过大的变化。平稳性可以分为严平稳与弱平稳两类。严平稳指的是数据的分布不随着时间的改变而改变;而弱平稳指的是数据的期望与向关系数(即依赖性)不发生改变。在实际应用的过程中,严平稳过于理想化与理论化,绝大多数的情况应该属于弱平稳。对于不平稳的数据,我们应当对数据进行平文化处理。最常用的手段便是差分法,计算时间序列中t时刻与t-1时刻的差值,从而得到一个新的、更平稳的时间序列。

2.AR模型

自回归模型首先需要确定一个阶数p,表示用几期的历史值来预测当前值。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} yt=μ+i=1pγiyti+ϵt
上式中 y t y_t yt是当前值, u u u是常数项, p p p是阶数$ r_i 是 自 相 关 系 数 , 是自相关系数, ,\epsilon_{t}$是误差。

自回归模型有很多的限制:
1、自回归模型是用自身的数据进行预测
2、时间序列数据必须具有平稳性
3、自回归只适用于预测与自身前期相关的现象

3.MA模型

移动平均模型关注的是自回归模型中的误差项的累加 ,q阶自回归过程的公式定义如下:

  • 25
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Lyapunov指数是衡量动力系统混沌程度和预测能力的重要指标之一。在时间序列分析中,利用Matlab可以计算时间序列的最大Lyapunov指数。 要计算时间序列的最大Lyapunov指数,首先需要获取时间序列的数据。可以使用Matlab中的数据处理函数读取和处理数据,将其转化为向量形式。 接下来,需要构建动力系统的状态空间。这可以通过Matlab中的延迟嵌入方法来实现。延迟嵌入方法将时间序列转化为一组延迟的向量,以此构建状态空间。 在得到状态空间后,可以使用Lyapunov指数的计算公式来计算最大Lyapunov指数。计算最大Lyapunov指数的一种常用方法是Wolf算法。该算法基于相邻状态点之间的距离演化来估计Lyapunov指数。 在Matlab中,可以使用内置的函数和工具箱来实现计算最大Lyapunov指数的过程。其中,庞加莱截面法和相空间重构法是常用的计算方法。可以通过调用相应的函数和工具箱来实现Lyapunov指数的计算。 最后,通过对Lyapunov指数的计算结果进行分析和解释,可以评估时间序列的混沌度和预测能力。较大的Lyapunov指数表示时间序列的混沌程度较高,预测能力较差;较小的Lyapunov指数表示时间序列的混沌程度较低,预测能力较好。 总结起来,利用Matlab可以计算时间序列的最大Lyapunov指数,通过构建状态空间和调用相应的函数和工具箱来实现。Lyapunov指数的计算可以帮助评估时间序列的混沌度和预测能力,对于动力系统的研究和分析具有重要意义。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值