0
ausbeer %>% as_tsibble() %>% 
  filter(year(index) >= 1992) %>% 
  mutate(Year = year(index), Quarter = quarter(index)) %>% 
  as_tibble() %>% 
  select(Year, Quarter, value) %>% 
  pivot_wider(names_from = Quarter, values_from = value) %>% 
  as_tsibble(index = Year) %>% 
  gg_lag(,2:5)

我正在尝试制作“ausbeer”数据集的滞后图,并使用“fpp3”包中的动词进行此操作。当然,最简单的方法是使用以前版本的“gglagplot()”,但是,我想继续使用 fpp3 包中的动词。

当我运行上面的代码时,它显示了 5 个季节(0~5),而不是 4 个(q1~q4)。任何人都可以解决这个问题吗?

4

1 回答 1

0

从 1992 年开始的滞后图fpp2::ausbeer可以通过以下方式生成:

library(fpp3)
#> ── Attaching packages ──────────────────────────────────────────── fpp3 0.4.0 ──
#> ✓ tibble      3.1.2          ✓ tsibble     1.0.1     
#> ✓ dplyr       1.0.6          ✓ tsibbledata 0.3.0     
#> ✓ tidyr       1.1.3          ✓ feasts      0.2.1.9000
#> ✓ lubridate   1.7.10         ✓ fable       0.3.1     
#> ✓ ggplot2     3.3.3.9000
#> ── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
#> x lubridate::date()    masks base::date()
#> x dplyr::filter()      masks stats::filter()
#> x tsibble::intersect() masks base::intersect()
#> x tsibble::interval()  masks lubridate::interval()
#> x dplyr::lag()         masks stats::lag()
#> x tsibble::setdiff()   masks base::setdiff()
#> x tsibble::union()     masks base::union()
as_tsibble(fpp2::ausbeer) %>% 
  filter(year(index) >= 1992) %>% 
  gg_lag(value)
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo

这给出了与 ggagplot() 函数相同的输出。

library(fpp2)
#> ── Attaching packages ────────────────────────────────────────────── fpp2 2.4 ──
#> ✓ forecast  8.14     ✓ expsmooth 2.3 
#> ✓ fma       2.4
#> 
#> 
#> Attaching package: 'fpp2'
#> The following object is masked from 'package:fpp3':
#> 
#>     insurance
gglagplot(window(ausbeer, start = 1992))

无需将季度转换为数据列。tsibble 格式的每一列都是一个不同的变量(在这种情况下是澳大利亚生产的啤酒量)。

y参数用于指定要绘制的列,并且使用该period参数控制季节性周期的分隔。这里默认会选择一个常见的季节性窗口,在这种情况下是 period = "1 year"分别显示一年中的季度。

reprex 包于 2021-06-15 创建 (v2.0.0 )

于 2021-06-15T05:10:37.233 回答