从多变量 tsibble 中删除季节和趋势
Remove season and trend from multivariate tsibble
我正在使用 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 创建
使用feasts
包中的STL()
函数:
df_stl <- df %>%
STL(value ~ season("periodic") + trend(window=1000))
我正在使用 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 创建使用feasts
包中的STL()
函数:
df_stl <- df %>%
STL(value ~ season("periodic") + trend(window=1000))