使用 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
我把结果放在一个列表中,这样数据类型就保留了下来,而不是转换成向量然后按组进行操作(因为每个组都有自己的模型)。
我正在使用多个时间序列模型,并希望使用 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
我把结果放在一个列表中,这样数据类型就保留了下来,而不是转换成向量然后按组进行操作(因为每个组都有自己的模型)。