Use a model's fitted distribution to simulate additional data with similar behaviour to the response. This is a tidy implementation of stats::simulate().

# S3 method for mdl_df
generate(x, new_data = NULL, h = NULL, times = 1, seed = NULL, ...)

# S3 method for mdl_ts
generate(
  x,
  new_data = NULL,
  h = NULL,
  times = 1,
  seed = NULL,
  bootstrap = FALSE,
  bootstrap_block_size = 1,
  ...
)

Arguments

x

A mable.

new_data

The data to be generated (time index and exogenous regressors)

h

The simulation horizon (can be used instead of new_data for regular time series with no exogenous regressors).

times

The number of replications.

seed

The seed for the random generation from distributions.

...

Additional arguments for individual simulation methods.

bootstrap

If TRUE, then forecast distributions are computed using simulation with resampled errors.

bootstrap_block_size

The bootstrap block size specifies the number of contiguous residuals to be taken in each bootstrap sample.

Details

Innovations are sampled by the model's assumed error distribution. If bootstrap is TRUE, innovations will be sampled from the model's residuals. If new_data contains the .innov column, those values will be treated as innovations for the simulated paths..

Examples

library(fable)
library(dplyr)
UKLungDeaths <- as_tsibble(cbind(mdeaths, fdeaths), pivot_longer = FALSE)
UKLungDeaths %>% 
  model(lm = TSLM(mdeaths ~ fourier("year", K = 4) + fdeaths)) %>% 
  generate(UKLungDeaths, times = 5)
#> # A tsibble: 360 x 6 [1M]
#> # Key:       .model, .rep [5]
#>    .model .rep     index mdeaths fdeaths  .sim
#>    <chr>  <chr>    <mth>   <dbl>   <dbl> <dbl>
#>  1 lm     1     1974 Jan    2134     901 2238.
#>  2 lm     1     1974 Feb    1863     689 1856.
#>  3 lm     1     1974 Mar    1877     827 2310.
#>  4 lm     1     1974 Apr    1877     677 1623.
#>  5 lm     1     1974 May    1492     522 1457.
#>  6 lm     1     1974 Jun    1249     406  946.
#>  7 lm     1     1974 Jul    1280     441 1164.
#>  8 lm     1     1974 Aug    1131     393 1070.
#>  9 lm     1     1974 Sep    1209     387 1106.
#> 10 lm     1     1974 Oct    1492     582 1451.
#> # ℹ 350 more rows