第5章 时间序列预测:核心概念与定义

本章将介绍时间序列预测的主要定义和概念。首先引入时间序列,然后引出时间序列预测的一般形式和定义。后续章节将为后面许多工具、模型和概念奠定基础。本章假定读者具备基础的统计概念理解。第3章包含了统计和概率的一些重要元素的速成课程,并在全文中被引用。

5.1 时间序列:基本定义与性质

时间序列数据将是本书的核心研究对象。时间序列数据简单地定义为在离散时间点测量的一系列数据点,按照递增的时间索引(即按时间顺序)排列。通常,这些点按等时间间隔分布,大多数时间序列分析和方法都假设如此。用于记录需求的监测设备(例如智能电表)被设计为按固定间隔收集数据,通常每半小时一次,因此这并非不切实际的假设,同时也简化了分析。1

全书假设时间序列在均匀(等间隔)时间步长上采样。时间序列通常由一系列字母 $X_{1},X_{2},X_{3},...X_{N}$ 表示,其中下标表示时间步长,索引越大表示时间上越靠后的点。或者,时间序列可以写作 $X_k$ ,时间步长为 $k \in K =\{1, 2, \ldots N \}$ 。如果序列无限延伸到未来,则 $N=\infty$ 且 $K=\mathbb{N}=\{1,2\ldots\}$ ,即自然数集。

时间序列可能取的值非常多样,可以是离散值、实数、值集,甚至字母。在本书中,由于数据通常是能源需求,因此 $X_k$ 是单个实值随机变量(随机变量的更详细解释见第3.1节),表示功率(单位瓦特W或千瓦kW)或能量(单位瓦时Wh或千瓦时kWh)。如果每个时间步的值仅包含单个变量,则该序列称为单变量序列。然而,如果每个时间步的序列包含多个变量,例如在每个时间步 $X_k = (L_k, T_k)$ ,其中 $L_k$ 是负荷,$T_k$ 是温度,则该时间序列称为多变量序列。仅有两个变量的特殊情况 $(L_k, T_k)$ 称为双变量序列。

时间序列的一个重要特征是它是否平稳。随机变量 $X_t$ 的时间序列是平稳的,如果数据任意固定段 $X_k, X_{k+1}, \ldots , X_{k+M}$ (对于某个正整数M)的联合分布与数据在时间平移后$X_{k+m},X_{k+1+m},\ldots,X_{k+M+m}$ 的联合分布相同,无论 $m\in\mathbb{Z}$ 如何选择(见第3.3节联合分布的定义)。特别地,它意味着每个时间步的期望值和方差是固定的。 2 非平稳的时间序列自然称为非平稳序列。基本平稳和非平稳时间序列的示例见图5.1。图(a)是平稳时间序列,每个点来自具有固定均值和方差的同一分布。图(b)是非平稳的,其值来自均值和方差随时间增加的分布。最后,图(c)显示的是方差固定但均值具有季节性的时间序列。平稳性是许多时间序列预测模型(例如将在第9.4节介绍的ARIMA模型)的重要属性。它们也更容易建模,因为它们在时间上具有固定性质。证明一个时间序列是平稳的并不简单。绘制时间序列是检验平稳性的典型第一步,此外还有将在附录A中简要讨论的统计检验。

非平稳数据中经常出现的两个重要特征是趋势和季节性。时间序列中的趋势是数据中宏观(即低频)的变化,最常见的是线性趋势,即时间序列中逐渐的线性增长。图5.1b是正线性趋势的示例。在能源应用中,能源需求的增长趋势可能是由于例如低能效技术的逐步采用,或者仅仅是更多设备的采用。

季节性定义为时间序列中以固定规则间隔或固定周期发生的变化。通常需求行为由人类行为驱动,因此在日、周和年水平上往往存在与典型行为模式相对应的强周期性。季节性时间序列通常也可称为周期时间序列。并非所有行为振荡都具有固定周期。例如,医生和护士等轮班工作者可能没有标准的日或周模式(每周不同日期上班,可能混合白班、长白班或夜班)。这些通常称为循环模式。本书重点将放在具有规则周期的季节性上。图5.1c显示了季节性时间序列的示例,其季节周期每五个长度间隔重复一次。

