我的目标是创建一个函数,您可以在其中输入要预测的变量,然后在多种类型的模型(即 Naive、ETS、Mean)上使用交叉验证,然后使用“拉”函数,我将拉出模型RMSE 最低,那么我会用最好的模型预测 1 步。
但是,我在倒数第二行遇到问题,在预测时使用字符值“best.model”作为模型的输入。(错误在您自己运行的代码下方)。
这是更有意义的代码:
library(fpp3)
tsibble <- prices
function.fc <- function (variable) {
## cross validation models
cv.fit <- tsibble %>%
select(year, !!sym(variable)) %>%
stretch_tsibble(.init = 180, .step = 1) %>%
filter(.id != max(.id)) %>%
model(
MEAN(!!sym(variable)),
NAIVE(!!sym(variable))
)
## cv forecasts
cv.fc <- cv.fit %>%
forecast(h = 1)
## cv accuracy
cv.accuracy <- cv.fc %>%
accuracy(tsibble)
## pulls out the name of the best model
best.model <- cv.accuracy %>%
select(.model, .type, RMSE) %>%
arrange(RMSE) %>%
filter(row_number(RMSE) == 1) %>%
pull(.model)
## pulls out 1 step forecast
fc <- model(.data = tsibble, noquote(best.model)) %>%
forecast(h = 1)
return(fc)
}
function.fc("copper")
Error: Model definition(s) incorrectly created: noquote(best.model) Check that specified model(s) are model definitions. Run `rlang::last_error()` to see where the error occurred
如您所见,我已尝试使用“取消引用”功能,但这仍然不起作用。有人对使用什么有任何建议吗?我一直在努力寻找与我的问题有关的其他帖子。