12.2 计数时间序列
本书中讨论的所有方法都假设数据来源于连续的样本空间。但很多情况下数据经常也计数的形式出现。例如,我们可能希望预测每天进入商店的顾客数量。我们可能会有 0, 1, 2, 个顾客,但是我们不可能有3.45693个顾客。
在实践中,如果我们的计数值很大,那么上面的问题就不再重要。如果顾客数量最小为100,那么连续样本空间 \([100,\infty)\) 与离散样本空间 \(\{100,101,102,\dots\}\) 之间的差异对我们的预测没有显著的影响。然而,如果我们的数据中包含数值小的计数值 \((0, 1, 2, \dots)\) ,那么我们需要使用更适合非负整数样本空间的预测方法。
这样的模型超出了本书的讨论范围。这种情况下有一种简单的方法,下面进行介绍。该方法为“ Croston 方法”,以其英国发明家 John Croston 的名字命名,最早在 Croston (1972) 中介绍。实际上,这个方法也不能正确处理计数性质的数据,但它经常被人们使用,因此值得我们了解。
利用 Croston 方法,我们根据原始的时间序列构造两个新的序列,并指出哪些时间段包含零值以及哪些时间段包含非零值。设 \(q_i\) 为第 \(i\) 个非零值, \(a_i\) 为 \(q_{i-1}\) 与 \(q_i\) 之间的时间间隔。 Croston 方法对两个新序列 \(a\) 和 \(q\) 分别进行简单的指数平滑预测。由于该方法通常应用于物品需求量的时间序列数据,因此 \(q\) 通常称为“需求量”, \(a\) 称为“间隔时间”。
如果 \(\hat{q}_{i+1|i}\) 和 \(\hat{a}_{i+1|i}\) 分别是基于第 \(i\) 期需求量和间隔时间对第 \((i+1)\) 期相应序列值的一步预测值,那么 Croston 方法给出 \[\begin{align} \hat{q}_{i+1|i} & = (1-\alpha)\hat{q}_{i|i-1} + \alpha q_i, \tag{12.1}\\ \hat{a}_{i+1|i} & = (1-\alpha)\hat{a}_{i|i-1} + \alpha a_i. \tag{12.2} \end{align}\] 平滑参数 \(\alpha\) 的取值范围为0到1,且假定两个方程的平滑参数相同。假设 \(j\) 为最后观察到的正数观测值的时间。此时,对时间 \(T+h\) 对应的 \(h\) 步预测由以下比率给出 \[\begin{equation}\label{c2ratio} \hat{y}_{T+h|T} = q_{j+1|j}/a_{j+1|j}. \end{equation}\]
由于该方法不对应任何统计模型,因此我们不能通过代数结果来计算预测区间(Shenstone & Hyndman, 2005 )。
函数croston()
默认使用 \(\alpha=0.1\) , \(\ell_0\) 设置为等于每个序列中的第一个观测值。这与 Croston 设想的方法是一致的。
示例: 润滑剂销量
在下面的示例中,我们将该方法应用于很少使用的润滑剂月销量数据。这个数据集是几年前我们为一家石油公司做的咨询项目的一部分,详细信息如下表所示。
由于很多月份根本没有销售记录,且其他几个月销量也很少,因此该数据集包含较小数值的计数数据。
Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 0 | 1 | 0 | 11 | 0 | 0 | 0 | 0 | 2 | 0 |
6 | 3 | 0 | 0 | 0 | 0 | 0 | 7 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 3 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
数据中非零的需求量有11个,用 \(q\) 表示,对应的到货量用 \(a\) 表示,均如下表所示。
i | q | a |
---|---|---|
1 | 2 | 2 |
2 | 1 | 2 |
3 | 11 | 2 |
4 | 2 | 5 |
5 | 6 | 2 |
6 | 3 | 1 |
7 | 7 | 6 |
8 | 3 | 8 |
9 | 1 | 1 |
10 | 1 | 3 |
11 | 1 | 2 |
这给出了需求量的预测2.750和时间间隔的预测2.793。因此原始序列的预测为 \(\hat{y}_{T+h|T} = 2.750 / 2.793 = 0.985\)。实际上, R 为你做了下列计算:
%>% croston() %>%
productC autoplot() +
xlab("时间") +
theme(text = element_text(family = "STHeiti"))
R中的tsintermittent包中提供了具有很多功能(包括参数估计)的 Croston 方法的实现。
Christou & Fokianos (2015) 中描述了更直接处理计数性质数据的预测模型。