如何确定时间序列的滞后?

时间:2011-03-14 09:16:00

标签: r time-series

我正在研究时间序列问题,并希望分解以获得有关滞后的一些基本信息。目标是根据变量变量的变化来评估输出变量的滞后,作为下面示例data.frame的一部分。完整的data.frame有更多的数据,但它是一周一次,并遵循与此示例相同的结构。

year <- c(2010,2010,2010,2010)
week <- c("P7W1","P7W2","P7W3","P7W4")
output <- c(3295,4379,4284,4832)
change <- c(1912,2177,1587,2708)

timeTest <- data.frame(year,week,output,change)

我使用以下内容创建了一个时间序列对象。

timeObject <- ts(timeTest, start=c(2010,7), frequency=52)

然而,当我运行decompose(timeObject)时,我收到一条错误消息,指出我没有或少于2个句点。我在这里显然缺少一些东西,任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:6)

为了运行decompose()或它的堂兄stl(),你需要至少有两个完整的 数据期间。周期定义为1 /频率。因此,如果您正在处理频率= 52的每周数据,那么您的期限为一年,您需要两年的数据。

例如,运行103周数据集的decompose()将失败:

decompose(ts(runif(103), frequency=52))

Error in decompose(ts(runif(103), frequency = 52)) : 
  time series has no or less than 2 periods

但运行带有104个数据点的decompose()有效:

decompose(ts(runif(104), frequency=52))

$seasonal
Time Series:
Start = c(1, 1) 
End = c(2, 52) 
Frequency = 52 
  [1] -0.015447737  0.392006955  0.185528936  0.372505618 -0.079588619
  [6] -0.351928149 -0.472617951 -0.306461367 -0.475596801  0.266197693
 [11]  0.167468113 -0.332837411 -0.427845149 -0.001199151  0.276361737
...
$type
[1] "additive"

attr(,"class")
[1] "decomposed.ts"

PS。您可能还想查看将计算自相关的acf()。即使您的完整年份数据少于两年,这也会有效。例如:

acf(ts(runif(100),frequency = 52))

enter image description here