更新数据表中的Arima

更新数据表中的Arima,r,data.table,forecasting,arima,R,Data.table,Forecasting,Arima,我的问题的一个很小的版本是这样的: 我有很多时间序列 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

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

我有很多时间序列

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
库(data.table)
图书馆(预测)
图书馆(tidyverse)

x我有一个解决方案,但我想知道是否有更多的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]])

}
x
models <-setDT(data)[,list(model=list(Arima(value, model = models$model))), by = var]
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]])

}