
在一个数据充斥的世界里,有一种数据与众不同:时间序列。与那些顺序无关的静态观测数据集不同,在时间序列数据中,序列即是意义。从股票市场的每日波动到病人生命体征的每小时读数,时间顺序蕴含着因果关系的故事。假设数据点可互换的标准统计技术,从根本上无法处理这种“时间之矢”,因此需要一套专门的原理和方法。本文为这一独特领域提供了全面的指南。第一部分“原理与机制”将从零开始构建您的理解,探讨平稳性和自相关的基本概念,并介绍从ARIMA到深度学习等旨在捕捉时间动态的经典和现代模型。随后,“应用与跨学科联系”部分将展示这些工具的卓越效用,演示它们如何用于评估政策、探究自然系统的运作方式以及驱动现代人工智能。我们首先考察那些使时间序列分析自成一派的核心原理。
在您将遇到的大多数数据中,观测值的顺序只是一种不便。如果您有一份人们身高和体重的列表,打乱这个列表并不要紧;身高和体重之间的关系保持不变。从统计意义上说,这些数据点是可交换的。您可以交换它们的位置而不会丢失信息。
但时间序列数据是不同的。它就像一个故事,或一部电影。意义蕴含在序列之中。如果您把一部电影的胶片帧随机打乱,您将得到毫无意义的噪音。情节、角色发展、悬念——所有这一切都将消失。时间序列数据具有类似的属性。顺序不仅仅是一个索引;它是因果关系之矢,承载着最关键的信息。打乱时间序列就是破坏它。这个简单而深刻的真理是后续一切的基础,也是时间序列建模需要其自己独特的工具集并对时间顺序怀有深深敬意的原因。
在我们能够对时间流建模之前,我们必须诚实地面对我们如何记录它。想象一下医院里的一位病人。护士在下午2:10开始静脉输液。这是事件时间——事件在物理现实中发生的时刻。护士因为忙碌,可能要到下午3:05才到电脑工作站记录此事。数据库可能在下午3:07提交这条记录。这是记录时间,即信息进入数字世界的时间戳。数据库中存储的事实是,输液从下午2:10持续到比如说下午2:40。这个区间是有效时间——记录的事实被认为在现实世界中为真的时期。
现在,假设护士后来意识到输液实际上是在下午2:45结束的,并输入了更正。一个新版本的事实被保存下来,它有新的记录时间,但有效时间得到了更新。一个稳健的系统会保留两个版本,使我们不仅能问“我们相信发生了什么?”,还能问“我们过去相信什么,以及我们何时相信它?”这种对现实(事件时间)、我们对现实的认知(有效时间)以及我们记录历史(记录时间)的仔细区分,是构建诚实的世界模型的第一步。
是什么让时间序列成为一个序列?是现在在某种程度上是过去的后果这一事实。序列今天的价值并非独立于昨天的价值随机抽取的。这种对过去的依赖性被称为自相关——字面上讲,就是数据在时间上与自身相关。这是昨日价值的幽灵在今日萦绕。
让我们考虑一个最简单的时间序列:随机游走。想象一个人每秒钟随机向前或向后迈一步。他们在任何时间 的位置,我们称之为 ,就是他们在前一秒的位置 加上一个新的随机步长 。所以,。这是一个“醉汉走路”的数学模型。他们现在在哪里完全取决于他们一步之前在哪里,再加上一点新的随机性。
这个模型虽然简单,但有一个奇怪的特性。步行者可以任意远离他们的起点。他们位置的方差——衡量其可能位置分布范围的指标——随着时间的推移不断增长。这个过程永远不会稳定下来。我们称这样的过程为非平稳的。
现在来看一个优美的见解。让我们看一个稍微更通用的模型,一阶自回归过程,或称AR(1)。它定义为 ,其中 是一个系数,告诉我们昨天的值有多少延续到了今天。您可以立即看出,随机游走只是AR(1)过程中 的一个特例。
这个系数 是关键。如果 ,那么过去的影响会逐渐消失。很久以前的一次冲击随着时间的推移变得越来越不重要。在这种情况下,过程是弱平稳的:它的均值是恒定的,方差也是恒定的。它会波动,但总是倾向于回到一个中心值。过去的幽灵是一个逐渐消逝的回声。但是当 时,幽灵永不消逝。每一个随机的步长都被永远记住,它们的影响会累积起来——这就是非平稳性的根源。
那么,当我们面对一个非平稳序列时,比如一部老化智能手机不断下降的电池百分比,我们该怎么办?电池电量本身有下降的趋势。但如果我们不看电量水平,而是看每天的变化量,我们可能会发现这个每日损耗序列是平稳的。这种转换,,被称为差分。它是我们通过关注变化而非水平来驯服非平稳过程的主要工具。
在实践中,我们使用统计检验来指导这一决策。一个关键问题是,一个趋势是可预测的确定性直线,还是不可预测的随机性随机游走。像KPSS检验这样的测试可以帮助我们区分一个围绕趋势平稳的序列(我们可以直接建模)和一个具有“单位根”(像我们的 随机游走)且需要差分的序列。
一旦我们有了一个平稳序列,我们就可以尝试建立一个模型来捕捉其动态。由 George Box 和 Gwilym Jenkins 开创的经典方法,就像用一些标准零件组装一个发条装置。两个主要部件是:
自回归 (AR): 这部分表示,序列今天的值是其过去值的加权平均。对于AR(p)模型,它依赖于过去 个时间步。这是对过去状态的“记忆”。
移动平均 (MA): 这部分表示,序列今天的值是过去随机冲击或“意外”()的加权平均。对于MA(q)模型,它依赖于过去 次冲击。这是对过去事件的“记忆”。
将这些结合起来,我们得到ARMA模型。当我们引入差分来处理非平稳性时,我们得到了著名的ARIMA(自回归积分移动平均)模型。一个单变量ARIMA模型可以用来预测单一序列,比如一个人的每日步数,从而为健康干预提供及时的反馈。
但是我们如何选择正确的AR和MA项数( 和 )呢?我们需要诊断工具来审视序列内部的记忆结构。两个主要工具是自相关函数 (ACF) 和偏自相关函数 (PACF)。滞后 阶的PACF告诉我们 和 之间的直接相关性,在移除了所有中间点()的线性影响之后。这些图中相关性“截尾”至零或“拖尾”逐渐减小的特征模式,帮助我们识别一个合理的模型结构。例如,如果我们分析大气中CO2的时间序列,看到PACF图在滞后12处有一个单独的大尖峰,而在别处没有,这是一个清晰的年度季节性信号。它告诉我们,这个月的CO2水平与12个月前的水平直接相关,表明季节性自回归模型是合适的。
当然,世界不是单变量的。睡眠时长会影响第二天的情绪;一只股票价格的变化会影响另一只。为了对这些相互依赖关系进行建模,我们转向多变量框架。AR模型最直接的扩展是向量自回归 (VAR)模型。在VAR模型中,系统中的每个变量都被建模为系统中所有变量过去值的函数。它正是为了捕捉这些“跨变量”效应而构建的,使我们能够提出诸如“昨晚的睡眠是否有助于预测今天下午的情绪?”这样的问题。
经典模型假设我们直接观测的是感兴趣的过程。但有时,我们测量到的仅仅是一个更深层次、未被观测到的现实的带有噪声的影子。这就引出了状态空间模型的思想。
想象一下,我们想追踪一个人的潜在生理状态。我们无法直接测量这个“健康状态”,但我们可以测量它的表现形式:心率、体温等。状态空间模型假设存在一个潜在(隐藏)状态,该状态根据其自身的动态(状态方程)随时间演化。然后,它假设一个观测方程,描述我们带有噪声的测量值是如何从这个隐藏状态生成的。这个框架的强大之处在于它能够融合来自多个传感器的信息,并以一种有原则的方式处理缺失数据。如果时间 的体温读数缺失,我们仍然可以使用心率测量值来更新我们对健康状态的信念。一个名为卡尔曼滤波器的强大算法作为该框架的引擎,随着新数据的到来,递归地更新我们对隐藏状态的估计。
模型的选择也在很大程度上取决于我们数据的结构。像ARIMA和VAR这样的经典时间序列模型通常是为单个、长序列、等间隔的时间序列设计的。但是,如果我们有来自一项临床试验的数据,其中有数百名患者,每位患者仅在不规则的时间间隔内测量了几次,该怎么办?在这种情况下,纵向数据分析方法,如线性混合效应 (LME) 模型,通常更为合适。LME模型不是直接对一个时间步到下一个时间步的时间依赖性进行建模( 依赖于 ),而是假设单个受试者的重复测量值是相关的,因为它们共享一个共同的、受试者特有的“随机效应”。例如,每个人可能有自己的基线生物标志物水平和自己的个人变化率。在给定这些个体效应的情况下,观测值被认为是条件独立的。这将焦点从对时间有序的演化建模转移到对群体平均和个体异质性建模。
最近,深度学习改变了这一领域。对于多步预测——不仅仅是预测下一步,而是整个未来的轨迹——出现了两种主要策略。经典策略是自回归递归:训练一个模型来预测一步,然后在预测时,将其自身的输出作为输入反馈,以“展开”所需时间范围内的预测。现代的替代方案是序列到序列 (seq2seq) 模型,它学习将整个输入历史直接映射到整个输出未来,一次完成。一个关键的权衡是,递归方法可能会遭受复合误差——第一个预测步骤中的一个小错误可能会影响第二个,从而更严重地影响第三个。直接的seq2seq模型避免了这个问题。此外,seq2seq预测可以高度并行地进行,而递归展开本质上是串行的,速度较慢。
在所有预测性建模中,有一个不可饶恕的原罪:使用未来的信息来预测过去。这就是数据泄露。在时间之矢就是一切的时间序列预测中,这个罪过特别容易犯,并且会带来灾难性的后果。最常见的犯罪方式是通过不当的模型验证。
你不能在时间序列上使用标准的-折交叉验证。随机打乱数据并创建训练集和测试集,意味着你的模型不可避免地会用在时间上发生于测试点之后的数据点进行训练。这会给出一个极其乐观且完全错误的关于模型在真实世界中表现的估计,因为在真实世界中,未来是,根据定义,未知的。
正确的程序必须模拟真实世界的预测过程。这被称为滚动原点评估或前向验证。这个过程简单直观:
这个严谨的程序确保在每一步,模型都只使用在那个时间点本应可用的信息。
即使有这个程序,魔鬼仍在细节中。泄露可能以微妙的方式发生。考虑通过将数据缩放到零均值和单位方差来预处理你的数据。如果你在整个数据集(训练集和测试集)上计算那个均值和方差,你就已经将关于测试集分布的信息泄露到了你的训练过程中。所有的预处理统计数据都必须仅从当前的训练折中学习。
同样,如果你构建了一个像30天滚动平均这样的特征,你的测试集中的第一个数据点将依赖于你训练集的最后29个点。这在训练集和测试集边界上造成了强烈的依赖关系,可能使你的模型看起来比实际更好。一个稳健的解决方案是在你的训练集和测试集之间引入一个禁运期或一个间隔——一小段时间的数据既不用于训练也不用于测试。这确保了训练集和测试集更加独立 [@problem-id:4128258]。
最终,时间序列建模不仅仅是算法的集合。它是一门要求对因果关系有严谨和原则性尊重的学科。它教导我们,要预测未来,我们必须首先从过去学习,并且必须始终如一地诚实,不偷看未来。
在我们迄今为止的旅程中,我们探索了时间序列建模的原理和机制,建立了一个数学工具的工作坊。我们学会了讨论趋势、季节性以及我们称之为自相关的过去的幽灵般的回响。但一个工具的好坏取决于它能解决的问题。现在,我们离开整洁的理论世界,进入现实的旷野,看看这些工具的实际应用。你将会对其效用的广度感到惊讶。时间序列分析不仅仅是统计学的一个小众领域;它是一种理解我们世界动态的通用镜头,从基因的微观舞蹈到公共卫生的宏大画卷,从我们星球的沉默过程到我们自己脑海中的 fleeting 思想。
时间序列建模最直观、最有影响力的应用或许在于扮演侦探的角色。一项新法律通过了,一种新药引入了,一个新教育项目启动了。随之而来的必然问题是:它起作用了吗? 回答这个问题远比看起来要棘手。世界不会为我们的实验而静止。我们如何才能将我们干预措施的效果与所有其他同时发生的变化分离开来?
想象一个沿海地区对船舶燃料的硫含量实施了严格的上限,希望减少空气污染,从而减少与哮喘相关的急诊室就诊次数。政策实施后,我们看到就诊次数下降。成功了吗?也许。但如果由于更好的药物,哮喘就诊次数本已呈下降趋势呢?如果政策是在秋季颁布的,而下降只是夏季过敏季节的正常结束呢?
简单地比较就诊次数的平均值前后对比是一种笨拙的工具,很容易被这些混杂的趋势和季节所迷惑。这正是中断时间序列 (ITS) 分析的优雅之处。ITS不仅仅比较两个平均值,而是对政策变化前的整个数据历史进行建模。它学习系统的“节奏”——其潜在的趋势和季节性心跳。有了这些知识,它就能投射出一个反事实,一条“幽灵时间线”,展示如果政策从未实施,可能会发生什么。干预的真正效果随后就显露为现实世界数据与这条幽灵时间线的偏离。哮喘就诊次数的下降是否比预期的更急剧?就诊次数的长期趋势斜率是否发生了变化?ITS使我们能够提出这些更复杂的问题。
侦探故事可能变得更加复杂。假设一家医院引入了一项新的抗菌药物管理计划,以对抗耐药性感染。他们跟踪了几个月的感染率,在计划开始后,感染率开始下降。但如果就在两个月前,一场关于手卫生的全国性公众意识运动启动了呢?现在我们有两个嫌疑人。是我们的医院计划还是全国运动减少了感染?
在这里,时间序列侦探采用了一种更聪明的策略:找到一个对照组。通过将我们医院的时间序列与一个没有实施新计划的类似医院的时间序列进行比较,我们通常可以分离出我们特定干预措施的效果。两家医院都受到了全国运动的影响,因此其效果可以被考虑进去,让我们能更好地估计我们管理计划的独特影响。这种方法,通常被称为比较中断时间序列,是在混乱、不受控制的真实世界中加强因果主张的有力方式。
这种思维方式超越了一次性事件。考虑一个旨在帮助人们在几年内保持减肥成果的健康计划。成功不仅仅在于最初的体重下降;它在于持续的改变。我们可以使用时间序列模型来跟踪客观数据——比如来自智能手机的每日步数或每季度的血糖测量值——以了解行为的长期动态。通过分析数据,我们可以超越简单的“是/否”判断,看到整个故事:最初的采纳、逐渐的偏离,以及行为是得以维持还是复发的关键点。这为设计不仅能带来暂时改变,更能培养持久习惯的计划提供了宝贵的反馈。
帮助我们评估社会政策的相同原则也让我们能够探究自然系统的基本运作方式。趋势、季节性和对过去的依赖这些核心思想,是一种通用的变化语法。
让我们从太空俯瞰我们的星球。卫星提供了大量数据,使我们能够创建从极地冰盖范围到森林砍伐的各种时间序列。假设我们想监测一片森林的健康状况。我们可能会观察其“绿度”如何随季节和年份变化。但这里有一个奇妙的复杂情况。森林的表观颜色取决于太阳的角度和卫星的观测角度,就像一块天鹅绒根据你观察它的方式而改变其外观一样。这种效应被称为双向反射分布函数 (BRDF)。如果卫星一天早上拍照,另一天下午拍照,仅几何形状的变化就可能改变测量的反射率,即使森林本身一点也没有变。
为了创建一个科学上有效力的森林健康时间序列,我们必须首先解决另一个时间序列问题:我们必须建模并去除由变化的太阳-传感器几何形状引起的表观变化。这个过程称为角度归一化,确保我们在时间上进行的是“同类”比较。只有这样,我们才能开始自信地为森林的真实生物变化建模。这是一个优美的教训:有时,为了理解一个系统,你必须首先理解你用来观察它的仪器。
现在,让我们把镜头转向内部,转向我们所知道的最复杂的系统:人脑。神经科学家使用功能性磁共振成像 (fMRI) 来记录不同大脑区域随时间的活动。他们感兴趣的是这些区域如何相互“交谈”,他们通过其时间序列的相关性来衡量这一点。很长一段时间里,人们假设这种“功能连接性”在静息态扫描期间是静态的。但如果大脑,即使在休息时,也是一个深刻的非平稳系统呢?如果其内部状态和通信模式在不断变化呢?
为了捕捉这一点,研究人员使用了滑动窗口分析。他们不是在十分钟的扫描中计算一个相关值,而是在一个移动的窗口(比如30秒)上计算它。这就产生了一个新的时间序列——一个变化的相關性的时间序列!这使我们能够看到大脑的网络是如何时时刻刻地重新配置自己的。但这种方法带来了一个深刻的权衡,一个偏差-方差困境的经典例子。短窗口可以跟踪快速变化(低偏差),但基于的数据很少,使得每次估计都很嘈杂(高方差)。长窗口给出一个更稳定、噪音更少的估计(低方差),但会模糊快速的变化,错过动态(高偏差)。选择窗口宽度不仅仅是一个技术细节;它是关于我们希望在哪个时间尺度上观察现实的选择。
从观察一个系统的行为,我们能否推断出其隐藏的线路?这是生物学中的一个核心问题。我们可以测量一个细胞中数千个基因的表达水平随时间的变化,从而创建一个庞大的多变量时间序列。但我们如何找出哪些基因调控哪些其他基因呢?这就是推断基因调控网络的目标。在这里,一个来自计量经济学的概念,格兰杰因果关系,提供了一个强大的框架。
其直觉简单而优美。我们说基因A“格兰杰-导致”基因B,如果基因A的过去表达值有助于我们预测基因B的未来表达值,即使在我们已经使用了基因B的过去以及所有其他测量基因进行预测之后。这是一个独特预测信息的检验。如果知道A的历史能让你在预测B的未来时占据优势,这表明可能存在一个调控联系,。至关重要的是,这必须在一个同时考虑所有基因的多变量模型(如向量自回归,或VAR)中进行。一个简单的成对相关性会产生误导;A和B可能都受第三个基因C的控制,而成对模型会错误地推断它们之间存在直接联系。通过使用一个完整的多变量模型,我们可以开始解开这些复杂的影响网络,并绘制出细胞内部控制电路的地图。
我们的旅程在人工智能的现代纪元达到高潮,在这里,时间序列分析的经典原理正以强大的新形式重生。
考虑预测任务。一个现代深度学习模型,比如一个Transformer,可能看起来像一个深不可测的黑箱。但如果你深入其内部,你会发现熟悉的概念。在一个名为多头自注意力的卓越技术中,模型可以被设计成具有不同的“头”,这些头被鼓励成为专家。一个头,配备了三角函数的查询和键向量,可能成为寻找数据中周期性模式的专家,比如电力需求的日循环。另一个头,被设计为更重视近期数据点,可能专门用于跟踪当前趋势。然后,整个模型学会权衡这些不同专家的“意见”,以做出最终的、更稳健的预测。这是将时间序列分解为趋势和季节性的经典方法与现代神经网络巨大能力和灵活性的愉快融合。
最后,让我们考虑一个绝妙的元问题。我们已经建立了一个出色的人工智能模型来预测销售额,并且它正在生产环境中运行。但世界在变。消费者习惯改变了,一个新的竞争对手进入市场,我们基于过去数据训练的模型慢慢变得“陈旧”。它的预测开始偏离现实。我们如何建立一个警报系统,告诉我们模型何时需要重新训练?
我们可以将模型的性能本身视为一个时间序列!使用信息论中的概念,如Kullback-Leibler (KL) 散度,我们可以测量旧模型预测的概率分布与新更新模型预测的概率分布之间的“距离”。当我们定期重新训练模型时,我们可以生成这个KL散度的时间序列。如果散度突然跳升或呈上升趋势,这是一个明确的信号,表明底层数据生成过程发生了显著变化。这是我们人工智能的健康图表,一种量化监测模型漂移并决定何时进行更新的方法。
从公共政策到行星科学,从神经科学到人工智能,时间的印记无处不在。通过学习对其节奏、趋势和突然转变进行建模,我们获得了一个极其强大和统一的视角。时间序列分析给了我们一种语言来描述一个运动中世界的过程,以及一套工具来阅读——甚至可能书写——其故事的下一章。