【问题标题】:Why is this xts frequency always 1?为什么这个xts频率总是1?
【发布时间】:2016-03-31 00:37:18
【问题描述】:

我正在创建一个每周(7 天)频率的 xts 对象以用于预测。但是,即使在 xts 调用中使用 frequency=7 参数,生成的 xts 对象的频率也是 1。

这是一个随机数据的例子:

> values <- rnorm(364, 10)
> days <- seq.Date(from=as.Date("2014-01-01"), to=as.Date("2014-12-30"), by='days')
> x <- xts(values, order.by=days, frequency=7)
> frequency(x)
[1] 1

我也试过,在使用上面的代码后,frequency(x) &lt;- 7。但是,这会将x 的类更改为只有zooregzoo,从而丢失了xts 类并弄乱了时间戳格式。

xts 是否会根据以某种方式分析数据自动选择频率?如果是这样,您如何覆盖它以设置用于预测目的的特定频率(在这种情况下,将季节性时间序列从预测包传递给 ets)?

我知道 xts 可能不允许没有意义的频率,但是带有每日时间戳的频率 7 似乎很合乎逻辑。

【问题讨论】:

  • 谢谢迪娜。虽然连续时间之间的差异为 1 是有道理的,但也许我应该问这个:由于我感兴趣的数据具有周期为 7 的季节性模式,我如何将此信息印入 xts 以传递给预测函数(主要看ets)?可以使用 ts 对象(使用 frequency=7),但 xts 会很好,因为它有额外的便利功能。实际上,我希望模仿 this page 上的预测,但使用 xts 代替 ts。
  • xtsts 转换在 xts 中没有得到很好的支持(即许多事情没有实现或不正确)。它在我的待办事项清单上。
  • 谢谢约书亚!事实上,xts 仍然非常有用。传递给预测函数时的快速ts(xts.object, frequency=7) 调用为我解决了频率问题。

标签: r time-series xts


【解决方案1】:

连续日期类日期的频率始终为 1,因为连续日期相隔 1。使用 ts 或 zooreg 得到频率为 7:

tt <- ts(values, frequency = 7)

library(zoo)
zr <- as.zooreg(tt)
# or
zr <- zooreg(values, frequency = 7)

这些将创建一个系列,其时间为 1、1+1/7、1+2/7、...

如果我们有一些 zr 的索引值

zrdates <- index(zr)[5:12]

我们可以像这样从zrdates 恢复日期:

days[match(zrdates, index(zr))]

正如 cmets 中指出的那样,xts 不支持这种类型的系列。

【讨论】:

  • 有道理。感谢您的反馈!
猜你喜欢
  • 2015-10-01
  • 2019-04-27
  • 2020-06-26
  • 2012-01-04
  • 2019-06-26
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
相关资源
最近更新 更多