使用 data.table 中的数据列表更新模型列表

Updating a list of models with a list of data in data.table

我正在使用多个时间序列模型,并希望使用 data.table:

来管理它们
pkg <- c("data.table", "magrittr", "forecast")
sapply(pkg, library, character.only = TRUE)

df <- data.frame(
  group = rep(c("a", "b", "c"), each = 10),
  val = sample(1:10, 30, replace = TRUE)
) %>% as.data.table

我可以成功生成模型(并为下一步准备好时间序列):

t1 <- df[, list(
  tsAll = list(val %>% as.ts),
  mod1 = list(val %>% as.ts %>% window(1, 7) %>% ets)
  ), by = group]

我现在正在尝试更新 ets 模型,这涉及将 'tsAll' 传递到 ets 函数并提供要使用的模型 (mod1)。

这不起作用:

t1[, lapply(tsAll, ets, model = mod1)]

我也试过:

 t1[, lapply(tsAll, ets, model = mod1[[1]])]

这 运行s,但看起来每一行都返回了相同的模型。

可能我已经解决了这个问题,但是 运行 进入了这个问题:

Why is using update on a lm inside a grouped data.table losing its model data?

任何人都可以帮助下一步吗?

这是你想要的吗:

t1[, list(lapply(tsAll, ets, model = mod1[[1]])), by = group]$V1

我把结果放在一个列表中,这样数据类型就保留了下来,而不是转换成向量然后按组进行操作(因为每个组都有自己的模型)。