寓言:从 ARIMA 模型中提取 p、d、q 规范
Fable: Extracting the p,d,q specification from an ARIMA model
我一直在使用 tidy forecasting 软件包 fable(非常有用)。
我想知道是否有一种简单的方法可以从 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)>
我知道规格存储在模型 [[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.0
和 dplyr >= 1.0
。
arima
列是一个列表。我们可以使用 map
从列表中提取数据。
map
将 return 列表本身,但是使用 map_dfr
你可以 return 一个数据框,mutate
将解释为一组新的列添加到原始数据框。
请注意,使用此代码,输出和输入保持相同 class (mable
)。
我一直在使用 tidy forecasting 软件包 fable(非常有用)。
我想知道是否有一种简单的方法可以从 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)>
我知道规格存储在模型 [[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.0
和 dplyr >= 1.0
。
arima
列是一个列表。我们可以使用 map
从列表中提取数据。
map
将 return 列表本身,但是使用 map_dfr
你可以 return 一个数据框,mutate
将解释为一组新的列添加到原始数据框。
请注意,使用此代码,输出和输入保持相同 class (mable
)。