为X12和XTS获取TS的频率

时间:2013-03-13 18:40:39

标签: r xts

我正在尝试使用x12包自动执行季节性调整。为此,我需要一个ts对象。但是,我不需要一个简单的ts对象,而是一个已设置开始日期和频率的对象。对于任何给定的系列,我可以输入,但我将提供每月或每周数据的混合。我可以从quantmod作为xta对象获取数据,但似乎无法弄清楚如何从xts中提取频率。 以下是一些示例代码,可以完整地运行,但我想从xts中提取频率信息,而不是明确设置它:

getSymbols("WILACR3URN",src="FRED", from="2000-01-01") # get data as an XTS
lax <- WILACR3URN #shorten name
laxts <- ts(lax$WILACR3URN, start=c(2000,1), frequency=12) #explicitly it works
plot.ts(laxts)
x12out <- x12(laxts,x12path="c:\\x12arima\\x12a.exe",transform="auto", automdl=TRUE)
laxadj  <- as.ts(x12out$d11) # extract seasonally adjusted series

有什么建议吗?或者这是不可能的,我应该明确地确定/提供频率?

由于

2 个答案:

答案 0 :(得分:4)

对于这种特定情况,这是未经测试的,但请尝试使用xts::periodicity作为频率:

freq <- switch(periodicity(lax)$scale,
  daily=365,
  weekly=52,
  monthly=12,
  quarterly=4,
  yearly=1)

并使用year个对象的monPOSIXlt元素来计算起始年份和月份。

pltStart <- as.POSIXlt(start(lax))
Start <- c(pltStart$year+1900,pltStart$mon+1)
laxts <- ts(lax$WILACR3URN, start=Start, frequency=freq)
plot.ts(laxts)

答案 1 :(得分:0)

xts :: periodicity建议对我很有帮助。我还发现使用xts :: convertIndex的以下方法适用于月度和季度数据。它未经过每周数据的测试。

require("quantmod")
require("dplyr")
getSymbols("WILACR3URN",src="FRED", from="2000-01-01") # get data as an XTS
lax <- WILACR3URN #shorten name
laxts <- lax %>%
  convertIndex("yearmon") %>% # change index of xts object
  as.ts(start = start(.), end = end(.)) # convert to ts
plot.ts(laxts)