在 tsibble 中设置索引
Setting index in a tsibble
你是否曾经回头看你的旧问题并感到有点尴尬?我刚刚做了,现在我做了。在某个时候我可能会对这个有同样的感觉。
我正在尝试将我的预测工作转移到 fable
。在此过程中,我尝试使用 tsibble
。以前使用 ts
对象时,我只是设置了开始年份和频率。现在 tsibble
正在寻找日期对象。但是我有一年两次的数据(秋季和 spring 学期)。并且变量是不规则的(我想保留)。 Forecast
做得非常准确 "forecasting" 它。我的大学用 3 位数的年份和术语命名术语。所以 2019-2020 学年的秋季是 2204,其中 4 代表秋季。 spring 是 2207.
基本上,我在网上找不到索引在非日期对象意义上不规则的情况的示例?有什么提示吗?谢谢。
好吧,如果它要了我的命,我会尝试解决这个问题。我看到他们添加了一个有序因子作为可能的索引。所以我会试试的。
这是我遇到困难的可重现示例。
enroll <- data.frame(term = c(2194L, 2197L, 2204L, 2207L),
ECO110 = c(518, 410, 537, 386),
ECO120 = c(315, 405, 419, 401))
enroll.tb <- enroll %>%
mutate(term = ordered(term)) %>%
select(term, starts_with("ECO")) %>%
pivot_longer(-term, names_to = "class", values_to = "enroll")
enroll.tb <- as_tsibble(enroll.tb, key = class, index = term)
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(h = 2)
现在它让我发出了 tsibble,但寓言产生了错误:
Error: Unsupported index type: logical
Mitchell 的出色回答 。
不过似乎factor抛出了更多的问题,结果都不是很固定。 ARIMA 模型很好用,买 ETS 不行。
fc <- enroll.tb %>%
model(ets = ETS()) %>%
forecast(new_data = enroll.future)
抛出错误 Error: A model specification is trained to a dataset using the
model()function.
这里的问题是您的索引变量是一个有序因子,forecast()
不知道如何生成该索引的未来值。
我添加了一个信息更丰富的错误 (02fb2a),所以它现在应该说:
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(h = 2)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
#> Error: Cannot automatically create `new_data` from an factor/ordered time index. Please provide `new_data` directly.
由 reprex package (v0.3.0)
于 2020-01-23 创建
正如错误现在所暗示的那样,要生成预测,您需要在 new_data
中指定适当的因子水平。
enroll.future <- tsibble(
term = rep(ordered(c(2214L, 2217L)), 2),
class = rep(c("ECO110", "ECO120"), each = 2),
index = term, key = class)
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(new_data = enroll.future)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
fc
#> # A fable: 4 x 5 [1]
#> # Key: class, .model [2]
#> class .model term enroll .distribution
#> <chr> <chr> <ord> <dbl> <dist>
#> 1 ECO110 arima 2214 532. N(532, 1380)
#> 2 ECO110 arima 2217 385. N(385, 1380)
#> 3 ECO120 arima 2214 385 N(385, 2237)
#> 4 ECO120 arima 2217 385 N(385, 2237)
由 reprex package (v0.3.0)
于 2020-01-23 创建
你是否曾经回头看你的旧问题并感到有点尴尬?我刚刚做了,现在我做了。在某个时候我可能会对这个有同样的感觉。
我正在尝试将我的预测工作转移到 fable
。在此过程中,我尝试使用 tsibble
。以前使用 ts
对象时,我只是设置了开始年份和频率。现在 tsibble
正在寻找日期对象。但是我有一年两次的数据(秋季和 spring 学期)。并且变量是不规则的(我想保留)。 Forecast
做得非常准确 "forecasting" 它。我的大学用 3 位数的年份和术语命名术语。所以 2019-2020 学年的秋季是 2204,其中 4 代表秋季。 spring 是 2207.
基本上,我在网上找不到索引在非日期对象意义上不规则的情况的示例?有什么提示吗?谢谢。
好吧,如果它要了我的命,我会尝试解决这个问题。我看到他们添加了一个有序因子作为可能的索引。所以我会试试的。
这是我遇到困难的可重现示例。
enroll <- data.frame(term = c(2194L, 2197L, 2204L, 2207L),
ECO110 = c(518, 410, 537, 386),
ECO120 = c(315, 405, 419, 401))
enroll.tb <- enroll %>%
mutate(term = ordered(term)) %>%
select(term, starts_with("ECO")) %>%
pivot_longer(-term, names_to = "class", values_to = "enroll")
enroll.tb <- as_tsibble(enroll.tb, key = class, index = term)
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(h = 2)
现在它让我发出了 tsibble,但寓言产生了错误:
Error: Unsupported index type: logical
Mitchell 的出色回答
不过似乎factor抛出了更多的问题,结果都不是很固定。 ARIMA 模型很好用,买 ETS 不行。
fc <- enroll.tb %>%
model(ets = ETS()) %>%
forecast(new_data = enroll.future)
抛出错误 Error: A model specification is trained to a dataset using the
model()function.
这里的问题是您的索引变量是一个有序因子,forecast()
不知道如何生成该索引的未来值。
我添加了一个信息更丰富的错误 (02fb2a),所以它现在应该说:
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(h = 2)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
#> Error: Cannot automatically create `new_data` from an factor/ordered time index. Please provide `new_data` directly.
由 reprex package (v0.3.0)
于 2020-01-23 创建正如错误现在所暗示的那样,要生成预测,您需要在 new_data
中指定适当的因子水平。
enroll.future <- tsibble(
term = rep(ordered(c(2214L, 2217L)), 2),
class = rep(c("ECO110", "ECO120"), each = 2),
index = term, key = class)
fc <- enroll.tb %>%
model(arima = ARIMA()) %>%
forecast(new_data = enroll.future)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
fc
#> # A fable: 4 x 5 [1]
#> # Key: class, .model [2]
#> class .model term enroll .distribution
#> <chr> <chr> <ord> <dbl> <dist>
#> 1 ECO110 arima 2214 532. N(532, 1380)
#> 2 ECO110 arima 2217 385. N(385, 1380)
#> 3 ECO120 arima 2214 385 N(385, 2237)
#> 4 ECO120 arima 2217 385 N(385, 2237)
由 reprex package (v0.3.0)
于 2020-01-23 创建