R 时间序列频率

R times series frequency

我有一个时间序列数据集,其中包含 374 天的数据点(每天 1 个数据点)。我很难理解 ts 函数中的频率参数,所以我把它留空了:

ts_0615391206 <- ts(demand_rev_0615391206$estimated_demand,
                    start=as.Date(min(demand_rev_0615391206$date),format = "d%/m%/Y%"),
                    end=as.Date(max(demand_rev_0615391206$date),format = "d%/m%/Y%"),
                    #frequency = 1
                    ) 

plot.ts(ts_0615391206) 但是,当我尝试使用以下方法分解时:

ts_0615391206_components <- decompose(ts_0615391206)

我遇到错误:

Error in decompose(ts_0615391206) : 
  time series has no or less than 2 periods

我如何决定我的数据中有多少周期以及参数 "frequency" 值应该是多少?

> dput(head(ts_0615391206))
c(2.71, 2.47, 3.86, 3.61, 5.78, 5.59)
> 
> str(ts_0615391206)
 Time-Series [1:194] from 16125 to 16318: 2.71 2.47 3.86 3.61 5.78 5.59 3.28 3.4 3.34 3.68 ...

根据文档 ?ts

...one could use a value of 7 for frequency when the data are sampled daily, and the natural time period is a week, or 12 when the data are sampled monthly and the natural time period is a year. Values of 4 and 12 are assumed in (e.g.) print methods to imply a quarterly and monthly series respectively.

尝试设置 frequency = 7

stats R 包中的 decompose() 函数将给定的时间序列分解为趋势、季节成分和提醒部分。季节性成分是一个严格的周期时间序列,周期的长度等于时间序列的frequency。例如,如果您设置 frequency = m,则 decompose() 函数构建分解,其中季节性成分的周期为 m。 如果 m 是整数,m > 1,并且时间序列的长度大于或等于 2[,则 decompose() 函数有效=22=]米。 帮助页面 ?decompose 指出时间序列应该 "covers an integer number of complete periods" 才能使函数正常运行。所以如果系列长度是 m.

的倍数可能会更好

你的数据没有明显的周期性。可能 this discussion 对您有用,因为它包含 Rob Hyndman 的 R 脚本来揭示系列中的周期性。

如果您每天都有数据,那么频率是一年 365 天 365,因为它包含一年的 365 个条目,正如频率定义所说的那样。

当您尝试使用以下方法分解时:

ts_0615391206_components <- decompose(ts_0615391206)

您遇到错误:

Error in decompose(ts_0615391206) : 
time series has no or less than 2 periods

因为至少需要两个时间序列,即两年的数据来训练模型 否则会抛出错误

ts_06153912061 <- ts(ts_0615391206, start = c(1999,1), frequency = 365) for Daily

ts_06153912061 <- ts(ts_0615391206, start = c(1999,1), frequency = 52) for Weekly

ts_06153912061 <- ts(ts_0615391206, start = c(1999,1), frequency = 12) for Monthly

ts_06153912061 <- ts(ts_0615391206, start = c(1999,1), frequency = 4) for Quarterly

ts_06153912061 <- ts(ts_0615391206, start = c(1999,1), frequency = 1) for Yearly or Annually