tidyverts / tidyverts/fabletools

Incorrect error messages when predefined parameters in ets models when using future calls

Open
#412 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

parellel
Dominant language
R
Stars
98
Forks
37
PR merge metrics
No merged PRs in 30d

Description

I seem to be getting error messages about objects not being found when I use an object from outside the ets call to defined something in the ETS formula. This only occurs in a very specific scenario where I'm using a multisession future (not tested multicore) and parameters are out of range

Could be related to #405

See the code below, the first couple of examples suffice for a minimal working example

library(tsibble)
library(fabletools)
library(future)

# specify a parameter outside the ETS call
alpha <- 0.666

# run model, no paralleism

fabletools::model(
  tourism,
  ets = fable::ETS(
    Trips ~ error("A") +
      trend(
        "A",
        alpha = alpha,
        beta = 0.610
      ) +
      season(
        "A",
        period = "4 year",
        gamma = 0.1
      )
  )
)

#correct error, parameters out of range

future::plan(future::sequential())

fabletools::model(
  tourism,
  ets = fable::ETS(
   Trips ~ error("A") +
      trend(
        "A",
        alpha = alpha,
        beta = 0.610
      ) +
      season(
        "A",
        period = "4 year",
        gamma = 0.1
      )
  )
)

#correct error, parameters out of range

future::plan(future::multisession(workers = 2))

fabletools::model(
  tourism,
  ets = fable::ETS(
    Trips ~ error("A") +
      trend(
        "A",
        alpha = alpha,
        beta = 0.610
      ) +
      season(
        "A",
        period = "4 year",
        gamma = 0.1
      )
  )
)

# error about how alpha cannot be found

lambda <- 0.3
fabletools::model(
  tourism,
  ets = fable::ETS(
   Trips ~ error("A") +
      trend(
        "A",
        alpha = 0.666,
        beta = 0.610
      ) +
      season(
        "A",
        period = "4 year",
        gamma = 0.1
      )
  )
)

# different error (also wrong) if in the transformation

# but works if not out of range

fabletools::model(
  tourism,
  ets = fable::ETS(
   Trips ~ error("A") +
      trend(
        "A",
        alpha = alpha,
        beta = 0.610
      ) +
      season(
        "A",
        period = "1 year",
        gamma = 0.1
      )
  )
)

fabletools::model(
  tourism,
  ets = fable::ETS(
    fabletools::box_cox(Trips, lambda) ~ error("A") +
      trend(
        "A",
        alpha = 0.666,
        beta = 0.610
      ) +
      season(
        "A",
        period = "1 year",
        gamma = 0.1
      )
  )
)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or test is named. Start by running the minimal R examples with sequential and multisession plans, then compare the reported parameter and object-not-found errors. Done means the multisession cases handle predefined and transformed parameters consistently with sequential execution, including out-of-range parameters.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.