图5.1 不同时间序列的示例,其中a为平稳序列,b为具有线性趋势的非平稳序列,c为具有周期行为的非平稳序列

最后,时间序列的另一个重要性质是其自相关,它描述了一个时间点的变化如何与时间序列中滞后(更早)点的序列相关联。自相关的更详细定义见第3.5节,并在第6.2.4节中更详细地研究。现在描述一般原理,因为它们通常是产生准确预测的非常重要的度量。举个简单例子,一个人每天准时早上8点到公司。某天他可能因为闹钟没响或汽车故障而迟到,于是他可能决定比平时晚下班。在这种情况下,他之后的行为与之前的行为相关。注意,周期为P的季节性时间序列在滞后为P的倍数时具有相对较高的自相关。发现数据中的相关性是识别哪些历史值可能对估计未来点重要的关键(详见第6.2.4节)。

到目前为止只考虑了时间序列本身的性质。然而,能源使用通常受其他外部驱动因素影响。例如,供暖和空调显然与住户在室内的寒冷程度有关。此外,照明使用与室外黑暗程度有关,而这又取决于一年中的时间。因此,能源需求强烈依赖于外部解释变量。选择哪些外部变量纳入时间序列模型(及其相应的预测模型)称为特征选择,将在第6.2节中更详细地描述。

5.2 时间序列预测:定义

在最简单的形式中,时间序列的预测是利用当前可用信息对未来值的一个或一组估计。就本书而言,目标几乎是始终准确地预测低压电网或应用上的未来电力需求。如何定义预测的准确性将在第7章中定义。

为简单起见,以下大部分论述将针对单变量时间序列(见第5.1节),但这些定义也将容易扩展到多变量时间序列。对于接下来的讨论,考虑一个实值单变量时间序列 $L_1, L_2, \ldots ,$ ,定义在均匀间隔的时间步 $t_1, t_2, \ldots ,$ 上,当前时间点为 $t_n$ ,目标是生成接下来h个时间步 $h_{n+1},h_{n+2},\ldots,h_{n+h}$ 的预测。在这种场景下,可以定义几个术语:

• 截止到当前时间 $t_{n}$ 的数据 $L_{1},L_{2},\ldots,L_{n}$ 通常称为历史数据,是任何预测的核心组成部分,尤其是那些具有规则季节性模式(见第5.1节)的预测。

• 当前时间段 $t_n$ 通常被称为预测原点,因为它是预测的起始点。

• 值 h 被称为预测步长,它定义了预测需要估计的、超出预测原点的时间步数。这些预测被称为 h 步超前预测。

这些定义在图5.2中得到说明,该图展示了一个基于均匀每小时时间网格的时间序列,预测原点位于时间步 $t_6=6$,预测步长为 $h=4$ 个时间步。请注意,虽然为了清晰起见在标记(观测值)之间画了线,但时间步之间没有观测值。

预测通常使用与原时间序列相同的字母,但带有一个帽子,例如 $\hat{L}_{n+k}$。为了表示预测的起始(或原点)点,也可以写成 $\hat{L}_{n+k|n}$,这个表示同时指出了预测原点 $t_n$ 和正在估计的时间步 $t_{n+k}$。在本书中,两种形式都会使用,原点和步长应从上下文中明确。

预测的一个特例是1步超前预测,它们通常用于比较不同方法的准确性。通过重复应用1步超前预测 h 次,可以迭代地产生 h 步超前预测,其中每个新的预测值被反馈回模型以进行下一个时间步的预测。毫不意外,这些被称为迭代预测。或者,整个预测步长可以一次性完成,在这种情况下,此类预测被称为直接预测。本书将考虑这两种类型的预测。

图5.2 带有历史数据和标记预测原点的4步超前预测示意图。

