2012-01-17 86 views
1

我正在嘗試使用stl來獲取我的時間序列數據中的季節和趨勢的細分。我有tick數據,並且我創建了一個ts對象。使用時間序列數據繪製stl

我跑了一個SQL查詢來獲取以下表格

> x 
     datetime  price 
1 2010-09-08 1501  9110 
2 2010-09-08 1501  9110 
3 2010-09-08 1501  9110 
4 2010-09-08 1501  9110 
5 2010-09-08 1501  9115 
6 2010-09-08 1501  9115 
7 2010-09-08 1501  9110 
8 2010-09-08 1502  9115 
9 2010-09-08 1502  9115 
10 2010-09-08 1502  9115 
11 2010-09-08 1503  9120 
12 2010-09-08 1503  9115 
13 2010-09-08 1503  9115 
14 2010-09-08 1503  9115 
15 2010-09-08 1503  9115 
16 2010-09-08 1503  9115 
17 2010-09-08 1503  9115 
18 2010-09-08 1503  9115 
19 2010-09-08 1503  9115 
20 2010-09-08 1503  9115 
21 2010-09-08 1503  9115 
22 2010-09-08 1503  9110 
23 2010-09-08 1503  9105 
24 2010-09-08 1503  9105 
25 2010-09-08 1503  9110 
26 2010-09-08 1504  9110 
27 2010-09-08 1504  9110 
28 2010-09-08 1504  9110 
29 2010-09-08 1504  9110 
30 2010-09-08 1504  9115 
31 2010-09-08 1504  9115 
32 2010-09-08 1504  9115 
33 2010-09-08 1504  9115 
34 2010-09-08 1504  9115 
35 2010-09-08 1504  9115 
36 2010-09-08 1504  9115 
37 2010-09-08 1504  9120 

的數據和我通過運行轉換成TS如下:

> xt<-ts(x[,2]) 
> xt 
Time Series: 
Start = 1 
End = 37 
Frequency = 1 
[1] 9110 9110 9110 9110 9115 9115 9110 9115 9115 9115 9120 9115 9115 9115 9115 
[16] 9115 9115 9115 9115 9115 9115 9110 9105 9105 9110 9110 9110 9110 9110 9115 
[31] 9115 9115 9115 9115 9115 9115 9120 

> drg<-stl(log(xt),"per") 
Error in stl(log(xt), "per") : 
    series is not periodic or has less than two periods 

> is.ts(xt) 
[1] TRUE 

我如何能解決任何建議錯誤,能夠看到不同趨勢分量的細分...

+0

我還沒有做很多時間系列的工作,所以只是爲了澄清:是'plot'函數產生錯誤還是'stl'?即,如果你在自己的行上執行'drg < - stl(...)',然後執行'plot(drg)',哪行會拋出錯誤?我的猜測是'plot',或許'drg'不是你所期望的。你能否提供一小部分數據來重現你的問題? – 2012-01-17 01:35:08

+0

stl部分'> drg <-stl(log(xt),「per」) stl(log(xt),「per」)中的錯誤: 系列不是週期性的或者具有少於兩個週期 '我將在短短几分鐘內更新我的帖子,並提供一小段數據樣本 – itcplpl 2012-01-17 01:58:32

+0

剛剛更新後的小數據樣本重現問題 – itcplpl 2012-01-17 02:10:50

回答

11

錯誤在那裏你可以看到

> drg<-stl(log(xt),"per") 
Error in stl(log(xt), "per") : 
    series is not periodic or has less than two periods 

stl()功能既需要時間序列對象一個頻率(或同等地,增量),因此季節性部分使任何意義。對於較長期的宏觀經濟系列,月度通常爲1/12,季度數據通常爲1/4。有關詳細信息,請參閱help(ts),並仔細查看ts()stl()的示例以及此處使用的數據類型。

這樣做與商業日常數據一樣難,因爲日曆很不規則。通過您的日常數據,您必須提出一些方案。這些數據是根本不同的:市場開放和關閉,而宏觀數據可以概念化爲連續的。

+2

謝謝德克,我很感謝你的理由和你的澄清。憑藉您的專業知識,您是否會對潛在計劃提出任何建議,或許可以應用於每週OHLC數據。還是有另一種功能,你會建議使用相似類型的股票分析類型 – itcplpl 2012-01-17 02:36:29

+2

@itcplpl嘗試用*動物園*或* xts *包創建一系列的格式,然後強迫'ts'對象使用他們的' as.ts()'方法。除此之外,直接使用添加劑模型對季節和趨勢組件進行建模 - 我最近使用mgcv軟件包進行了類似的操作,該軟件包具有用於每週效果的循環平滑器。更多的涉及STL,但非常值得像STL這樣的罐頭技術可以匹配的努力 – 2012-01-17 20:25:15