config-i1 / smooth

The set of functions used for time series analysis and in forecasting.
89 stars 20 forks source link

Predefined persistence vector can only be used with preselected ETS model #190

Closed Steviey closed 2 years ago

Steviey commented 2 years ago

I'm currently trying smooth non-native- with modeltime-tidymodels via exp_smooth()....

https://business-science.github.io/modeltime/reference/exp_smoothing.html

While training the alpha and beta params via smooth_level() and smooth_trend() I get the following message:

Predefined persistence vector can only be used with preselected ETS model

I also notice no metrics-improvements while training.

image

What could this mean, in the smooth/tidymodels-context?

config-i1 commented 2 years ago

I haven't used modeltime-tidymodels, so I don't know how they call the functions. But this warning typically appears, when the model is not selected. So, I'm speculating that you also need to provide model="ANN" or whatever model you want to use.

Steviey commented 2 years ago

Thank you Ivan, this was my first idea too. But then we have a doubled declaration of param "model".

model_spec_exp <- exp_smoothing(
            smooth_level   = param1
            ,smooth_trend  = param2
        ) %>%
        set_engine("smooth_es",holdout=FALSE,model='AAN')
Error:
frequency = 16 observations per 1 quarter
x Fold02: preprocessor 1/1, model 5/5: Error in smooth::es(outcome, model = model_ets, persistence = persistence, : formal argument "model" matched by multiple actual arguments

I have to ask Matt (modeltime) for this.

Steviey commented 2 years ago

... my fault....

model_spec_exp <- exp_smoothing(
     error     = as.character(fitSetupList[['error']])
    ,trend     = as.character(fitSetupList[['trend']])
    ,season    = as.character(fitSetupList[['season']])
    #,damping   = as.character(fitSetupList[['damping']])
    ,smooth_level   = as.numeric(resObj$bestParams$smooth_level)
    ,smooth_trend  = as.numeric(resObj$bestParams$smooth_trend)
) %>%
set_engine("smooth_es",holdout=FALSE)