Type: | Package |
Title: | Echo State Networks for Time Series Modeling and Forecasting |
Version: | 1.0.2 |
Description: | Provides a lightweight implementation of functions and methods for fast and fully automatic time series modeling and forecasting using Echo State Networks (ESNs). |
License: | GPL-3 |
URL: | https://github.com/ahaeusser/echos, https://ahaeusser.github.io/echos/ |
BugReports: | https://github.com/ahaeusser/echos/issues |
Depends: | R (≥ 4.0.0), fabletools (≥ 0.3.0) |
Imports: | Rcpp (≥ 1.0.3), RcppArmadillo, tsibble, dplyr, tidyr, rlang, distributional |
LinkingTo: | Rcpp, RcppArmadillo |
Encoding: | UTF-8 |
LazyData: | true |
RoxygenNote: | 7.3.2 |
Suggests: | knitr, rmarkdown, tidyverse, fable, testthat (≥ 3.0.0) |
VignetteBuilder: | knitr |
Config/testthat/edition: | 3 |
NeedsCompilation: | yes |
Packaged: | 2025-06-22 10:46:30 UTC; Alexander Häußer |
Author: | Alexander Häußer |
Maintainer: | Alexander Häußer <alexander-haeusser@gmx.de> |
Repository: | CRAN |
Date/Publication: | 2025-06-23 10:20:10 UTC |
Train an Echo State Network
Description
Train an Echo State Network (ESN) to a univariate time series.
The function automatically manages data pre-processing, reservoir
generation (i.e., internal states) and model estimation and selection.
The function is a wrapper for train_esn()
and intended to be used
in combination with fabletools::model()
.
Usage
ESN(formula, ...)
Arguments
formula |
Model specification (currently not in use). |
... |
Further arguments passed to |
Value
An object of class ESN
.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value))
Filter ESN models
Description
Filter an object of class mdl_df
("mable") to include
ESN models only, i.e., other models like ARIMA or ETS are excluded from
the mable.
Usage
filter_esn(object)
Arguments
object |
An object of class |
Value
An object of class mdl_df
in long-format.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
filter_esn()
Extract fitted values from a trained ESN
Description
Extract fitted values from a trained ESN as tsibble
.
Usage
## S3 method for class 'ESN'
fitted(object, ...)
Arguments
object |
An object of class |
... |
Currently not in use. |
Value
Fitted values extracted from the object.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
fitted()
Forecast an Echo State Network
Description
Forecast an Echo State Network (ESN) from a trained model via
recursive forecasting. Forecast intervals are generated by simulating
future sample path based on a moving block bootstrap of the residuals and
estimating the quantiles from the simulations. The function is a wrapper
for forecast_esn()
and intended to be used in combination with
fabletools::model()
.
Usage
## S3 method for class 'ESN'
forecast(
object,
new_data,
normal = TRUE,
n_sim = 200,
specials = NULL,
xreg = NULL,
...
)
Arguments
object |
An object of class |
new_data |
Forecast horizon (n-step ahead forecast). |
normal |
Logical value. If |
n_sim |
Integer value. The number of future sample path generated during simulation. |
specials |
Currently not in use. |
xreg |
A |
... |
Currently not in use. |
Value
An object of class fbl_ts
("fable").
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
forecast(h = 18)
Forecast an Echo State Network
Description
Forecast an Echo State Network (ESN) from a trained model via recursive forecasting. Forecast intervals are generated by simulating future sample path based on a moving block bootstrap of the residuals and estimating the quantiles from the simulations.
Usage
forecast_esn(
object,
n_ahead = 18,
levels = c(80, 95),
n_sim = 100,
n_seed = 42
)
Arguments
object |
An object of class |
n_ahead |
Integer value. The number of periods for forecasting (i.e. forecast horizon). |
levels |
Integer vector. The levels of the forecast intervals, e.g., 80% and 95%. |
n_sim |
Integer value. The number of future sample path generated during simulation. |
n_seed |
Integer value. The seed for the random number generator (for reproducibility). |
Value
A list
containing:
point
: Numeric vector containing the point forecasts.interval
: Numeric matrix containing the forecast intervals.sim
: Numeric matrix containing the simulated future sample path.levels
: Integer vector. The levels of the forecast intervals.actual
: Numeric vector containing the actual values.fitted
: Numeric vector containing the fitted values.n_ahead
: Integer value. The number of periods for forecasting (forecast horizon).model_spec
: Character value. The model specification as string.
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
xfcst <- forecast_esn(xmodel, n_ahead = 12)
plot(xfcst)
Summary of trained models during random search
Description
Return summary statistics from trained ESN models during random
search as tibble
.
model
: Model identifier.loglik
: Log-likelihood.nobs
: Number of observations.df
: Effective degrees of freedom.lambda
: Regularization parameter.aic
: Akaike Information Criterion.aicc
: Corrected Akaike Information Criterion.bic
: Bayesian Information Criterion.hqc
: Hannan-Quinn Information Criterion.mse
: Mean Squared Error.mae
: Mean Absolute Error.
Usage
## S3 method for class 'ESN'
glance(x, ...)
Arguments
x |
An object of class |
... |
Currently not in use. |
Value
Summary statistics extracted from the object.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
glance()
Checks if object is of class "esn"
Description
Returns TRUE
if the object is of class "esn".
Usage
is.esn(object)
Arguments
object |
object to be tested. |
Value
Logical value. If TRUE
, the object is of class "esn".
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
is.esn(xmodel)
Checks if object is of class "forecast_esn"
Description
Returns TRUE
if the object is of class "forecast_esn".
Usage
is.forecast_esn(object)
Arguments
object |
object to be tested. |
Value
Logical value. If TRUE
, the object is of class "forecast_esn".
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
xfcst <- forecast_esn(xmodel, n_ahead = 12)
is.forecast_esn(xfcst)
M4 dataset
Description
tsibble
with six monthly time series from the M4
Forecasting Competition. The datasets contains the following time series:
M21655 (Demographic), 1995 Jan - 2015 Mar
M21683 (Demographic), 2000 Jan - 2023 Apr
M2717 (Macro), 1996 Jan - 2016 Nov
M28597 (Industry), 1996 Jan - 2016 Dec
M42529 (Finance), 2001 Jan - 2009 Apr
M4813 (Macro), 1994 Apr - 2006 May
Usage
data(m4_data)
Format
A time series object of class tsibble
with 1.152 rows and 4 columns:
series
: Unique identifier ascharacter
(key variable).category
: Category (e.g., Demographic, Macro) asfactor
.index
: Date asyearmonth
(index variable).value
: Value asnumeric
(measurement variable).
Source
Examples
data(m4_data)
Model specification of a trained ESN model
Description
Provides a compact overview of the model specification in the
format ESN({n_states, alpha, rho}, {n_models, df})
.
Usage
## S3 method for class 'ESN'
model_sum(x)
Arguments
x |
An object of class |
Value
Model summary extracted from the object.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value))
Plot internal states of a trained ESN model
Description
Plot internal states (i.e., the reservoir) of a trained ESN model as line chart.
Usage
## S3 method for class 'esn'
plot(x, ...)
Arguments
x |
An object of class |
... |
Further arguments passed to |
Value
Line chart of internal states.
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
plot(xmodel)
Plot forecasts of a trained ESN model
Description
Plot point forecasts and forecast intervals, actual values of a trained ESN model. Optionally, test data (out-of-sample) and fitted values can be added to the plot.
Usage
## S3 method for class 'forecast_esn'
plot(x, test = NULL, fitted = TRUE, interval = TRUE, n_obs = NULL, ...)
Arguments
x |
An object of class |
test |
Numeric vector. Test data, i.e., out-of-sample actual values. |
fitted |
Logical value. If |
interval |
Logical value. If |
n_obs |
Integer value. If |
... |
Currently not in use. |
Value
Line chart of point forecast and actual values.
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
xfcst <- forecast_esn(xmodel, n_ahead = 12)
plot(xfcst)
Print model specification of the trained ESN model
Description
Provides a compact overview of the model specification in the
format ESN({n_states, alpha, rho}, {n_models, df})
.
Usage
## S3 method for class 'esn'
print(x, ...)
Arguments
x |
An object of class |
... |
Currently not in use. |
Value
Print specification of the trained ESN model.
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
print(xmodel)
Provide a detailed summary of the trained ESN model
Description
Provide a detailed summary of the trained ESN model. The
function is a wrapper for summary.esn()
.
Usage
## S3 method for class 'ESN'
report(object, ...)
Arguments
object |
An object of class |
... |
Currently not in use. |
Value
Print detailed model summary.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
report()
Return the reservoir from a trained ESN as tibble
Description
Return the reservoir (internal states) from a
trained ESN as tibble. The function works only for models
of class ESN
.
Usage
reservoir(object)
Arguments
object |
An object of class |
Value
A tibble containing the reservoir (internal states).
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
reservoir()
Extract residuals from a trained ESN
Description
Extract residuals from a trained ESN as tsibble
.
Usage
## S3 method for class 'ESN'
residuals(object, ...)
Arguments
object |
An object of class |
... |
Currently not in use. |
Value
Residuals extracted from the object.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
residuals()
Run reservoir
Description
Run reservoir creates the internal states for the ESN.
Arguments
input |
Numeric matrix containing the input features |
win |
Numeric matrix. The input weight matrix. |
wres |
Numeric matrix. The reservoir weight matrix. |
alpha |
Numeric value. The leakage rate (smoothing parameter). |
Value
states train Numeric matrix with the internal states.
Provide a detailed summary of the trained ESN model
Description
Provide a detailed summary of the trained ESN model.
Usage
## S3 method for class 'esn'
summary(object, ...)
Arguments
object |
An object of class |
... |
Currently not in use. |
Value
Print detailed model summary.
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
summary(xmodel)
Synthetic data
Description
tibble
with ten synthetic time series. The dataset
contains the following time series:
Square Wave
Sawtooth Wave
Harmonic Wave
Harmonic Wave w/ Trend
Amplitude Modulated Wave
Frequency Modulated Wave
AR(1) Process
MA(2) Process
White Noise Process
Random Walk Process
Usage
data(synthetic_data)
Format
An object of class tibble
with 2.000 rows and 3 columns:
variable
: Unique identifier ascharacter
(key variable).index
: Index asinteger
(index variable).value
: Value asnumeric
(measurement variable).
Examples
data(synthetic_data)
Estimated coefficients
Description
Return the estimated coefficients from a trained ESN as
tibble
.
Usage
## S3 method for class 'ESN'
tidy(x, ...)
Arguments
x |
An object of class |
... |
Currently not in use. |
Value
Coefficients extracted from the object.
Examples
library(tsibble)
library(fable)
AirPassengers %>%
as_tsibble() %>%
model("ESN" = ESN(value)) %>%
tidy()
Train an Echo State Network
Description
Train an Echo State Network (ESN) to a univariate time series. The function automatically manages data pre-processing, reservoir generation (i.e., internal states) and model estimation and selection.
Usage
train_esn(
y,
lags = 1,
inf_crit = "bic",
n_diff = NULL,
n_states = NULL,
n_models = NULL,
n_initial = NULL,
n_seed = 42,
alpha = 1,
rho = 1,
density = 0.5,
lambda = c(1e-04, 2),
scale_win = 0.5,
scale_wres = 0.5,
scale_inputs = c(-0.5, 0.5)
)
Arguments
y |
Numeric vector containing the response variable. |
lags |
Integer vector with the lag(s) associated with the input variable. |
inf_crit |
Character value. The information criterion used for variable selection |
n_diff |
Integer vector. The nth-differences of the response variable. |
n_states |
Integer value. The number of internal states per reservoir. |
n_models |
Integer value. The maximum number of (random) models to train for model selection. |
n_initial |
Integer value. The number of observations of internal states for initial drop out (throw-off). |
n_seed |
Integer value. The seed for the random number generator (for reproducibility). |
alpha |
Numeric value. The leakage rate (smoothing parameter) applied to the reservoir. |
rho |
Numeric value. The spectral radius for scaling the reservoir weight matrix. |
density |
Numeric value. The connectivity of the reservoir weight matrix (dense or sparse). |
lambda |
Numeric vector. Lower and upper bound of lambda sequence for ridge regression. |
scale_win |
Numeric value. The lower and upper bound of the uniform distribution for scaling the input weight matrix. |
scale_wres |
Numeric value. The lower and upper bound of the uniform distribution for scaling the reservoir weight matrix. |
scale_inputs |
Numeric vector. The lower and upper bound for scaling the time series data. |
Value
A list
containing:
actual
: Numeric vector containing the actual values.fitted
: Numeric vector containing the fitted values.resid
: Numeric vector containing the residuals.states_train
: Numeric matrix containing the internal states.method
: Alist
containing several objects and meta information of the trained ESN (weight matrices, hyperparameters, model metrics, etc.).
Examples
xdata <- as.numeric(AirPassengers)
xmodel <- train_esn(y = xdata)
summary(xmodel)