在许多应用中,包括本书介绍的核心应用——储能控制(第15.1节),预测可以在新观测值可用时更新。这样做的好处是利用最新数据,从而改进未来估计,尤其是对最短步长的估计。这些被称为滚动预测。考虑一个预测原点为 $t_n$、估计值为 $\hat{L}_{n+1|n}, \hat{L}_{n+2|n}, \ldots , \hat{L}_{n+h|n}$ 的 h 步超前预测。当在 $t_{n+1}$ 获得新观测值时,预测模型可以在更新后的数据集上重新训练,以产生新的估计 $\hat{L}_{n+2|n+1}, \hat{L}_{n+3|n+1}, \ldots , \hat{L}_{n+h+1|n+1}$。由于现在将更近期的信息纳入模型,$t_{n+2},\ldots,t_{n+h}$ 处的预测应比之前的预测更准确。预测步长是一个宽度为 h 的移动窗口。图5.3展示了与图5.2相同情况下滚动预测的示例。最初在初始预测原点 $t=6$ 处对接下来四个时间步 $t=7, \ldots 10$ 进行预测。当在时间 $t=7$ 获得新观测值时,可以在该新预测原点处对接下来四个时间步 $(t=8,\ldots 11)$ 产生新的预测。注意,新预测轨迹已根据新观测值进行了更新。

如第5.1节所述,时间序列实际上是几个其他因素的函数,例如天气变量、一天中的时间、季节性和其他可能未观测到的因素。预测的目的是尝试近似能够“准确”描述该时间序列未来行为的函数。准确性可能是一个难以定义的术语,但通常基于误差度量(这些将在第7章介绍)或它们对感兴趣应用的优化程度。预测可以写成函数形式。以下是1步超前预测的一般形式:

$$\begin{aligned} L_{n+1} = f(L_1, \ldots , L_n, Z_1, \ldots , Z_k, \boldsymbol{\beta }) +\epsilon _{n+1}, \end{aligned}\tag{5.27}$$

图5.3 随新观测值可用而更新的滚动预测示例。在时间步7处获得一个新观测值,此时使用大小为 $h=4$ 的滚动窗口产生一个更新后的预测。

对于某个函数 $f$,它生成预测 $\hat{L}_{n+1|n}$,并且依赖于历史数据 $L_{1},\ldots,L_{n}$ 和 $k$ 个解释变量 $Z_{1},\dots,Z_{k}$(选择这些变量的方法将在第6.2节中考虑)。例如,在电力需求预测中,这些解释变量可以是天气或电价。如果其中一个解释变量是预测值,例如温度预测,那么未来时间步 $t_{N+1},\ldots,t_{N+k}$ 的估计值可以包含在模型中(尽管请注意,它们仍然是在当前时间步之前生成的)。重要的是要注意,步长越大(k越大),预测的解释变量就越不准确,因此作为模型输入可能效果较差。这应在模型开发过程中进行测试。类似地,我们可以描述一个 h 步超前预测:

$$\begin{aligned} \hat{L}_{n+h|n} = f(L_1, \ldots , L_n, Z_1, \ldots , Z_k, \boldsymbol{\beta }), \end{aligned}\tag{5.28}$$

对于预测原点 n。由于 h 步超前预测可以通过重复应用1步超前预测产生,这些步骤中的许多输入可能包括 L 的预测值作为输入。

每个预测模型都有参数或超参数(第8.2.3节),这些参数决定了模型对输入的响应。式 (5.27) 中的参数用 $\beta$ 表示,必须经过适当的训练才能产生准确的预测(关于如何训练这些模型的介绍见第8.2节)。作为一个基本示例,考虑一个简单的线性回归 $ax+b$(第9.3节)。在这种情况下,参数是模型的系数 $\beta=(a,b)$,即趋势和截距。

有许多术语用于描述式(5.27)所表示的预测模型的输入、输出及其他元素:

