数据分析之时间序列分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析之时间序列分析相关的知识,希望对你有一定的参考价值。

参考技术A 顾名思义,时间序列就是按照时间顺利排列的一组数据序列。时间序列分析就是发现这组数据的变动规律并用于预测的统计技术。该技术有以下三个基本特点:

1.假设事物发展趋势会延伸到未来;

2.预测所依据的数据具有不规则性;

3.不考虑事物发展之间的因果关系。

对时间序列进行分析的最终目的,是要通过分析序列进行合理预测,做到提前掌握其未来发展趋势,以此为业务决策提供依据。

移动平均法和指数平滑法的局限

移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势。但这种方法不适合预测具有复杂趋势的时间序列。指数平滑法是移动平均法的改进方法,通过对历史数据的远近不同赋予不同的权重进行预测。但在实际应用中,指数平滑法的预测值通常会滞后于实际值,尤其是所预测的时间序列存在长期趋势时,这种滞后的情况更加明显。

在实际进行时间序列预测时,遇到的数据会比较复杂,所以我们需要用到更专业的预测方法来对数据进行合理预测。通常情况下一个时间序列包含四种因素,它们会通过不同的组合方式影响时间序列的发展变化。

时间序列四种因素有两种组合方式。

1.四种因素相互独立,即时间序列是由四种因素直接叠加而形成的,可用加法模型表示:

Y=T+S+C+I

2.四种因素相互影响,即时间序列是综合四种因素而形成的,可用乘法模型表示:

Y=T×S×C×I,通常遇到的时间序列都是乘法模型。其中,原始时间序列值和长期趋势可用绝对数表示,季节变动、循环变动和不规则变动则用相对数(通常是变动百分比)表示。

当我们需要对一个时间序列进行预测时,需要将上述四种因素从时间序列中分解出来。原因是:

1.把因素从时间序列中分解出来后,就能克服其他因素的影响,仅考量某一种因素对时间序列的影响;

2.分解这四种因素后,也可以分析他们之间的相互作用,以及它们对时间序列的综合影响;

3.当去掉某些因素后,就可以更好地进行时间序列之间的比较,从而更加客观地反映事物变化发展规律;

4.分解这些因素后的序列可以用于建立回归模型,从而提高预测精度。

通常情况,我们会考虑进行季节因素的分解,也就是将季节变动因素从原时间序列中去除,并生成由剩余的三种因素构成的序列来满足后续分析需求。

如果时间序列图的趋势随着时间的推移,序列的季节波动变得越来越大,则建议使用乘法模型;如果序列的季节波动能够基本维持恒定,则建议使用加法模型。

时间序列的预测步骤主要分为四步:

(1)绘制时间序列图观察趋势;

(2)分析序列平稳性并进行平稳化;

(3)时间序列建模分析;

(4)模型评估与预测;

平稳性是指时间序列的所有统计性质都不会随着时间的推移而发生变化,对于一个平稳的时间序列来说,需要具有以下特征:

(1)均数和方差不随时间变化;

(2)自相关系数只与时间间隔有关,与所处的时间无关。

相关系数是用来量化变量之间的相关程度。自相关系数研究的是一个序列中不同时期的相关系数,也就是时间序列计算其当前期和不同滞后期的一系列相关系数。

目前主流的时间序列预测方法都是针对平稳的时间序列进行分析的,但是实际上,我们遇到的大多数时间序列都不平稳,所以在分析时,需要首先识别序列的平稳性,并且把不平稳的序列转换为平稳序列。一个时间序列只有被平稳化处理过,才能被控制和预测。

将时间序列平稳化的方式有很多,基础的方法是差分,因为这个方法有助于我们解读时间序列模型。差分,就是指序列中前后相邻的两期数据之差。

