R语言 在一个tibble中的多个表上执行建模

vohkndzv  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(142)

我有一组数据,其形式如下:

library(tidyverse)
library(readxl)
library(tsibble)
library(tsibbledata)
library(purrr)
library(lubridate)
library(fable)
library(fabletools)
library(tidymodels)
library(feasts)

data <- tibble(Date=yearweek(mdy("5/6/2022","5/14/2022","5/21/2022")),
           value=c(3,5,7))

ts_data <- tsibble(data)

new_test_data <- tibble(`Formula ID` = c(1),
                    `Formula Name` = c("Flubber"),
                    data=list(data),data_ts=list(ts_data))

这将生成如下所示的tibble:
| 配方ID|公式名称|资料|数据_ts|
| - ------| - ------| - ------| - ------|
| 1个|弗卢伯|2个变量|2个变量|
其中data是tibble,data_ts是tsibble。我需要为时间序列data_ts创建一个模型,并对时间序列进行预测。我一直在尝试使用purrr来Map模型,如下所示:

new_test_data < new_test_data %>%
   mutate(model = map(data_ts,ARIMA(data_ts,value)))

不幸的是,这并不起作用。有人能给我一些关于如何使用这个Map来创建ARIMA模型和模型预测的建议吗?我在new_test_data中有大约70个数据集,非常适合这种类型的建模。
非常感谢,
肖恩路

xqkwcwgp

xqkwcwgp1#

也许这有助于你开始。要估计一个ARIMA或任何其他模型,你必须使用model(),它的第一个参数接受一个数据集和一个或多个模型规范,例如ARIMA。此外,当使用map循环一列数据集时,你必须传递一个元素或数据集到model(),而不是列表列本身。

library(tidyverse)
library(lubridate)
library(fabletools)
library(fable)
library(tsibble)

new_test_data <- new_test_data %>%
  mutate(model = map(data_ts, ~ model(.x, ARIMA(value))))

new_test_data$model |> map(report)
#> Series: value 
#> Model: ARIMA(1,0,0) w/ mean 
#> 
#> Coefficients:
#>       ar1  constant
#>         0    5.0000
#> s.e.    1    0.9428
#> 
#> sigma^2 estimated as 8:  log likelihood=-5.73
#> AIC=17.46   AICc=-6.54   BIC=14.75
#> [[1]]
#> # A mable: 1 x 1
#>           `ARIMA(value)`
#>                  <model>
#> 1 <ARIMA(1,0,0) w/ mean>

相关问题