基于python的时间序列案例-时间序列分析-Python实例

常用的时间序列数据的分析两类:

·趋势分解法

简介:将时间序列分解为趋势、周期、随机三部分,并对前两个部分使用曲线进行拟合

适合场景:适合所有类型的时间序列数据,需要事先判断走势及周期性

·ARIMA法

简介:根据数据扰动项之间的相关性结构构建动态微分方程 以预测模型

适合场景:适合所有类型时间序列数据,需预先判定AR、I、MA三部分参数

趋势分解法

1.时间序列的效应分解

1)长期趋势变动

2)周期性/季节性变化

3)随机变化

2.时间序列的组合方式

1)加法模型:X(t) = T(t)+S(t)+I(t)

其中T代表趋势效应 S代表季节效应 I代表随机效应

2)乘法模型:X(t) = T(t) × S(t) × I(t)

周期震荡的幅度随着趋势性变化而变化

3.python实例预测效果-以某航运公司客运量数据为例

加法模型

57ec100aa884

加法模型 (黑点为实际Y值)

乘法模型

57ec100aa884

乘法模型 (黑点为实际Y值)

ARIMA法

1.平稳时间序列

只有平稳时间序列才能进行统计分析 何谓平稳

任意时间下 序列的均值、方差存在并为常数 且自协方差函数与自相关系数只与时间间隔有关 ?说简单点就是 围绕某个常数上下波动

AR模型

观点:时间序列当期观测值与前N期线性相关 而与前N+1无关

数学语言:X(t)仅与X(t-1),X(t-2),···,X(t-n)有线性关系,而X(t)与X(t-j) (j=n+1,n+2,···)无关

参数判别:自相关系数(ACF)拖尾、偏自相关系数(PACF)p阶截尾

MA模型

观点:当期观测值与以前时刻进入系统的扰动项存在一定的相关关系

数学语言:X(t)与以前时刻t-1,t-2,···t-m进入系统的扰动项ε (t-1),ε (t-2),···,ε (t-m)存在线性关系

参数判别:自相关系数(ACF)q阶截尾、偏自相关系数(PACF)拖尾

ARMA模型

观点:X(t)不仅与其以前的自身值有关,还与以前时刻进入系统的扰动项有关

参数判别:自相关系数(ACF)拖尾、偏自相关系数(PACF)拖尾

存疑点:

教科书的定义 问题来了 都拖尾了 还怎么定p、q参数值?

肉眼观察?总有那么几分不靠谱

可使用AIC和BIC定阶识别 实测貌似拟合的效果也一般

ARIMA模型

对非平稳时间序列使用差分(I),使非平稳时间序列转换为平稳序列

之后套路相同

Python实例分析

趋势分解法

主要使用Prophet包

代码也很简单

加了个小彩蛋 预测上证指数

至于效果嘛 hhh

ARIMA法

建模分5步

1)探索平稳性:ADF检验 若非平稳 则差分至平稳

2)绘制ACF和PACF 定阶

3)模型建模

4)残差白噪声检验

5)预测

在绘制ACF和PACF来定阶 也可以采用AIC或BIC准则来识别 统计量越小越好

代码实例中也给出了AIC准则判别参数

ARIMA还有自动调参的包-"pyramid-arima” 可以自动调参 不过有时候参数与手动识别的参数有出入

Github?源码在此 (附上彩蛋 预测上证指数)

总结下

常用的时间序列就这两种:趋势分解法和ARIMA法

学术点的数据预测效果还是不错

至于工业界真实环境的数据 就有点难说

还是要需要结合实际业务调整

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值