通过 Python 代码实现时间序列数据的统计学预测模型
在本篇中,我们将展式使用 Python 统计学模型进行时间序列数据分析。
* 问题描述 *
目标:根据两年以上的每日广告支出历史数据,提前预测两个月的广告支出金额。
原始数据:2017-01-01 到 2019-09-23 期间的每日广告支出。
数据准备:划分训练集和测试集。
df1 = data[['Date','Spend']].set_index('Date')
train = df1.iloc[:933,:]
test = df1.iloc[933:,:]
test.shape,train.shape
测试集大小:(63,1)
;训练集大小:(933,1)
。
本文目录
- 综述
- 时间序列分析常用统计模型
- 单变量时间序列数据建模的关键要素
- ARIMA
- ACF 和 PACF
- SARIMA
- 案例:通过 SARIMA 预测广告支出
- ETS
- ETS
- Holt-Winter 季节性预测算法
- 案例:通过 Holt-Winter 季节性预测算法预测广告支出
- 算法对比
- 结束语
综述
时间序列分析常用统计模型
- 单变量时间序列统计学模型,如:平均方法、平滑方法、有/无季节性条件的 ARIMA 模型。
- 多变量时间序列统计学模型,如:外生回归变量、VAR。
- 附加或组件模型,如:Facebook Prophet、ETS。
- 结构化时间序列模型,如:贝叶斯结构化时间序列模型、分层时间序列模型。
在本篇文章中,我们主要关注 SARIMA 和 Holt-winters 方法。
单变量时间序列统计学模型的关键要素
如果我们想要对时间序列数据进行上述统计学模型分析,需要进行一系列处理使得:(1)数据均值 (2)数据方差 (3)数据自协方差 这三个指标不依赖于时间项。即时间序列数据具有平稳性。
如何明确时间序列数据是否具有平稳性?可以从两个特征进行判断。(1) 趋势,即均值随时间变化;(2) 季节性,即方差随时间变化、自协方差随时间变化。若满足以上两个条件,则时间序列数据不符合平稳性要求。
可以通过以下方法消除上述问题:
- 变换,如:取对数、取平方等。
- 平滑处理,如:移动平均等。
- 差分。
- 分解。
- 多项式拟合,如:拟合回归。
ARIMA
Autoregressive Integrated Moving Average model (ARIMA),差分整合移动平均自回归模型。ARIMA(p,d,q)
主要包含三项:
p:AR项,即自回归项(autoregression),将时间序列下一阶段描述为前一阶段数据的线性映射。
d项,即积分项(integration),时间序列的差分预处理步骤,使其满足平稳性要求
q:MA项,即移动平均项(moving average),将时间序列下一阶段描述为前一阶段数据平均过程中的残留误差的线性映射。
该模型需要指定 p d q
三项参数,并按照顺序执行。ARIMA 模型也可以用于开发 AR, MA 和 ARMA 模型。
完整文章请访问:https://imba.deephub.ai/p/ee53ab107ac811ea90cd05de3860c663