1 前言
从时间上看,订单量时间序列有两个明显的特征:
1)周期性。每天订单量的变化趋势都大致相同,午高峰和晚高峰订单量集中;
2)实时性。当天的订单量可能会受天气等因素影响,呈现整体的上涨或下降;
预测可以反映未来司机成单的情况,能给运营部门及时调整有效的运营策略。预测又有好几种方向:基于订单总额的预测,基于乘客目的地预测,基于上车地点的供需预测等,这里阐述订单总额未来七天的预测。
2 数据建模基本步骤
-
获取被观测系统时间序列数据;
-
对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;
-
经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF ,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q;
- 由以上得到的d、q、pd、q、p ,得到ARIMA模型。然后开始对得到的模型进行模型检验
3 ARIMA实战解剖
原理大概清楚,实践却还是会有诸多问题。相比较R语言,Python在做时间序列分析的资料相对少很多。下面就通过Python语言详细解析后三个步骤的实现过程。
文中使用到这些基础库:
pandas,numpy,scipy,matplotlib,statsmodels,pandas, 对其调用如下:
from __future__ import print_function
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.api import qqplot
from statsmodels.tsa.stattools import adfuller as ADF
3.1 获取数据
对乘用车日运营报表订单总额数据,进行分析。
数据如下:
日期 | 订单总额 |
---|---|
2018/1/1 | 22093.02 |
2018/1/2 | 18917.3 |
2018/1/3 | 6539.3 |
2018/1/4 | 19442.9 |
2018/1/5 | 24425.74 |
2018/1/6 | 29198.1 |
2018/1/7 | 26611.8 |
2018/1/8 | 25389.75 |
2018/1/9 | 22802.62 |
2018/1/10 | 31000.7 |
2018/1/11 | 28794.53 |
2018/1/12 | 28746.15 |
2018/1/13 | 30382 |
2018/1/14 | 31726.1 |
2018/1/15 | 32041.8 |
2018/1/16 | 30514.5 |
2018/1/17 | 31783.9 |
2018/1/18 | 29976.9 |
2018/1/19 | 33292.82 |
2018/1/20 | 35055.3 |
2018/1/21 | 33054.2 |
2018/1/22 | 33000.27 |
2018/1/23 | 34889.85 |
2018/1/24 | 33495.7 |
2018/1/25 | 33960.66 |
2018/1/26 | 35901.61 |
2018/1/27 | 2276.5 |
2018/1/28 | 1268.7 |
2018/1/29 | 32588.14 |
2018/1/30 | 33881 |
2018/1/31 | 29342.02 |
2018/2/1 | 24991.15 |
2018/2/2 | 30995.08 |