从多变量摆动中删除季节和趋势

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

我正在使用stl()函数从多元时间序列中删除季节和趋势。然后,我想保留stl分解的余项,以便对残差执行ARIMA()分析。

我正在尝试以一种整洁的方式对此进行编码,因为我将扩展到大量的时间序列。在这里我举一个3系列的例子。我的问题是,除非我将stl应用于特定的单变量时间序列,否则无法将df应用于filter

library(fable)
#> Loading required package: fabletools
library(tidyverse)
library(feasts)

df <- tibble(
  X = rnorm(71), Y = rnorm(71), Z = rnorm(71),
  quarter = seq(as.Date("2001/4/1"),
    as.Date("2018/10/1"),
    by = "quarter"
  )
) %>%
  mutate(quarter = tsibble::yearquarter(quarter)) %>%
  gather(-quarter, key = "Series", value = "value") %>%
  as_tsibble(index = quarter, key = Series)

# Detrend into seasonal, trend and remainder components

# Applying stl to a univariate series using filter works fine

df_stl <- df %>%
  filter(Series == "Z") %>%
  stl(s.window = "per", t.window = 1000)

df_stl <- df_stl[["time.series"]][,'remainder'] %>%
  as_tsibble()

# Applying stl to a multivariate series fails
df %>%
  stl(s.window = "per", t.window = 1000)
#> Error in stl(., s.window = "per", t.window = 1000): only univariate series are allowed

reprex package(v0.3.0)在2019-11-14创建

r time-series forecasting
1个回答
0
投票

使用STL()程序包中的feasts功能:

df_stl <- df %>%
  STL(value ~ season("periodic") + trend(window=1000))
© www.soinside.com 2019 - 2024. All rights reserved.