【问题标题】:Updating Arima in Data.Table在 Data.Table 中更新 Arima
【发布时间】:2018-02-13 05:11:47
【问题描述】:

我的问题的一个非常小的版本是这样的:

我有很多时间序列

library(data.table)
library(forecast)
library(tidyverse)


 x <-arima.sim(list(order = c(1,1,0), ar = 0.7), n = 100)
 y <- arima.sim(list(order = c(1,1,0), ar = 0.1), n = 100)

data <- data.frame(x,y) %>% gather(var,value) # place into a data.frame

我已经使用 auto.arima 和 data.table 使用了出色的预测包对这些进行了建模(实际上我有 400 多个 ts)

models <- setDT(data)[,list(model=list(auto.arima(value))), by = var]

这很神奇,我的问题是如何为新数据更新 Arima 模型?

我一直在尝试做一些类似的事情

models <-setDT(data)[,list(model=list(Arima(value, model = models$model))), by = var]

但是我没有运气!

【问题讨论】:

    标签: r data.table forecasting arima


    【解决方案1】:

    我有一个解决方案 - 但很想知道是否有更多 R/data.table 方法可以做到这一点?

    注意:在寻找解决方案时,我将数据更改为模拟的 ARIMA 流程 - 以确保模型得到正确更新。

    解决方案:

    x <-arima.sim(list(order = c(1,1,0), ar = 0.7), n = 100)
    y <- arima.sim(list(order = c(1,1,0), ar = 0.1), n = 100)
    
    
    data <- data.frame(x,y) %>% gather(var,value) # place into a data.frame
    
    models <- setDT(data)[,list(model=list(auto.arima(value))), by = var]
    
    
    x <-arima.sim(list(order = c(1,1,0), ar = 0.7), n = 200)
    y <- arima.sim(list(order = c(1,1,0), ar = 0.1), n = 200)
    
    
    data_updated <- data.frame(x,y) %>% gather(var,value) # place updated data into data.frame
    
    data_updated <- setDT(data_updated)[, list(dat=list(value)), by = var] # turn this into lists
    
    #Use a loop to update the models
    
    for(i in unique(models$var)){
    
      models[var == paste0(i)][[1,2]] <- Arima(data_updated[var == paste0(i)][[1,2]] ,model = models[var == paste0(i)][[1,2]])
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      相关资源
      最近更新 更多