在xts对象中设置频率

时间:2015-02-26 13:51:12

标签: r time-series xts

我想在R中创建一个xts对象,然后我想将其分解为季节性和趋势。

> require(xts)
> require(lubridate) 
> chicos$date <- ymd(chicos$date)
> ctr.ts <- xts(chicos[, 7], order.by = chicos[, 8], frequency = 365)
> plot(ctr.ts, main="Meaningful title")

enter image description here

当我尝试分解它时,我收到此错误消息..

> plot(decompose(ctr.ts))
Error in decompose(ctr.ts) : time series has no or less than 2 periods

我的观察是每日一次,从2014-12-01到2015-02-25。我设置了错误的frequency吗?

1 个答案:

答案 0 :(得分:5)

对于xts类型的时间序列的频率: 默认情况下,xts具有每日频率,因此如果是每日,则不需要包含任何频率:

 ctr.xts <- xts(chicos[, 7], order.by = chicos[, 8])

R函数decompose()仅适用于ts类型的对象。 因此,您可能希望通过发出以下行将xts对象转换为ts:

attr(ctr.xts, 'frequency') <- 7  # Set the frequency of the xts object to weekly
periodicity(ctr.xts)             # check periodicity: weekly 
plot(decompose(as.ts(ctr.xts)))  # Decompose after conversion to ts

此外,您可能想尝试不同的频率:

  • 每月:12
  • 每年:365

希望这可能会有所帮助。