0

我是探索 fable 包的新手,我想在分层时间序列模型中实现回归器。数据的维度应该如何?对象内部是否应该有一个额外的列tsibble?例如,在 ARIMA 模型中。非常感谢您提前。

4

1 回答 1

2

使用外生回归量对分层数据建模的方法与对常规数据建模的方法相同。对于层次结构中的每个节点,外生回归量应该是用于估计模型的 tsibble 对象的列。

下面的代码显示了如何T = M + F使用动态回归模型(带有 xreg 的 ARIMA)对简单的层次结构 ( ) 进行建模。请注意,外生回归量在这里只是白噪声,但您将在此处使用一些真实数据。

library(fable)
#> Loading required package: fabletools
library(dplyr)
my_data <- as_tsibble(cbind(mdeaths, fdeaths)) %>% 
  aggregate_key(key, value = sum(value)) %>% 
  # Add the regressor (if you have this in your data, could aggregate it above)
  # If the data is pre-aggregated, specify which keys are <aggregated> with agg_vec().
  mutate(my_xreg = rnorm(nrow(.)))
my_data
#> # A tsibble: 216 x 4 [1M]
#> # Key:       key [3]
#>       index key          value my_xreg
#>       <mth> <chr*>       <dbl>   <dbl>
#>  1 1974 Jan <aggregated>  3035  -1.87 
#>  2 1974 Feb <aggregated>  2552   1.93 
#>  3 1974 Mar <aggregated>  2704  -0.420
#>  4 1974 Apr <aggregated>  2554   0.332
#>  5 1974 May <aggregated>  2014  -1.10 
#>  6 1974 Jun <aggregated>  1655   1.22 
#>  7 1974 Jul <aggregated>  1721   1.68 
#>  8 1974 Aug <aggregated>  1524  -1.46 
#>  9 1974 Sep <aggregated>  1596   0.620
#> 10 1974 Oct <aggregated>  2074  -0.505
#> # … with 206 more rows
my_data %>% 
  model(ARIMA(value ~ my_xreg))
#> # A mable: 3 x 2
#> # Key:     key [3]
#>   key                        `ARIMA(value ~ my_xreg)`
#>   <chr*>                                      <model>
#> 1 fdeaths      <LM w/ ARIMA(0,0,0)(1,1,1)[12] errors>
#> 2 mdeaths      <LM w/ ARIMA(0,0,2)(0,1,2)[12] errors>
#> 3 <aggregated> <LM w/ ARIMA(0,0,2)(2,1,0)[12] errors>

reprex 包(v0.3.0)于 2021-01-13 创建

于 2021-01-12T22:16:28.873 回答