4

我需要编写一个程序,对不同日期范围(主要是 2007-2009 年)和频率(每周、每月、每年......)的倍数时间序列执行算术运算(+-*/)。

我想出了:

  • 找到频率最高的系列。然后用零填充其他系列,使它们具有相同数量的元素。然后执行操作。

如何以最有意义的方式呈现数据?

试图考虑所有的可能性

4

3 回答 3

2

如果零对于这个时间序列来说是一个有意义的值(例如摄氏温度),那么用零填充所有间隙可能不是一个好主意(即,之后您将无法区分真实值和存根值)。您可能想要插入您的时间序列。基本数据结构可以是数组/双链表。

于 2009-12-29T07:56:38.943 回答
1

我已经相当广泛地研究了这个问题。插值方法的危险在于您会偏向各种度量 - 特别是波动性 - 并引入虚假相关性。我发现傅里叶插值在一定程度上缓解了这种情况,但更好的方法是采用另一种方式:聚合更频繁的观察结果以匹配不太频繁的序列的周期性,然后比较它们。

于 2010-08-23T15:00:28.397 回答
1

您可以采取几种方法:

  • 使用最细粒度的时间序列数据(例如,秒)并在需要时插入/填充数据
  • 使用最粗粒度(例如年份)并在需要时汇总数据
  • 两个极端之间的任何中间步骤

您应该始终了解您的数据,因为:

  • 在插值的情况下,您必须选择最佳算法(线性或二次插值,样条,指数......)
  • 在总结的情况下,你必须选择一个合适的聚合函数(总和、最大值、平均值......)

一旦您对所有时间序列拥有相同的时间尺度,您就可以执行算术魔术,但请注意插值会生成额外信息,而汇总会删除可用信息。

于 2009-12-29T08:11:16.857 回答