使用 R 分解时间序列

Decompose time series using R

我是 R 的新手。

我想做的是分解一个时间序列,它以小时为单位给出。

我的数据是这样的:

Time    traffic
6/7/2005 7:00   56718587433
6/7/2005 8:00   76456162968
6/7/2005 9:00   82534038485
6/7/2005 10:00  88796995092

 ...

7/28/2005 10:00 51528036132
7/28/2005 11:00 69610584123
7/28/2005 12:00 76364975533
7/28/2005 13:00 81281257078

为了将我的数据分解为趋势、季节性和固定成分,我尝试了以下方法:

library(xts)
library(forecast)
data<-read.csv("my_file.csv")
data<-ts(data[,2],frequency = 24*365, start=c(2005,6,7,7))
decompose(data)

但这是我遇到的错误:

Error in decompose(data): time series has no or less than 2 period

我做错了什么?

当您使用 frequency = 24*365 时,您表示您希望时间单位为年。由于您的数据少于两个月,因此您没有 2 个期间(年)。尝试使用天作为基本单位 - 即尝试 frequency = 24

我想你的意思是将频率设置为24,然后将预测每小时的数据。如果你想确定多个影响,即每小时、每天、每周、每月等,那么你可以探索 forecast 包中的 tbats() 函数,它可以检测多个季节性,或者你也可以使用傅里叶模型来提取不同的影响潜在的周期性。

包括与使用傅立叶进行预测相关的代码:

http://robjhyndman.com/hyndsight/tbats-with-regressors/

关于如何设置频率的信息:

http://robjhyndman.com/hyndsight/seasonal-periods/