• 函数$L_1, \ldots , L_n$和$Z_1, \ldots , Z_k$中的变量通常称为预测变量或自变量。

待估计/预测的变量通常称为因变量或预测变量。在本书中,这几乎总是电力需求。

• 当独立输入是因变量的历史版本(例如$L_1, \ldots , L_n$)时,这些通常称为自回归特征。

· $\epsilon _{n+1} = L_{n+1} - f(L_1, \ldots , L_n, Z_1, \ldots , Z_k, \boldsymbol{\beta })$是实际观测值与预测估计值之间的误差。由于没有预测是完美的,这些误差几乎从不为零。在时间序列预测中,误差也常被称为残差,尽管有时该术语用来表示在训练集上拟合模型后剩余的部分(见第8.1.3节)。这将是本书通常使用的惯例。

给定将在第9–11章中介绍的任何模型(为简单起见,假设超参数,第8.2.3节,已经选定),预测者的任务是找到模型的“最佳”版本(即函数$f())$的最优选择),这将需要优化定义该模型的参数$\beta,$。如第7章所述,“最佳”通常根据泛化能力来定义,通过最小化测试集上的误差来衡量(第8.1.3节)。如果预测用于特定应用,则必须仔细选择合适的误差度量以优化整体性能。

如第9–11章所示,存在多种预测模型,各有其优缺点,适用于不同的应用。一个好的预测模型应具有零均值误差,否则可以通过简单地平移当前预测模型来改进预测,例如$\hat{f}(L_{1},\dots,L_{n},Z_{1},\dots,Z_{k},\beta)=f(L_{1},\dots,L_{n},Z_{1},\dots,Z_{k},\beta)-b$,其中$\mathbb{E}(\epsilon)=b \neq 0$是误差的均值(均值的定义见第3.1节)。

以上主要描述了点预测背景下的预测,点预测只为预测范围内的每个时间步$t _ { n + 1 } , t _ { n + 2 } , \ldots , t _ { n + h }$提供一个单一估计值。这通常以某种中心性度量(如均值或中位数)表示。更具描述性的替代方案是概率预测,它为每个时间步提供多个值,并更好地描述未来值的不确定性。生成此类估计的方法将在第11章给出。概率预测通常采用以下三种形式之一:

  1. 分位数预测:这里估计未来值的几个分位数(更多细节见第3.2节)。如果使用两个分位数(一个高和一个低),则这两个值之间的区域通常称为预测区间或预报区间。10%和90%分位数是常见选择。图5.4右上角显示了一个示例。
  2. 密度预测:对于密度预测,每个时间步估计完整的连续分布(见第3.1节)。图5.4左下角说明了这一点。
图5.4不同类型预测的示例,包括三种不同类型的概率预测。蓝色十字是历史观测值,红色是从时间步t=31开始的预测。左上角是点预测。右上角是分位数预测,显示了0.1、0.5(中位数)和0.9分位数。左下角是密度预测,右下角是集合预测。
  1. 集合预测:分位数和密度预测仅估计预测范围内每个时间步$t _ { n + 1 } , t _ { n + 2 } , \ldots , t _ { n + h }$的分布。实际上,时间步通常是相互依赖的,较早时期的值会影响较晚时期的值。集合预测估计随机变量集$\hat{L}_{n+1}, \hat{L}_{n+2}, \ldots , \hat{L}_{n+h}$的完整联合多元分布的实现(更多细节见第3.3节)。图5.4右下角显示了30个集合的示例。

概率预测的一个缺点是额外的计算成本以及为了生成准确估计需要更多的训练数据。如果计算资源和数据充足,概率模型能够对未来值的不确定性提供更具描述性和信息量的估计。

这如何转化为短期负荷预测?

