Use a model's fitted distribution to simulate additional data with similar
behaviour to the response. This is a tidy implementation of
stats::simulate()
.
A mable.
The data to be generated (time index and exogenous regressors)
The simulation horizon (can be used instead of new_data
for regular
time series with no exogenous regressors).
The number of replications.
The seed for the random generation from distributions.
Additional arguments for individual simulation methods.
If TRUE, then forecast distributions are computed using simulation with resampled errors.
The bootstrap block size specifies the number of contiguous residuals to be taken in each bootstrap sample.
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.
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 4 [1M]
#> # Key: .model, .rep [5]
#> .model index .rep .sim
#> <chr> <mth> <chr> <dbl>
#> 1 lm 1974 Jan 1 2238.
#> 2 lm 1974 Feb 1 1856.
#> 3 lm 1974 Mar 1 2310.
#> 4 lm 1974 Apr 1 1623.
#> 5 lm 1974 May 1 1457.
#> 6 lm 1974 Jun 1 946.
#> 7 lm 1974 Jul 1 1164.
#> 8 lm 1974 Aug 1 1070.
#> 9 lm 1974 Sep 1 1106.
#> 10 lm 1974 Oct 1 1451.
#> # ℹ 350 more rows