ARIMA模型是时间序列分析中常用的一种模型,其全称为求和自回归移动平均模型。该模型形式为:ARIMA(p,d,q)(P,D,Q)。该模型有6个参数,前3个参数(p,d,q)针对季节性变化后的序列,后三个参数(P,D,Q)主要用来描述季节性变化,两个序列是相乘的关系,因此,该模型也称为复合季节模型。

其中:p,是指移除季节性变化后的序列所滞后的p期,取值通常为0或1,大于1的情况较少;d,是指移除季节性变化后的序列进行了d阶差分,取值通常为0、1或2;q,是指移除季节性变化后的序列进行了q次移动平均,取值通常为0或1,很少会超过2。大写的P,D,Q的含义相同,只是应用在包含季节性变化的序列上。本例中,该模型可解读为,对移除季节因素的序列和包含季节因素的序列分别进行一阶差分和一次移动平均,综合两个模型而构建出的时间序列模型。

模型拟合度主要通过R平方或平稳的R平方来评估模型拟合优度,以及在比较多个模型的情况下,通过比较统计量从而找到最优模型。本例中,由于原始序列具有季节变动因素,所以,平稳的R平方则更具参考意义。该值等于32.1%,所以,该时间序列模型的拟合效果一般。

模型统计提供了更多的统计量用以评估时间序列的数据拟合效果。本例中,虽然平稳的R平方值为32.1%,但是“杨-博克斯Q(18)”统计量的显著性(P值)=0.706,大于0.05(此处的显著性(P值)>0.05是期望得到的结果),则接受原假设,认为这个序列的残差符合随机序列分布,同时也没有离群值的出现,这些也都反映出数据的拟合效果还是可以接受的。

kaggle实战之海冰面积序列的数据分析:时间序列分析(三)

参考技术A 因为数据直接为每日数据,因此无需进行数据处理。通过想x-y折线图表现出逐日变化。

bbox_to_anchor=(0.,-.363,1.,.102) 指定锚点 (x,y,width,height)一般只用x,y
loc=3 表示图标位于左下,也可以使用· loc=“lower left·” 这里可以省略
ncol=2 表示图标有几列,这里是两列
mode=expand "expand", None水平填充满坐标区域摆放
borderaxespad=0 边界与坐标轴之间的距离

重采样指将时间序列从一个频率转换到另外一个频率,包括downsampling(高频到低频)和upsampling(低频到高频)

各区间哪边是闭合的?如何标记哪个?
降采样 -聚合 close、label
ts.resample('5min',how='sum')

由‘D’转为‘12M’采样,采样方式为求平均

默认右边封闭,标记右边。因为最初和最末的数据可能会不全,因此将其删去。

画两幅子图使用 plt.subplots ,通过设置 sharex 共享x轴,返回f-画布控制对象,axarr图形控制对象。

设置主坐标格标注格式 axarr.xaxis.set_major_formatter(mdates.DateFormatter("%b"))
绘图时的颜色循环绘图,因此需要渐变色
axarr.set_pro_cycle(plt.cycler('color',plt.cm.winter(np.linspace(0,1,len(range(sater,end)))))

设置子图的图例和坐标,使用 axarr.set_xlabel , axarr.set_ylabel , axarr.set_title 设置坐标名和标题名
axarr.add_artist(AnchoredText()) 添加文本框, loc 指文本框位置

作者绘图并不是通过计算海冰月平均来展现每月的变化。而是通过循环绘制每年的海冰变化。因此这里需要在一张图上循环绘图。为了使得绘图都在同一个坐标上,认为设定将‘Year’值都定位了1972年。不需要采样,直接绘图即可。

本章学习重点:时间序列数据的重采样,x-y轴图的绘制。

以上是关于数据分析之时间序列分析的主要内容,如果未能解决你的问题,请参考以下文章

时间序列分析:平稳时间序列分析之数据准备

R: 时间序列分析之forecast

时间序列分析:平稳时间序列分析之预测

Python数据分析 之时间序列基础

kaggle实战之海冰面积序列的数据分析:时间序列分析(三)

时间序列分析:平稳时间序列分析之模型识别