《python数据分析和数据挖掘》——时间序列分析学习笔记

时间序列分析

给定一个已被观测了的时间序列,预测该序列的的未来值。

重点介绍AR模型MA模型ARMA模型ARIMA模型

1、时间序列的预处理

拿到一个观察值序列后,首先要对它的纯随机性和平稳性进行检验,称之为预处理。在此区别纯随机序列、平稳非白噪声序列、非平稳序列。

纯随机序列(白噪声序列),序列的各项之间没有任何相关关系,序列有着完全无序的随机波动,可以终止对该序列的分析。白噪声序列是没有信息可提取的平稳序列。

平稳非白噪声序列,他的均值和方差是常数,现在普遍采用ARMA模型进行处理,提取该序列的有用信息

非平稳序列,由于均值和方差不稳定,处理方法一般将其转换成平稳序列,以平稳序列的分析方法进行研究。如果一个时间序列经差分运算后具有平稳性,则该序列为差分平稳序列,可用ARIMA模型分析

1)  平稳性检验

贴了一部分定义,只用明白什么是自相关系数(表示数据和数据间的关系),什么样是平稳性(信号的均值或说期望是常数)。

a)平稳时间序列的定义

       

b) 平稳性的检验

两种检验方法。一种是根据时序图和自相关图的特征作出判断的图检验,操作简单、应用广泛,但带有主观性;另一种是构造检验统计量进行检验,目前常用的方法是单位根检验

I 时序图检验。根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值式中在一个常数附近波动,并且波动的范围有界。倘若有明显的趋势性或周期性,那他通常不是平稳序列。

II 自相关图检验。平稳序列具有短期相关,说明对平稳序列而言通常近期的序列值对

现有值影响较大,间隔越远的过去值对现有值影响较小。随着延迟期数k的增加,平稳序列的自相关系数ρk(延迟k期)会比较快的衰减趋向于0,在0处波动,而非平稳序列则衰减速度较慢,这就是利用自相关图进行平稳性检验的标准。

III 单位根检验。单位根检验是指检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列了。涉及到“单位根检验p值”直接看后面有个操作步骤,加黑的。

2)  纯随机性检验:白噪声检测,构造验证统计量来检验序列的纯随机性,常用的验证统计量有Q统计量、LB统计量,一般很少出现纯随机状态(即序列值之间没有任何关系)。涉及统计量 “白噪声检验p值”  accor_djungbox()函数

怎么计算 安利 https://blog.csdn.net/wnma3mz/article/details/79874577,里面有代码

2、平稳时间序列分析

 

对于拟合平稳序列最常用的模型就是ARMA模型,又可以AR模型、MA模型和ARMA三大类。

1) AR模型

                                     

在t时刻的值由前p期的多元线性回归,认为x主要是受过去p期的序列值的影响。误差为当前的随机干扰ε,为零均值白噪声序列。

a.均值——求期望

                                     

已知,所以可得

b.方差——有界等于常数

c.自相关系数(ACF)

                                                 

平稳AR(p)模型的自相关系数呈指数的速度衰减,始终有非零取值,不会再k大于某个常数之后就恒等于0,具有拖尾性。

d.偏自相关系数(PACF)

单纯地表明测度对的影响,即平稳AR(p)模型的偏自相关系数具有p阶截尾性。

2)  MA模型

                                                  

在t时刻的随机变量的取值是由前q期的随机扰动的多元线性函数,误差为当前的随机干扰ε,为零均值白噪声序列,μ是序列的均值。认为x主要受过去q期误差项的影响。

                          

3) ARMA模型

自回归移动平均模型,简记为ARMA(p,q)

  

即在t时刻的随机变量的取值是由前p期和前q期的随机扰动的多元线性函数。误差为当前的随机干扰ε,为零均值白噪声序列。认为x主要受过去p期的序列值和过去q期误差项的共同影响。特别,q=0 AR模型;p=0 MA模型

                           

4) 平稳时间序列建模

某个时间序列经过预处理,被判定为平稳非白噪声序列,就可以利用ARMA模型进行建模。计算出平稳非白噪声序列的自相关系数和偏自相关系数,再由AR(p)模型、MA(p)、ARMA(p)的自相关系数和偏自相关系数的性质,选择合适的模型。

                                                              

 

3. 非平稳时间序列分析

绝大多数序列都是非平稳序列,更多采用随机时序分析,具体建立的模型由ARIMA模型、残差自回归模型、季节模型等。重点采用ARIMA模型对非平稳时间序列进行分析建模。

