如何使用 R 中的时间序列确定整个数据集的趋势和季节性?

Rus*_*nte 0 r time-series decomposition

我正在使用 R 和 fpp3 包进行时间序列分析,但没有找到计算整个数据集的趋势和季节性的方法。例如,这个数据集看起来有趋势和季节性,但是如何找到整个数据集的趋势和季节性值呢?

library(tidyverse)
library(fpp3)
us_gasoline %>% 
  autoplot(Barrels)

Run Code Online (Sandbox Code Playgroud)

汽油销量图

如果使用分解,它会返回每行的趋势和季节性数字,但整个数据集的季节性是多少?是每月吗?季刊?每年?一些不寻常的价值?对于整个数据集的趋势也是同样的问题。例如,这段代码:

us_gasoline %>% 
  model(
    STL(Barrels)
  ) %>% 
  components()

Run Code Online (Sandbox Code Playgroud)

返回此数据:

汽油数据的趋势和季节性

如何计算整个数据集的趋势(或多个趋势,如果多个)和季节性(或多个季节性,如果多个)?

Mit*_*ild 5

STL 分解将产生时间序列的单一趋势以及一个或多个季节性。您可以使用 可视化这些分解的组件autoplot(<dable>),例如:

\n
library(fpp3)\n#> \xe2\x94\x80\xe2\x94\x80 Attaching packages \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 fpp3 0.4.0 \xe2\x94\x80\xe2\x94\x80\n#> \xe2\x9c\x94 tibble      3.1.8          \xe2\x9c\x94 tsibble     1.1.1     \n#> \xe2\x9c\x94 dplyr       1.0.9          \xe2\x9c\x94 tsibbledata 0.4.0     \n#> \xe2\x9c\x94 tidyr       1.2.0          \xe2\x9c\x94 feasts      0.2.2     \n#> \xe2\x9c\x94 lubridate   1.8.0          \xe2\x9c\x94 fable       0.3.1.9000\n#> \xe2\x9c\x94 ggplot2     3.3.6\n#> \xe2\x94\x80\xe2\x94\x80 Conflicts \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 fpp3_conflicts \xe2\x94\x80\xe2\x94\x80\n#> \xe2\x9c\x96 lubridate::date()    masks base::date()\n#> \xe2\x9c\x96 dplyr::filter()      masks stats::filter()\n#> \xe2\x9c\x96 tsibble::intersect() masks base::intersect()\n#> \xe2\x9c\x96 tsibble::interval()  masks lubridate::interval()\n#> \xe2\x9c\x96 dplyr::lag()         masks stats::lag()\n#> \xe2\x9c\x96 tsibble::setdiff()   masks base::setdiff()\n#> \xe2\x9c\x96 tsibble::union()     masks base::union()\nus_gasoline %>% \n  model(\n    STL(Barrels)\n  ) %>% \n  components() %>%\n  autoplot()\n
Run Code Online (Sandbox Code Playgroud)\n

\n

由reprex 包于 2022 年 8 月 22 日创建(v2.0.1)

\n

使用的默认季节性周期STL基于常见的季节性周期,并不特定于任何特定数据集。对于每周观察的数据,合理的季节周期是每年。这在季节性成分的列名称中表示:season_year

\n

您可以使用season()模型特殊指定一个或多个季节周期。例如,分解年度和 4 周模式:

\n
library(fpp3)\n#> \xe2\x94\x80\xe2\x94\x80 Attaching packages \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 fpp3 0.4.0 \xe2\x94\x80\xe2\x94\x80\n#> \xe2\x9c\x94 tibble      3.1.8          \xe2\x9c\x94 tsibble     1.1.1     \n#> \xe2\x9c\x94 dplyr       1.0.9          \xe2\x9c\x94 tsibbledata 0.4.0     \n#> \xe2\x9c\x94 tidyr       1.2.0          \xe2\x9c\x94 feasts      0.2.2     \n#> \xe2\x9c\x94 lubridate   1.8.0          \xe2\x9c\x94 fable       0.3.1.9000\n#> \xe2\x9c\x94 ggplot2     3.3.6\n#> \xe2\x94\x80\xe2\x94\x80 Conflicts \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80 fpp3_conflicts \xe2\x94\x80\xe2\x94\x80\n#> \xe2\x9c\x96 lubridate::date()    masks base::date()\n#> \xe2\x9c\x96 dplyr::filter()      masks stats::filter()\n#> \xe2\x9c\x96 tsibble::intersect() masks base::intersect()\n#> \xe2\x9c\x96 tsibble::interval()  masks lubridate::interval()\n#> \xe2\x9c\x96 dplyr::lag()         masks stats::lag()\n#> \xe2\x9c\x96 tsibble::setdiff()   masks base::setdiff()\n#> \xe2\x9c\x96 tsibble::union()     masks base::union()\nus_gasoline %>% \n  model(\n    STL(Barrels ~ season(period = "year") + season(period = "4 weeks"))\n  ) %>% \n  components() %>%\n  autoplot()\n
Run Code Online (Sandbox Code Playgroud)\n

\n

由reprex 包于 2022 年 8 月 22 日创建(v2.0.1)

\n

请注意,此数据不呈现 4 周模式,因此您通常不想从中提取 4 周季节性模式。

\n