建模不均匀间隔的时间序列

数据挖掘 神经网络 时间序列 回归
2021-09-18 01:55:25

我有一个连续变量,在一年的一段时间内不定期采样。有些日子每小时有一次以上的观察,而其他时期几天都没有。这使得检测时间序列中的模式变得特别困难,因为某些月份(例如 10 月)是高度采样的,而其他月份则不是。

在此处输入图像描述

我的问题是对这个时间序列建模的最佳方法是什么?

  • 我相信大多数时间序列分析技术(如 ARMA)需要一个固定的频率。我可以汇总数据,以获得恒定样本或选择非常详细的数据子集。使用这两个选项,我会丢失原始数据集中的一些信息,这可能会揭示不同的模式。
  • 我可以将整个数据集提供给模型,并期望它能够拾取模式,而不是循环分解系列。例如,我将小时、工作日和月份转换为分类变量,并尝试了多元回归,结果很好 (R2=0.71)

我的想法是,像 ANN 这样的机器学习技术也可以从不均匀的时间序列中挑选出这些模式,但我想知道是否有人尝试过,并且可以为我提供一些关于在神经网络中表示时间模式的最佳方式的建议。

3个回答

ARIMA、指数平滑等确实需要均匀分布的采样点。在你写的时候,你可以把你的数据分桶(比如分成几天),但是在你写的时候,你会丢失信息。此外,您最终可能会得到缺失值,因此您需要进行估算,因为 ARIMA 不太擅长处理缺失值。

正如您再次写的那样,另一种选择是将时间假人输入回归框架。我个人不太喜欢分类假人,因为这意味着相邻类别之间存在明显的界限。这通常不是很自然。所以我宁愿看具有不​​同周期性的周期性样条。这种方法的优点是可以处理不均匀的采样以及缺失值。

翻译要非常小心R2. 众所周知,样本内拟合作为样本外预测准确性的衡量标准具有误导性(参见此处)。我认为样本内拟合和样本外预测准确性之间的这种脱节也意味着样本内拟合与模型“理解”数据的程度之间没有联系,即使您的兴趣不在于预测,但仅限于建模本身。我的理念是,如果你不能很好地预测时间序列,那么你就没有从任何有意义的意义上理解它。

最后,不要过度建模。仅通过观察您的数据,很明显在 6 月、8 月的某一天和9/10 月发生了一些事情。我建议您首先找出这是什么东西并将其包含在您的模型中,例如,作为解释变量(如果您愿意,可以将其包含在 ARIMAX 中)。那里发生的事情显然不是季节性的。

由于您的问题和@Stephan Kolassa 的好回答特别讨论了 ARIMA 和神经网络,我想提一下,您可以立即提供该forecast软件包R- 它具有nnetar训练具有 1 个隐藏层的简单前馈神经网络和滞后输入。

也许您可以尝试以下方式:

  • 为您的每个观察结果提取许多特征,例如星期几、一个月中的某天、工作日/周末等(在您的问题中仅提到日期时间作为潜在依赖项,所以这就是我包含此内容的原因 - 但您可以包含所有可能的事情相信可能会影响您感兴趣的变量)。
  • 您感兴趣的变量的滞后值以及日期时间信息(如星期几等)将是您的输入。例如,您可以将日期时间变量作为外部回归量 ( xreg) 包含在内。

并根据这些输入预测您感兴趣的 var 的未来值。此外,您还可以考虑在要预测的值的每个给定日期包括观察到的平均值和方差/偏差。这意味着您必须首先使用 ARIMA 预测您的预期均值和方差,然后将其作为附加输入添加到上述方法中。

hth。

不均匀间隔/不规则时间序列与(常规)时间序列分析完全不同。事实上,据我所知,它没有完美的统计模型。R 中有一些包,比如 ust 等等。