电路上的负荷通常通过电表定期测量,用于计费和其他目的。这包括家庭和企业中的智能电表。因此,能量和负荷是一个时间序列,负荷预测是时间序列预测的一个特定应用,但侧重于功率或能量值。由于能源使用的季节性,应用(如第15章所示)通常具有特定的预测期和预测原点。短期预测是本书的主要主题,涉及从一天到未来几周的预测期。类似地,预测原点通常是在每天的开始,尽管有许多例外。短期负荷预测的另一个特点是自变量。家庭和企业中的能源需求通常受天气变量驱动,因为天气影响供暖和通风。然而,一天中的时间也是一个重要的输入,通常以各种方式包含在内。概率预测对于估计负荷预测的不确定性非常有用,尤其是在低压或家庭层面,与全国负荷相比,需求波动相对较大。

5.3预测类型

如第5.2节简要介绍,预测可以根据它们是迭代还是直接、点预测还是各种形式的概率预测来分类。不同的类型和预测族适用于不同的情况、应用和场景。下面列出了一些最常见的预测分组及其特征。

•滚动预测频率:滚动预测按固定时间步长(可以是每个时间步长)更新,并在固定长度的预测期内产生估计。因此,对于负荷预测,这可以是日前预测,每半小时更新一次,利用记录到的最新观测值。或者,更新可能每天只有一次,例如在午夜。后者在技术上仍然是滚动预测,但更新频率低得多。更新更频繁的预测在非常短的时间范围内会给出更好的预测,因为它们利用了最新的信息。然而,缺点是它们需要基础设施来收集、传输和集成最新信息。

•点预测或概率预测:后续章节将介绍各种点预测和概率预测模型。如上一节所述,与点预测相比,概率预测在每个时间步提供多个值,以描述对未来值分布范围的估计。点

预测生成速度更快,因为需要学习的参数更少,并且需要的训练数据更少。此外,它们通常更容易集成到应用中,例如存储控制模型(见第15.1节),因为使用每个时间点的单个值比使用一系列值更容易。对于波动数据,点预测不能描述需求的不确定性,因此利用波动性较大需求的应用可能需要概率预测。概率方法的一个缺点是它们计算成本更高,并且需要更多的存储空间。在本书中,将考虑创建这两种预测的方法。

统计与机器学习方法:传统上,时间序列预测使用统计模型实现,如ARIMA和指数平滑(见第9.4节和第9.2节),这些模型易于实现、计算成本低且易于解释。最近,机器学习技术如神经网络和随机森林变得流行(见第10章)。尽管计算成本更高,但它们可以工程化未见特征并学习复杂的非线性关系。当数据中存在清晰、易于理解的关系(例如日/周季节性,或与天气等外部影响的明确联系)时,统计模型更可取。当数据量相对较小时,统计模型也更可取,因为模型假设用于替代直接从数据中学习关系(当然,如果模型假设错误,则模型将不准确)。机器学习方法通常擅长处理具有非线性和可能不明确关系的复杂数据(手工特征工程较少)。当跨大量时间序列学习或用于层次时间序列(见下文)时,机器学习方法也更可取。哪种模型更好的问题仍在持续讨论中。最流行的时间序列预测竞赛M-Competitions^4表明,在某些情况下,任何一种类型都更可取。最近,两种模型的组合显示出最佳准确性(关于模型组合的更多信息见第13.1节)。

层次预测:数据通常按层次结构排列。在电力系统中,如第2章所示,配电网是一个层次结构,电力在变电站降压后分配给消费者。需求从单个客户向上到变电站,一直到输电和国家级不断增加。层次时间序列预测的目标是确保预测在整个层次结构中是协调的,即层次结构某一层的预测应与下一层的预测协调。换句话说,预测的聚合应与聚合的预测相匹配。这将在第13.2节中更详细地讨论。

局部与全局预测:当预测多个时间序列时,有两种主要方法。你可以采用局部方法,在每个时间序列上训练一个模型,或者采用全局方法,对所有时间序列拟合同一个模型。当时间序列很多且为每个时间序列生成模型成本过高时,全局方法更可取。这在考虑智能电表预测时尤为重要。如果每个国家的家庭都要安装智能电表,这将是一个大量的时间序列,因此全局预测方法优于局部方法。这将在第13.4节中更详细地描述。

