【问题标题】:Error in decompose(ts(x[1L:wind], start = start(x), frequency = f), seasonal) : in R分解错误(ts(x [1L:wind],start = start(x),频率= f),季节性):在R
【发布时间】:2018-09-06 08:29:06
【问题描述】:

我不明白为什么我会收到帖子标题中提到的错误。

那我做什么。

数据示例

mydat=structure(list(date = structure(c(3L, 2L, 6L, 1L, 7L, 5L, 4L), .Label = c("apr-15", 
"feb-15", "jan-15", "jul15", "jun-15", "march-15", "may-15"), class = "factor"), 
    x1 = c(653411L, 620453L, 742567L, 578548L, 720100L, 553740L, 
    588145L), x2 = c(242108L, 210841L, 255046L, 185243L, 257159L, 
    182594L, 246051L), x3 = c(234394L, 289563L, 341791L, 293608L, 
    306807L, 285190L, 279252L), x4 = c(309228L, 226175L, 292387L, 
    183745L, 223322L, 161218L, 201499L)), .Names = c("date", 
"x1", "x2", "x3", "x4"), class = "data.frame", row.names = c(NA, 
-7L))

mydat<- read.csv("path.csv", sep=";",dec=",")

mydat <- stats::ts(mydat[,-1], frequency = 12, start = c(2015,1))

library("forecast")

    my_forecast <- function(x){
      model <- HoltWinters(x,beta = FALSE, seasonal = "additive")
      fcast <- forecast(model, 5) # 5 month
      return(fcast)
    }

progn=lapply(mydat[1:34], my_forecast)

和错误

 Error in decompose(ts(x[1L:wind], start = start(x), frequency = f), seasonal) : 
  time series has no or less than 2 periods 
5.
stop("time series has no or less than 2 periods") 
4.
decompose(ts(x[1L:wind], start = start(x), frequency = f), seasonal) 
3.
HoltWinters(x, beta = FALSE, seasonal = "additive") 
2.
FUN(X[[i]], ...) 
1.
lapply(d2[1:34], my_forecast) 

如何解决? 它的主要思想是对所有 34 个变量进行 HoltWinters 分析。

【问题讨论】:

  • 我建议你只阅读原始数据而不声明结构。然后,将其存储为 ts(mydat, start=c(2015,1), end=c(2015,7), frequency=7)
  • @RendyEzaPutra,我得到同样的错误分解中的错误(ts(x [1L:wind],开始=开始(x),频率= f),季节性):时间序列没有或小于2 期
  • 你能运行我的代码并按照错误进行操作吗?发生在哪一步
  • 好的,问题出在 lapply 函数上。 lapply 返回一个与 X 长度相同的列表,其中的每个元素都是将 FUN 应用于 X 的相应元素的结果。您只需运行“my_forecast”函数即可。 my_forecast(ts(mydat, start=c(2015,1), end=c(2015,7), frequency=7))

标签: r time-series lapply holtwinters forecast


【解决方案1】:

问题在于 lapply 函数。 lapply 返回一个与 X 长度相同的列表,其中每个元素都是将 FUN 应用于 X 的相应元素的结果。您只需运行“my_forecast”函数即可。

mydat=structure(list(date = structure(c(3L, 2L, 6L, 1L, 7L, 5L, 4L), .Label = c("apr-15", 
    "feb-15", "jan-15", "jul15", "jun-15", "march-15", "may-15"), class = "factor"), 
        x1 = c(653411L, 620453L, 742567L, 578548L, 720100L, 553740L, 
        588145L), x2 = c(242108L, 210841L, 255046L, 185243L, 257159L, 
        182594L, 246051L), x3 = c(234394L, 289563L, 341791L, 293608L, 
        306807L, 285190L, 279252L), x4 = c(309228L, 226175L, 292387L, 
        183745L, 223322L, 161218L, 201499L)), .Names = c("date", 
    "x1", "x2", "x3", "x4"), class = "data.frame", row.names = c(NA, 
    -7L))

mydat<- read.csv("path.csv", sep=";",dec=",")

mydat <- stats::ts(mydat[,-1], frequency = 12, start = c(2015,1))

library("forecast")

my_forecast <- function(x){
   model <- HoltWinters(x,beta = FALSE, seasonal = "additive")
   fcast <- forecast(model, 5) # 5 month
   return(fcast)
}

my_forecast(ts(mydat, start=c(2015,1), end=c(2015,7), frequency=7))

【讨论】:

  • 提供请输出。
  • 您的数据是 x1 : x4。在这种情况下,我假设数据是单变量时间序列。而且我没有完整的数据,因为您似乎加载了 path.csv,而我没有
  • 我不知道如何在stackoverflow上上传数据集,但我在这里上传的原始数据集dropmefiles.com/8OMTJ(path.csv)大小10kb
猜你喜欢
  • 2019-03-29
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2012-02-21
  • 2022-01-16
  • 2017-04-14
相关资源
最近更新 更多