使用适合不同组的模型对一组进行寓言预测结果
Fable forecast results for one group using a model fit on a different group
我正在尝试使用适合一组时间序列的 fable
模型来预测另一组时间序列:
library(dplyr)
library(fable)
library(feasts)
library(tsibble)
library(fabletools)
df <- data.frame(
id = rep(c('A', 'B'), each = 5),
date = seq(as.Date('2020-01-01'), by = "month", length.out = 10),
y = rnorm(10)
)
train_tsbl <- as_tsibble(filter(df, id == 'A'), key = id, index = date)
test_tsbl <- as_tsibble(filter(df, id == 'B'), key = id, index = date)
model <- train_tsbl %>%
model(lm = TSLM(y ~ trend()))
但是,当预测到“测试”集 – 对应于 ID 'B' 的记录时,forecast
调用 returns 'B'
的空结果 – 测试设置。
> forecast(model, test_tsbl)
# A fable: 0 x 4 [?]
# Key: id, .model [0]
# … with 4 variables: id <fct>, .model <chr>, date <date>, y <dist>
但对于 train_tsbl
,以下内容:
> forecast(model, train_tsbl)
# A fable: 5 x 5 [1D]
# Key: id, .model [1]
id .model date y .mean
<fct> <chr> <date> <dist> <dbl>
1 A lm 2020-01-01 N(0.19, 1.8) 0.191
2 A lm 2020-02-01 N(-0.12, 1.5) -0.122
3 A lm 2020-03-01 N(-0.42, 1.3) -0.416
4 A lm 2020-04-01 N(-0.73, 1.5) -0.730
5 A lm 2020-05-01 N(-1, 1.8) -1.03
我似乎找不到任何指定预测到新 ID 的选项。这是怎么回事?
您正在使用 id
作为键,这意味着您为每个键安装了一个单独的模型。但是您的训练数据不包含 id==B
,因此没有 B
模型。
很难知道您在这里期待什么。 B
行要使用什么模型?
如果要使用A
模型,则设置测试集B
替换为A
:
> forecast(model, test_tsbl %>% mutate(id = 'A'))
# A fable: 5 x 5 [1D]
# Key: id, .model [1]
id .model date y .distribution
<chr> <chr> <date> <dbl> <dist>
1 A lm 2020-06-01 -0.100 N(-0.10, 0.32)
2 A lm 2020-07-01 -0.217 N(-0.22, 0.42)
3 A lm 2020-08-01 -0.338 N(-0.34, 0.56)
4 A lm 2020-09-01 -0.459 N(-0.46, 0.73)
5 A lm 2020-10-01 -0.575 N(-0.58, 0.93)
我正在尝试使用适合一组时间序列的 fable
模型来预测另一组时间序列:
library(dplyr)
library(fable)
library(feasts)
library(tsibble)
library(fabletools)
df <- data.frame(
id = rep(c('A', 'B'), each = 5),
date = seq(as.Date('2020-01-01'), by = "month", length.out = 10),
y = rnorm(10)
)
train_tsbl <- as_tsibble(filter(df, id == 'A'), key = id, index = date)
test_tsbl <- as_tsibble(filter(df, id == 'B'), key = id, index = date)
model <- train_tsbl %>%
model(lm = TSLM(y ~ trend()))
但是,当预测到“测试”集 – 对应于 ID 'B' 的记录时,forecast
调用 returns 'B'
的空结果 – 测试设置。
> forecast(model, test_tsbl)
# A fable: 0 x 4 [?]
# Key: id, .model [0]
# … with 4 variables: id <fct>, .model <chr>, date <date>, y <dist>
但对于 train_tsbl
,以下内容:
> forecast(model, train_tsbl)
# A fable: 5 x 5 [1D]
# Key: id, .model [1]
id .model date y .mean
<fct> <chr> <date> <dist> <dbl>
1 A lm 2020-01-01 N(0.19, 1.8) 0.191
2 A lm 2020-02-01 N(-0.12, 1.5) -0.122
3 A lm 2020-03-01 N(-0.42, 1.3) -0.416
4 A lm 2020-04-01 N(-0.73, 1.5) -0.730
5 A lm 2020-05-01 N(-1, 1.8) -1.03
我似乎找不到任何指定预测到新 ID 的选项。这是怎么回事?
您正在使用 id
作为键,这意味着您为每个键安装了一个单独的模型。但是您的训练数据不包含 id==B
,因此没有 B
模型。
很难知道您在这里期待什么。 B
行要使用什么模型?
如果要使用A
模型,则设置测试集B
替换为A
:
> forecast(model, test_tsbl %>% mutate(id = 'A'))
# A fable: 5 x 5 [1D]
# Key: id, .model [1]
id .model date y .distribution
<chr> <chr> <date> <dbl> <dist>
1 A lm 2020-06-01 -0.100 N(-0.10, 0.32)
2 A lm 2020-07-01 -0.217 N(-0.22, 0.42)
3 A lm 2020-08-01 -0.338 N(-0.34, 0.56)
4 A lm 2020-09-01 -0.459 N(-0.46, 0.73)
5 A lm 2020-10-01 -0.575 N(-0.58, 0.93)