4

我想预测在服务时间内进入商店的顾客数量。我有每小时的数据

  • 星期一到星期五
  • 8:00 至 18:00

因此,我假设我的时间序列实际上是有规律的,但在某种意义上是非典型的,因为我每天有10 小时每周有 5 天

我可以通过将非服务时间设置为零来使用这个常规的 24/7 时间序列进行建模,但我发现这效率低下而且也不正确,因为时间并没有丢失。相反,它们不存在。

使用旧的ts-framework 我能够明确指定

myTS <- ts(x, frequency = 10)

但是,在新的tsibble/fable框架内这是不可能的。它检测每小时数据,预计每天 24 小时,而不是 10 小时。每个后续功能都让我想起了隐含的时间间隔。手动覆盖interval-Attribute 有效:

> attr(ts, "interval") <- new_interval(hour = 10)
> has_gaps(ts)
# A tibble: 1 x 1
.gaps
<lgl>
1 FALSE

但对建模没有影响:

model(ts,
      snaive = SNAIVE(customers ~ lag("week")))

我仍然收到相同的错误消息:

snaive [1] 遇到 1 个错误。数据包含隐含的时间间隔。如果需要,您应该检查您的数据并将隐式间隙转换为显式缺失值tsibble::fill_gaps()

任何帮助,将不胜感激。

4

1 回答 1

2

这个问题其实对应这个gh issue。据我所知,没有允许用户构建自定义计划的 R 包,例如指定某些日内和日内。有几个包提供了一些特定的日历(如工作日期),但没有一个包提供了设置内天的解决方案。当这样的包可用时, Tsibble 将获得calendar自定义日历以尊重结构缺失的论据。但目前不支持。

正如你所说,它是每小时数据。因此,数据间隔应该是 1 小时,而不是 10 小时。但是,ts() frequency是季节性周期,每天 10 小时,用于建模。

于 2020-03-10T04:27:41.937 回答