我正在创建一个xts对象,每周(7天)频率用于预测。但是,即使在frequency=7
调用中使用xts
参数,生成的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) <- 7
。但是,这会将x
的类更改为仅zooreg
和zoo
,从而丢失xts
类并弄乱时间戳格式。
xts是否会根据以某种方式分析数据自动选择频率?如果是这样,您如何覆盖此设置以设置特定频率以用于预测(在这种情况下,将季节性时间序列从预测包中传递到ets
)?
据我所知,xts可能不允许频率没有意义,但频率为7且每日时间戳似乎很合理。
答案 0 :(得分:7)
连续日期类日期的频率始终为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))]
正如评论中所指出的,xts不支持这种类型的系列。