嗨,我正在与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方法?
谢谢你在放空。
这里无益的答案是,如果您至少有两年的观测值,则可以对每日数据使用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)