1) 差分运算

p阶差分:相距一期的两个序列值之间的减法运算称为1阶差分。

k步差分:相距k期的两个序列值之间的减法运算称为k步差分

2) ARIMA模型

本质是差分运算和ARMA模型结合。

                                                             

根据这个步骤可总结如下:

I 平稳性检测。画个序列变化图,看他变化是不是稳定,均值要保持稳定;然后再看他的自相关图,如果自相关系数长期不等于0,说明序列具有很强的长期相关性,序列要有很强的短期相关性;但是我推荐使用平方根检验方法,判断(平方根检验统计量对应的)p值是否大于0.05,此处可判断序列是否为非平稳序列。(非平稳序列一定不是白噪声序列)

II 如果不是非平稳序列,那做个一阶差分试试,再根据第I步进行平稳性验证,不满足就再差分一次试试,直至得到稳定序列

III 针对第II步得到的平稳序列,我们做白噪声检验,(白噪声检验统计量对应的)p值远小于0.05,说明得到但是平稳非白噪声序列。

IV 针对平稳非白噪声序列,仿照ARMA模型进行分析。确定p、q

1.  人的主观识别,根据截尾、拖尾确定p、q,我可做不到这点

2.  相对最优模型识别。计算ARMA(p,q),当p和q均小于等于3的所有组合的BIC信息量,取其中BIC信息量达到最小的模型阶数。BIC矩阵中最小值的索引(a,b),p=a,q=b,如最小BIC值的索引为(0,1),表示p=0,q=1.即p,q定阶完成。

综上n阶差分后确定的模型为ARIMA(p,n,q),此处为ARIMA(0,1,1)。

需要指出模型不一定是唯一的,ARIMA(1,1,0)和ARIMA(1,1,1)也可以通过检验。

V 针对建立好的ARIMA模型检验残差(保证为白噪声序列,认为是无偏的),再估计待求系数参数,最后进行模型预测。

                              

利用模型向前预测的时期越长,预测误差将会越大,这是时间序列分析的典型特点。

                                   

 

4. Python主要时序算法函数

主要调用库Statsmodel,算法主要是ARIMA模型,在使用该模型进行建模时,需要进行一系列判断操作,主要包含平稳性检验、白噪声检测、是否差分、AIC和BIC指标值、模型定阶,最终做预测。相关函数如下

                             

需要指出

summary()和summary2()函数生成已有模型的报告, 使用格式:

arima.summary(),其中arima为已经建立好的ARIMA模型,返回一份格式化的模型 报告,包含模型的系数、表胡宗南误差、p值、AIC和BIC等详细指标。

Adffuller()是对观测值序列进行单位根检验(ADF test),使用格式:

h=adffuller(Series,maxlag=None,regression=’c’,autolag=’AIC’,store=False,regresults=False)输入参数Series为一维观测值序列、返回值依次为adf、pvalue、usedlag、nobs、criticalvalues、icbest、regresults、resstore。

其他函数的具体用法可百度。

时间序列分析是一种用于处理时间相关数据的方法,可以用于预测未来趋势、分析周期性模式等。在前端使用时间序列分析算法时,一般可以按照以下步骤进行: 1. 数据准备:首先需要收集和整理时间序列数据,确保数据的准确性和完整性。可以使用 JavaScript 或其他前端语言来获取和处理数据。 2. 数据可视化:在进行时间序列分析之前,通常需要对数据进行可视化,以便更好地理解数据的特征和趋势。可以使用前端的数据可视化库(如 D3.js、ECharts 等)来绘制折线图、柱状图等图表。 3. 数据预处理:对于时间序列数据,常见的预处理操作包括平滑处理、缺失值处理、异常值处理等。可以使用前端的统计库或自定义函数进行数据预处理。 4. 应用时间序列算法:选择合适的时间序列算法来进行分析,常见的算法包括移动平均、指数平滑、ARIMA 模型、季节性分解等。可以使用前端的统计库(如 stats.js、time-series-analysis 等)来应用这些算法。 5. 结果展示:将分析结果展示在前端页面上,可以使用图表等方式展示预测结果、趋势分析等信息。同时,可以根据用户需求添加交互功能,如选择不同的时间窗口、调整参数等。 需要注意的是,时间序列分析是一个复杂的领域,需要一定的统计和数学知识作为基础。前端开发者在使用时间序列分析算法时,可以结合相关的文档和教程进行学习和实践,不断提升自己的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值