【问题标题】:Forecast a trendline of a periodic time series预测周期性时间序列的趋势线
【发布时间】:2012-07-01 09:02:05
【问题描述】:

我在 Excel 电子表格中有一些数据,它代表了一组采样的日期时间。日期呈线性增长,但存在一些周期性间隙(导致日期数据不连续)。

请参阅附图,因为它显示了数据的周期性。请注意,变化率在出现不连续性的地方显示出明显的尖峰。

数据是 DateTimes 的 Excel 电子表格中的单列。我想预测这个重复序列到未来,以便估计未来的不连续性。

最终我想用 C# 编写代码,但如果有人知道可以在 Excel 或 C#/C 中执行此类预测的算法,那就太好了!

我考虑过自动相关,但不知道如何在 Excel 中进行测试。

【问题讨论】:

  • a) 您需要计算自变量的变化率,即时间,而不是测量值 [即使它们绘制在 x 轴上,它仍然是因变量,即 f( x)] + b) 总是存在 3 个级别的变化率(例如,每天增加 0,每周增加 0.7,每月增加 2.7)或最普遍的模式是什么在这里?
  • 变化率图是从一个样本到下一个样本的时间值之差。最普遍的模式如下。数据是期货价格的时间戳。当市场关闭时,时间戳在一夜之间(每周 4 晚)有一个小的不连续性。时间戳在周末或交易假期有较大的不连续性。对于某些仪器,时间戳是定期间隔的,但对于其他仪器来说,时间戳更不规则,这使问题更加复杂。欢迎你的想法:)
  • 如果数据在每个日历日的基础上完全是线性的,那么图表就不是数据的公平表示 - 你为什么使用它???
  • 抱歉,不知道你的意思
  • 如果你要填补空白,数据系列会是一条没有跳跃的直线吗??

标签: c# excel forecasting


【解决方案1】:

解释我的 cmets 关于正确的数据表示:

如果数据可以用线性函数表示,即:

f(date) = start_value + daily_increase * (date - fist_date)

然后你可以做一个简单的线性回归 - 在我的 excel 示例中使用这个LINEST function(在 2 个单元格中同时输入一个数组公式,使用 Ctrl+Shift+Enter):

=LINEST(C2:C31;A2:A31)

结果 (6, -220436) 是线性回归公式的线性和常数因子:
=> f(date) = 6 * date - 220436

【讨论】:

  • 好的 - 我明白你所说的数据表示是什么意思。这个问题应该更清楚。我呈现的图表中的 X、Y 值是 X=样本数(线性增加)和 Y=DateTime。我试图估计的是未来样本数的日期时间。例如。我的测试数据中有样本 1-120。未知样本 140 的估计日期是什么时候?
  • 编辑:没关系,我明白了 - 感谢您的输入,尤其是关于 Excel Linest 函数以及如何使用它:)
  • 只是为了明确我对 X 和 Y 值的选择——如果价格开始下跌,时间不会倒流
【解决方案2】:

如果有人需要循环数据生成器,请使用此算法(excel 公式):

=baseline_value
 + INT([@Step]/repeat_c1) * increase_c1
 + INT([@Step]/repeat_c2) * increase_c2
 + INT([@Step]/repeat_c3) * increase_c3
 ...

为了计算增量,需要从最短到最长对周期进行排序 - 请参阅此周期规范的插图:

  1. 每一步,增加前一个值2小时
  2. 对于每 2 步,将之前的值增加 22 小时而不是 2(即增加 20)
  3. 每 8 步,增加 70 小时(增加 48 小时)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-05
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2019-10-31
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多