时间序列数据

处理时间序列数据

时间序列数据是在连续时间点上收集或记录的一系列数据点。时间序列数据非常常见,尤其是在汽车领域(其中传感器数据本身就是时间序列)、科学研究领域(例如海洋测量和气候分析等数据);以及金融领域(股票价格及其他各项指标)。即使时间戳对于分析并非至关重要,这些数据通常也需要采用时间序列分析方法,所以时间序列数据是用户日常工作的重要内容之一。

处理时间序列数据可能很有难度,但对于任何数据分析人员来说,这都是一项至关重要的技能。本指南提供常见问题的解答,并提供有价值的资源来帮助您成功处理下一个时间序列工程。

六十五年时间序列数据的二维图。

在 MATLAB 中可视化的时间序列数据。时间序列是一段时间内按顺序记录的数据点的集合。(请参阅代码。)

时间序列数据的关键特征是什么?

时间序列数据的三个线图,其中部分绘图突出显示以指示分类的重要性。

为了理解时间序列数据分类,您可以在 MATLAB 中创建 Grad-CAM 和其他可视化。(请参阅代码。)

时间序列数据包含一个时序分量,也就是说涉及时间。关键的是,它是一个系列,其中的数据点是随着时间的推移按顺序收集或记录下来的。这经常意味着固定间隔,例如每分钟、每秒或每天,但实际上这种规律性并非是绝对必要的;重要的是要有时间戳。如果您的数据集包含时间戳,并且需要针对时间进行排序或分析,则您可能有时间序列数据。时间序列数据广泛用于天气预报或金融分析等领域。在这些领域中,数据点随时间变化的顺序对于获取深入信息或预测非常重要。

时间序列数据的特征是其中一列为时间,并且通常是有序的。它表示针对特定时间值的测量值,时间值的范围可以从若干毫秒到若干天。同一系列中的数据可以有不同采样率。时间序列数据不仅仅指在给定时间上的特定数据点,还可以表示一段时间内的测量值,例如每日或每周汇总。

如何分析时间序列数据?

MATLAB® 有许多内置的 App 和函数,可用于预处理时间序列数据。选择的具体方法取决于您对数据和清洗过程的熟悉程度。如果您以前不了解数据集,最好从交互式 App(如数据清洗器)开始,因为它提供直观的界面来进行初步探查和清洗。对于同步和重采样等特定目的,实时编辑器任务可能会有所帮助。如果您喜欢编码并且熟悉函数,可以直接使用命令行函数。

信号在时域和时频域中的四种可视化。

MATLAB 中的信号分析器。(请参阅文档。)

处理时间序列数据的两个关键部分是同步和重采样。同步包括根据时间戳对齐数据点,确保数据集具有可比性且分析准确。重采样对于调整数据点的频率以满足特定分析目标至关重要。MATLAB 提供 synchronizeretime 命令来帮助组合在特定时间点上的数据集。如果您不确定是否应使用这些函数,实时编辑器任务提供一种交互式方法来应用它们并探索不同选项。

时间序列分析可采用许多方法,但两种主要方法是趋势分析和季节性分析:

  • 趋势分析涉及识别和分析数据的长期变化,以了解总体方向,这有助于作出明智的预测或决策。
  • 季节性分析包括对特定周期(如年、月或日周期)内重复出现的模式进行检测和建模。就传感器而言,这些周期甚至可以进一步细分:汽车行业的工程师需要考虑纳秒级或微秒级周期,这对准确预测至关重要。

MATLAB 提供高效执行这些方法的工具和函数,包括用于数据清洗、可视化和高级建模的内置函数。timetable 表类型对于组织和管理时间序列数据特别有用,而信号分析器则提供功能强大的平台,用于以交互方式可视化和分析信号。

工程师在时间序列数据方面面临哪些挑战?

工程师经常会遇到一些挑战,例如处理由于传感器数据丢失产生的数据缺失、处理离群值以及管理数据中的噪声。时间序列数据通常需要清洗和准备,然后才能有效地用于建模。

一个主要挑战是确保时间序列数据得到适当排序和排列。即使数据不需要大量的处理,也必须对其进行逻辑结构化,以用于分析或机器学习模型。理解季节性和趋势是至关重要的,因为这些模式有时是人为现象,而不是真正的特征。如果不解决,这些人为现象会误导模型,特别是在深度学习中,它们可能会让错误的模式持续存在。此外,在进行复杂的分析之前,工程师需要深入理解时间序列的基本原理,例如季节性和平稳性。主要从事机器学习工作但没有工程背景的人员有时缺乏这种基础知识。

MATLAB 用户面临的另一个挑战是容易将“时间序列”这一概念与 MATLAB timeseries 对象混淆。用户经常搜索“时间序列”,但可能不知道 timetable 功能。该功能为处理基于时间的数据提供了更高级的特性。使用 MATLAB 中的 timetable,您可以创建可视化、准备数据以及执行其他任务。它支持同步和其他高级操作,这些操作对于有效的时间序列数据管理至关重要。

演示多速率数据同步到一个数据集的动画。时间对齐,数据重采样。

展望将来,MATLAB 开发的重点将是 timetable 功能;传统的 timeseries 对象现在处于维护模式。这种方法将增强特征和功能,更好地支持 MATLAB 用户处理时间序列数据。

下一步工程师何去何从?

截图:具有时间戳的数据的两个线图和一系列后续步骤的按钮。

在 MATLAB 中使用数据清洗器预处理和组织时间序列数据。(请参阅文档。)

MATLAB 提供几个用于清洗时间序列数据的工具和函数。如果你更喜欢编写代码,那么可以使用命令行函数,或者利用低代码功能,比如数据清理器或实时编辑器任务。这些工具可帮助您同步数据、使用线性插值等方法填充缺失值,以及完成更多操作。

后续步骤取决于您的应用,但这里有四种路径可供探索:

  • 示例:查看与信号处理和频域相关的示例。这些示例向您展示可能有用的更复杂的方法。
  • 信号处理入门之旅:对于那些不熟悉这些概念但需要处理信号数据的人员来说,信号处理入门之旅是很好的起点。
  • 深度学习和机器学习示例:深入研究深度学习和机器学习领域中专门针对时间序列预测的示例。这些示例重点展示相关的方法和应用。
  • 实时应用:对实时处理或模型更新感兴趣的人员可以考虑探索流式应用。不过,在进入实时应用之前,必须理解基本概念。

另请参阅: 时间序列分析