3

我正在尝试使用该x12软件包自动进行一些季节性调整。为此,我需要一个ts对象。但是,我不需要一个简单的ts对象,而是一个已经设置了开始日期和频率的对象。对于任何给定的系列,我都可以输入,但我将混合提供每月或每周的数据。我可以从 aquantmod作为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

有什么建议么?还是不可能,我应该明确确定/提供频率?

谢谢

4

2 回答 2

4

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

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

并使用对象的yearmon元素POSIXlt计算起始年月。

pltStart <- as.POSIXlt(start(lax))
Start <- c(pltStart$year+1900,pltStart$mon+1)
laxts <- ts(lax$WILACR3URN, start=Start, frequency=freq)
plot.ts(laxts)
于 2013-03-13T18:45:49.587 回答
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)
于 2015-11-06T14:01:21.623 回答