峰值预测:上述方法都是在预测时间序列整个时期(例如一天或一周的每半小时)的背景下编写的。实际上,在许多情况下,只有特定的特征才是重要的。预测模型最重要的目标之一是预测一段时间(通常是一天)内需求时间序列的峰值。峰值预测的优点是每个时期只需要估计一个值,尽管时间点可能也很重要。但应注意,峰值的历史实例较少,而且由于峰值是极值,它们可能比基荷需求更难准确预测。此外,对于波动性需求,如家庭智能电表数据(见第13.3节),峰值的时间可能非常不规则。

5.4符号

在5.1和5.2节中介绍了时间序列和时间序列预测的一些基本符号。这里重申并扩展了本书中使用的一些最重要的符号,这些符号在负荷预测的背景下使用:

实际监测的电力需求将被建模为一个时间序列$L _ { 1 } , L _ { 2 } , . . . ,$,由实数组成,其中$L _ { n }$表示第n个时间步的需求,$t _ { n } . ~ L _ { 1 }$表示数据集中最古老的数据点。除非另有说明,时间步长是均匀间隔的,即相邻时间步之间的时间差相同$t _ { n + 1 } - t _ { n } = \Delta t \forall n$。对于负荷数据,除非另有说明,我们报告相应区间内的平均负荷,单位为千瓦,记为kW。

预测被记为另一个时间序列$\hat { L } _ { n }$,帽子表示这是对时间步$t_n$真实需求的估计。

•符号$\hat { L } _ { N + k | N }$通常用于表示该预测是针对时间步$N + k$,并且是从预测原点N开始生成的,预测步长为k个时间步。然而,当预测原点明确时,这种符号可能有些繁琐,因此省略并简写为$\hat { L } _ { N + k }$。

解释性时间序列,例如温度,将由其他大写字母表示,例如$X _ { t }$。如果有多个解释变量,例如使用多个天气变量,则使用另一个索引来指示不同的变量。例如,给定M个解释变量,它们可以表示为$X _ { 1 , t } , X _ { 2 , t } \ldots , X _ { M , }$ t,表示它们在时间t的值。或者,也可以对每个单独的时间序列使用不同的字母。

5.5 问题

以下一些问题需要使用一些需求数据。附录D.4中列出了可能的资源列表。

  1. 列出你能想到的其他类型的时间序列。这可以是任何东西,不一定与能源需求相关。该序列的可能取值范围是多少?
  2. 下载一个需求时间序列。数据中是否有趋势或季节性?如果你有多个时间序列,比较它们,有些是否有不同类型的季节性?你能看到多少种不同的季节性?工作日需求与周末需求有差异吗?你还能在数据中看到其他模式吗?
  3. 从附录D.4中列出的数据中,取一些聚合的州级需求(GEFCOM 2014)和家庭级需求(例如低碳伦敦数据集)。绘制数据。比较一些特征:需求的平均大小是多少,需求峰值在何时?一天内有多个峰值吗?它们通常何时出现?每日峰值在不同天之间变化很大吗?
  4. 生成简单的滚动预测。考虑一个半小时一次的时间序列。通过使用前一天作为次日预测(即48个半小时的平移),创建次日预测。例如,预测星期二,使用前一个星期一的值。考虑实际值与预测值之间的差异(见7.1节)。现在,通过使用前一个半小时作为预测(即数据的半小时平移),为一天中的每个半小时创建一个基本的半小时前滚动预测。尝试使用GEFCOM 2014数据中的一些时间序列和一些家庭数据(例如来自低碳伦敦数据集)。误差比日前预测更小还是更大?GEFCOM和家庭数据之间的绝对误差如何比较?相对误差又如何?

除非在材料的致谢行中另有说明,本章中的图像或其他第三方材料均包含在本章的知识共享许可中。如果材料未包含在本章的知识共享许可中,且您的预期使用不被法定法规允许或超出允许使用范围,您将需要直接获得版权持有人的许可。