我正在研究时间序列问题,并希望分解以获得有关滞后的一些基本信息。目标是根据变量变量的变化来评估输出变量的滞后,作为下面示例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个句点。我在这里显然缺少一些东西,任何建议都表示赞赏。
答案 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))