如何使用R中的分解函数每周分解时间序列数据?

时间:2013-02-13 05:48:24

标签: r

我想在每周收集的数据中应用R中的分解函数。例如,我给出了一个例子,我已经处理了我得到的错误:

>v<-c(50,45,23,21,32,24,42)
>vtimeseries<-ts(v)
>vtimeseries
Time Series:
Start = 1 
End = 30 
Frequency = 1 
>decompose(vtimeseries)
Error in decompose(vts) : time series has no or less than 2 periods

任何人都可以帮我解决这个问题。并且还介绍了如何在ts()中设置频率值。我想将时间序列数据分解为

Monday      Tuesday      Wednesday     Thursday      Friday       Saturday     Sunday
...          ....          ....            ...            ...           ...     ...

我这样做的主要目的是找到时间序列数据的季节和趋势分量。

2 个答案:

答案 0 :(得分:1)

上面由Pramit Choudhary给出的示例似乎不再起作用,因为GOOG xts中的NA列导致to.monthly(GOOG)抛出错误 借用Removing NA columns in xts

中的代码
getSymbols("GOOG", src="google", from = from.dat, to = to.dat)
GOOG <- GOOG[,-which(apply(is.na(GOOG), 2, all))]
mGoog <- to.monthly(GOOG)

似乎可以解决问题。

答案 1 :(得分:0)

如果您正在寻找一个示例来了解频率和分解的相关性,请尝试以下示例。尝试更改“频率”值。它将帮助您了解到底发生了什么。

    library(quantmod)
    from.dat <- as.Date("01/01/08", format="%m/%d/%y")
    to.dat <- as.Date("12/31/13", format="%m/%d/%y")
    getSymbols("GOOG", src="google", from = from.dat, to = to.dat)
    mGoog <- to.monthly(GOOG)
    googOpen <- Op(mGoog)
    ts1 <- ts(googOpen,frequency=12)
    plot(ts1,xlab="Years+1", ylab="GOOG")
    plot(decompose(ts1),xlab="Years+1")