【问题标题】:Error in hw(train): The time series should have frequency greater than 1 (forecast library)hw(train) 中的错误:时间序列的频率应大于 1(预测库)
【发布时间】:2019-03-10 15:22:49
【问题描述】:

这是什么意思?我的 timeSeries 的频率是 365,不是吗?我想做的是做 3 年的每日预测,一次一天。换句话说,我想得到第二天的预测,365*3 次。

library(forecast)
df = read.csv("./files/all_var_df.csv")

ts = as.timeSeries(df[, c(1, 2)])
train = as.timeSeries(ts[0:3285, ])
validation = ts[3285:4380]

fit_hw <- hw(train)
fit2_hw <- hw(validation, model=fit_hw)
onestep_hw <- fitted(fit2_hw)

hw(train) 中的错误:时间序列应该 频率大于 1。

以下信息可能会帮助您回答:

class(train)
> [1] "timeSeries"

head(train, 3)
> 2005-01-01 101634.4 
> 2005-01-02 106812.5 
> 2005-01-03 119502.8 

length(train)
> [1] 3285

【问题讨论】:

  • 请提供您在 df 数据框中使用的示例数据
  • @RiteshPorwal 谢谢你的回答,我当然可以,你建议我怎么做?

标签: r forecasting forecast


【解决方案1】:

没有实际看到您的数据,我只能推测。但是,我可以使用 R 中的可用数据集重新创建此问题。在 R 中的 library(fpp2) 中,数据集 ausair 包含“年度航空乘客总数(以百万计),包括在澳大利亚注册的航空公司的国内和国际飞机乘客。 1970-2016 年。”

将该数据集作为 ts (air &lt;- window(ausair, start = 1990)) 读取,我们得到以下信息:

Time Series:
Start = 1990 
End = 2016 
Frequency = 1 
 [1] 17.55340 21.86010 23.88660 26.92930 26.88850 28.83140 30.07510 30.95350
 [9] 30.18570 31.57970 32.57757 33.47740 39.02158 41.38643 41.59655 44.65732
[17] 46.95177 48.72884 51.48843 50.02697 60.64091 63.36031 66.35527 68.19795
[25] 68.12324 69.77935 72.59770

我现在将使用hw() 函数进行训练:

fc <- hw(air, seasonal = "additive")

这会产生以下错误:

Error in hw(air, seasonal = "additive") : 
  The time series should have frequency greater than 1.

这里发生的情况是每个数据点对应一整年。因此,Holt-Winters 方法无法找到季节性。 HW 方法的季节性部分遵循以下等式:

表示季节性,m 表示频率。如果一个时间段内只有 1 个数据点,那么谈论重复的季节性模式是没有意义的。

解决问题的方法是使用ts() 定义时间序列对象。时间序列函数的一个参数是频率。在没有看到您的数据的情况下,我无法说出该值应该设置为多少。 Here 是一个解释术语频率的网站。这将取决于您的数据表现出的季节性。它每周是否重复季节性模式?每个季度?如果没有季节性模式,您可以切换到函数holt(),它只使用指数衰减项和趋势项来查找模式并且不会给出错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2012-10-09
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多