2011-03-14 45 views
3

我正在研究時間序列問題,並想分解以獲取有關滯後的一些基本信息。目標是基於變化變量的變化來評估輸出變量的滯後,這是下面示例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) 

然而,當我跑分解(timeObject)我得到了一個錯誤信息,說明我沒有或小於2個週期。我明顯錯過了一些東西,任何建議表示讚賞。

回答

6

爲了運行decompose()或其表親stl(),您需要至少有兩個完整的數據週期 。週期定義爲1 /頻率。因此,如果您正在處理頻率爲52的每週數據,則您的期限爲一年,您需要兩年的數據。

例如,運行分解()與數據組103周將失敗:

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(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),頻率= 52))

enter image description here

+0

感謝清晰和詳細的解答。如果我改變頻率到一個較低的數字將獲得decompose()函數運行?如果是的話,分析仍然有意義嗎? – analyticsPierce 2011-03-14 14:23:32

+0

是的,那麼函數將運行。這是否有意義取決於你的數據和你對結果的解釋。 – Andrie 2011-03-14 15:14:59

相關問題