stl中出现较大频率的误差-时间序列分析

问题描述 投票:0回答:1

嗨,我正在与R一起学习时间序列。

如果执行stl方法,则会遇到如下错误。

stl(avatar_ts,s.window =“ periodic”)错误: 系列不是周期性的或少于两个周期

下面是我的代码。

avatar_ts = ts(avatar_data$Gross, start = c(2009,12), frequency=365)
st_decompose_method = stl(avatar_ts, s.window="periodic")

如果将频率更改为12或50,则stl也会运行。但是,我的数据集是“ 2009-12-18”-“ 2010-11-18”的每日数据集,共318个观测值。(基本上是每日数据,但由于是每日电影获利数据集,因此检测到缺少了几周)

我如何也可以在365频率下运行stl方法?

谢谢你在放空。

r time stl series
1个回答
0
投票

这里无益的答案是,如果您至少有两年的观测值,则可以对每日数据使用stl()。您将s.window定义为"periodic",但是由于您拥有不到一年的数据insufficient

请参见下面的模拟数据示例。

首先,结合您的观察数:

x <-rnorm(318)
d <- ts(x, start = c(2009,12), frequency = 365)
st_decompose_method = stl(d, s.window="periodic")

这将给出错误:

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

现在至少有两年的数据,所以至少有两个期间:

x <-rnorm(731)
d <- ts(x, start = c(2009,12), frequency = 365)
st_decompose_method = stl(d, s.window="periodic")

哪个会工作。

请注意,由于您未提供开始日期,因此ts规范不正确。为此,您可以执行following

days <- seq(as.Date("2009-12-18"), as.Date("2010-11-18"), by = "day")
avatar_ts = ts(avatar_data$Gross, 
               start = c(2009, as.numeric(format(days[1], "%j"))), 
               frequency=365)
© www.soinside.com 2019 - 2024. All rights reserved.