0

私の目的は、予測する変数を入力する関数を作成し、複数のタイプのモデル (つまり、ナイーブ、ETS、平均) でクロス検証を使用し、「プル」関数を使用してモデルを引き出すことです。 RMSE が最も低い場合は、最適なモデルで 1 歩先を予測します。

ただし、予測時にモデルの入力として文字値「best.model」を使用して、最後の 2 行目に問題があります。(エラーは、自分で実行するコードの下にあります)。

より意味のあるコードは次のとおりです。

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

ご覧のとおり、「unquote」機能を使用してみましたが、まだ機能しません。誰が何を使用するかについて何か提案がありますか? 私の問題で他の投稿を見つけるのに苦労しました。

4

2 に答える 2