r - 来自 ARIMA 模型的寓言 : Extracting the p, d,q 规范

标签 r arima fable-r

我一直在使用 tidy 预测包寓言(它非常有用)。
我想知道是否有一种简单的方法可以从 mable 中提取 p、d、q 值。
以本指南中的数据为例 https://www.mitchelloharawild.com/blog/fable/

library(tidyverse)
library(tsibble)
library(fable)

tourism_state <- tourism %>% 
  group_by(State) %>% 
  summarise(Trips = sum(Trips))

fit <- tourism_state %>% 
  model(arima = ARIMA(Trips))
> fit
# A mable: 8 x 2
# Key:     State [8]
  State                                 arima
  <chr>                               <model>
1 ACT                          <ARIMA(0,1,1)>
2 New South Wales    <ARIMA(0,1,1)(0,1,1)[4]>
3 Northern Territory <ARIMA(1,0,1)(0,1,1)[4]>
4 Queensland                   <ARIMA(2,1,2)>
5 South Australia    <ARIMA(1,0,1)(0,1,1)[4]>
6 Tasmania           <ARIMA(0,0,3)(2,1,0)[4]>
7 Victoria           <ARIMA(0,1,1)(0,1,1)[4]>
8 Western Australia            <ARIMA(0,1,3)>
我知道规范存储在 model[[1]]$fit$spec 下,但如果我有大量模型,我无法找到提取它们的方法
理想情况下我想要
  State                                 arima       p     d       q
  <chr>                               <model>
1 ACT                          <ARIMA(0,1,1)>       0     1       1
2 New South Wales    <ARIMA(0,1,1)(0,1,1)[4]>       0     1       1
3 Northern Territory <ARIMA(1,0,1)(0,1,1)[4]>       1     0       1
4 Queensland                   <ARIMA(2,1,2)>       
5 South Australia    <ARIMA(1,0,1)(0,1,1)[4]>       and so on....
6 Tasmania           <ARIMA(0,0,3)(2,1,0)[4]>
7 Victoria           <ARIMA(0,1,1)(0,1,1)[4]>
8 Western Australia            <ARIMA(0,1,3)>
谢谢!

最佳答案

那这个呢?

# specificly needed libraries from tidyverse
library(dplyr)
library(purrr)

fit %>%
  mutate(map_dfr(arima, c("fit", "spec")))

#> # A mable: 8 x 10
#> # Key:     State [8]
#>   State                                 arima     p     d     q     P     D     Q constant period
#>   <chr>                               <model> <int> <int> <int> <int> <int> <int> <lgl>     <dbl>
#> 1 ACT                          <ARIMA(0,1,1)>     0     1     1     0     0     0 FALSE         4
#> 2 New South Wales    <ARIMA(0,1,1)(0,1,1)[4]>     0     1     1     0     1     1 FALSE         4
#> 3 Northern Territory <ARIMA(1,0,1)(0,1,1)[4]>     1     0     1     0     1     1 FALSE         4
#> 4 Queensland                   <ARIMA(2,1,2)>     2     1     2     0     0     0 FALSE         4
#> 5 South Australia    <ARIMA(1,0,1)(0,1,1)[4]>     1     0     1     0     1     1 FALSE         4
#> 6 Tasmania           <ARIMA(0,0,3)(2,1,0)[4]>     0     0     3     2     1     0 FALSE         4
#> 7 Victoria           <ARIMA(0,1,1)(0,1,1)[4]>     0     1     1     0     1     1 FALSE         4
#> 8 Western Australia            <ARIMA(0,1,3)>     0     1     3     0     0     0 FALSE         4
它适用于 R >= 4.0dplyr >= 1.0 .arima列是一个列表。我们可以使用 map从列表中提取数据。map将返回一个列表本身,但带有 map_dfr您可以返回一个数据帧,其中 mutate将解释为一组新的列添加到原始数据帧。
请注意,使用此代码,输出和输入保持相同的类( mable )。

关于r - 来自 ARIMA 模型的寓言 : Extracting the p, d,q 规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63392700/

相关文章:

r - ggsubplot (ggplot2) 中的饼图

Python - 切片索引必须是整数或 None 或具有 __index__ 方法

python - 为什么 ARIMA 拟合正确但生成平坦的预测?

具有等式和不等式约束的 R 优化

r - 分组 case_when 返回重复行

r - 在大数据帧 (3.2GB) 中使用 sum 非常慢

Python Auto ARIMA 模型无法正常工作

forecasting - 我是否需要使用 future_map 或 map 来并行化寓言预测?

r - tidyverts 中的分层建模/协调问题

r - 长格式 tsibble 中的多个时间序列