我想在每周收集的数据中应用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
... .... .... ... ... ... ...
我这样做的主要目的是找到时间序列数据的季节和趋势分量。
答案 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")