【问题标题】:Time Series stl error时间序列 stl 错误
【发布时间】:2016-01-06 10:22:53
【问题描述】:

我的代码是这样的:

rawdata=as.numeric(rawdata)
salesdata_bfr=rawdata[3:(maxcolnum-12)]
print(length(salesdata_bfr))
salesdata_ts=ts(salesdata_bfr, frequency = 12)
salesdata_stl=stl(salesdata_ts,s.window="periodic")

maxcolnum 等于 38,print(length(salesdata_bfr)) 打印 24。但我得到了错误

Error in stl(salesdata_ts, s.window = "periodic") : 
 series is not periodic or has less than two periods

但我确实有一个正好包含两个周期的向量,并且我在ts() 中指定了频率。为什么它不起作用?

【问题讨论】:

  • 您的代码中某处存在问题。如果maxcolnum 等于38,则3:(maxcolnum-11) 的长度为25。并且使用虚拟数据(rawdata <- rnorm(38)),它可以工作。请发帖str(salesdata_bfr)
  • 对不起,有一个错字。我现在更正了。应该是(maxcolnum-12)。我想看看它在 25 岁时是否有效,并且确实有效。 str(salesdata_bfr)num [1:24] 184931 175362 71478 44558 25039 ...
  • 请在您的问题中添加dput(salesdata_bfr)

标签: r time-series


【解决方案1】:

您的代码有问题。以下工作顺利:

set.seed(42)
maxcolnum <- 38
rawdata <- rnorm(maxcolnum)
salesdata_bfr <- rawdata[3:(maxcolnum-11)]
length(salesdata_bfr)
# [1] 25 <-- it should be 25, not 24
salesdata_ts <- ts(salesdata_bfr, frequency = 12)
salesdata_stl <- stl(salesdata_ts,s.window="periodic")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2014-09-09
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多