| Title: | Echo State Networks for Time Series Modeling and Forecasting |
|---|---|
| Description: | Provides a lightweight implementation of functions and methods for fast and fully automatic time series modeling and forecasting using Echo State Networks (ESNs). |
| Authors: | Alexander Häußer [aut, cre, cph] (ORCID: <https://orcid.org/0009-0000-5419-8479>) |
| Maintainer: | Alexander Häußer <[email protected]> |
| License: | GPL-3 |
| Version: | 1.0.3 |
| Built: | 2026-05-30 08:56:15 UTC |
| Source: | https://github.com/ahaeusser/echos |
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().
ESN(formula, ...)ESN(formula, ...)
formula |
Model specification (currently not in use). |
... |
Further arguments passed to |
An object of class ESN.
Other tidy functions:
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value))library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value))
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.
filter_esn(object)filter_esn(object)
object |
An object of class |
An object of class mdl_df in long-format.
Other tidy functions:
ESN(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% filter_esn()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% filter_esn()
Extract fitted values from a trained ESN as tsibble.
## S3 method for class 'ESN' fitted(object, ...)## S3 method for class 'ESN' fitted(object, ...)
object |
An object of class |
... |
Currently not in use. |
Fitted values extracted from the object.
Other tidy functions:
ESN(),
filter_esn(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% fitted()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% fitted()
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.
forecast_esn( object, n_ahead = 18, levels = c(80, 95), n_sim = 100, n_seed = 42 )forecast_esn( object, n_ahead = 18, levels = c(80, 95), n_sim = 100, n_seed = 42 )
object |
An object of class |
n_ahead |
Integer value. The number of periods for forecasting (i.e. forecast horizon). |
levels |
Numeric vector. The levels of the forecast intervals (in percent), e.g., |
n_sim |
Integer value. The number of simulated future paths used to compute forecast intervals via a moving block bootstrap of the (demeaned) in-sample residuals. If |
n_seed |
Integer value. The seed for the random number generator (for reproducibility). |
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.
std: Numeric vector with standard deviations.
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.
Häußer, A. (2026). Echo State Networks for Time Series Forecasting: Hyperparameter Sweep and Benchmarking. arXiv preprint arXiv:2602.03912, 2026. https://arxiv.org/abs/2602.03912
Jaeger, H. (2001). The “echo state” approach to analysing and training recurrent neural networks with an erratum note. Bonn, Germany: German National Research Center for Information Technology GMD Technical Report, 148(34):13.
Jaeger, H. (2002). Tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the "echo state network" approach.
Lukosevicius, M. (2012). A practical guide to applying echo state networks. In Neural Networks: Tricks of the Trade: Second Edition, pages 659–686. Springer.
Lukosevicius, M. and Jaeger, H. (2009). Reservoir computing approaches to recurrent neural network training. Computer Science Review, 3(3):127–149.
Other base functions:
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) plot(xfcst)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) plot(xfcst)
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().
## S3 method for class 'ESN' forecast( object, new_data, normal = TRUE, n_sim = 200, specials = NULL, xreg = NULL, ... )## S3 method for class 'ESN' forecast( object, new_data, normal = TRUE, n_sim = 200, specials = NULL, xreg = NULL, ... )
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. |
An object of class fbl_ts ("fable").
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% forecast(h = 18)library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% forecast(h = 18)
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.
## S3 method for class 'ESN' glance(x, ...)## S3 method for class 'ESN' glance(x, ...)
x |
An object of class |
... |
Currently not in use. |
Summary statistics extracted from the object.
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% glance()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% glance()
Returns TRUE if the object is of class esn.
is.esn(object)is.esn(object)
object |
object to be tested. |
Logical value. If TRUE, the object is of class esn.
Other base functions:
forecast_esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) is.esn(xmodel)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) is.esn(xmodel)
Returns TRUE if the object is of class forecast_esn.
is.forecast_esn(object)is.forecast_esn(object)
object |
object to be tested. |
Logical value. If TRUE, the object is of class forecast_esn.
Other base functions:
forecast_esn(),
is.esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) is.forecast_esn(xfcst)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) is.forecast_esn(xfcst)
Returns TRUE if the object is of class tune_esn.
is.tune_esn(object)is.tune_esn(object)
object |
object to be tested. |
Logical value. If TRUE, the object is of class tune_esn.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) is.tune_esn(fit)xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) is.tune_esn(fit)
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
data(m4_data)data(m4_data)
A time series object of class tsibble with 1.152 rows and 4 columns:
series: Unique identifier as character (key variable).
category: Category (e.g., Demographic, Macro) as factor.
index: Date as yearmonth (index variable).
value: Value as numeric (measurement variable).
data(m4_data)data(m4_data)
Provides a compact overview of the model specification in the
format ESN({n_states, alpha, rho}, {n_models, df}).
## S3 method for class 'ESN' model_sum(x)## S3 method for class 'ESN' model_sum(x)
x |
An object of class |
Model summary extracted from the object.
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
report.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value))library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value))
Plot internal states (i.e., the reservoir) of a trained ESN model as line chart.
## S3 method for class 'esn' plot(x, ...)## S3 method for class 'esn' plot(x, ...)
x |
An object of class |
... |
Further arguments passed to |
Line chart of internal states.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) plot(xmodel)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) plot(xmodel)
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.
## S3 method for class 'forecast_esn' plot(x, test = NULL, fitted = TRUE, interval = TRUE, n_obs = NULL, ...)## S3 method for class 'forecast_esn' plot(x, test = NULL, fitted = TRUE, interval = TRUE, n_obs = NULL, ...)
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 |
... |
Further arguments passed to |
Line chart of point forecast and actual values.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) plot(xfcst)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) xfcst <- forecast_esn(xmodel, n_ahead = 12) plot(xfcst)
Plot actual values and the point forecasts from the best
hyperparameter combination selected via tune.esn() using the
selected accuracy metric. Forecasts are shown as separate line segments
for each test split, with vertical dashed lines marking the starts of test
windows.
## S3 method for class 'tune_esn' plot(x, metric = "mse", ...)## S3 method for class 'tune_esn' plot(x, metric = "mse", ...)
x |
An object of class |
metric |
Character value. The metric used to select the best hyperparameter combination ( |
... |
Further arguments passed to |
Line chart of point forecast and actual values.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) plot(fit)xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) plot(fit)
Provides a compact overview of the model specification in the
format ESN({n_states, alpha, rho}, {n_models, df}).
## S3 method for class 'esn' print(x, ...)## S3 method for class 'esn' print(x, ...)
x |
An object of class |
... |
Currently not in use. |
Print specification of the trained ESN model.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
summary.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) print(xmodel)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) print(xmodel)
Provide a detailed summary of the trained ESN model. The
function is a wrapper for summary.esn().
## S3 method for class 'ESN' report(object, ...)## S3 method for class 'ESN' report(object, ...)
object |
An object of class |
... |
Currently not in use. |
Print detailed model summary.
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
reservoir(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% report()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% report()
Return the reservoir (internal states) from a
trained ESN as tibble. The function works only for models
of class ESN.
reservoir(object)reservoir(object)
object |
An object of class |
A tibble containing the reservoir (internal states).
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
residuals.ESN(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% reservoir()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% reservoir()
Extract residuals from a trained ESN as tsibble.
## S3 method for class 'ESN' residuals(object, ...)## S3 method for class 'ESN' residuals(object, ...)
object |
An object of class |
... |
Currently not in use. |
Residuals extracted from the object.
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
tidy.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% residuals()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% residuals()
Run reservoir creates the internal states for the ESN.
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). |
states train Numeric matrix with the internal states.
Provide a detailed summary of the trained ESN model.
## S3 method for class 'esn' summary(object, ...)## S3 method for class 'esn' summary(object, ...)
object |
An object of class |
... |
Currently not in use. |
Print detailed model summary.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.tune_esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) summary(xmodel)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) summary(xmodel)
Provide a summary of the tuned hyperparameters alpha,
rho and tau.
## S3 method for class 'tune_esn' summary(object, metric = "mse", ...)## S3 method for class 'tune_esn' summary(object, metric = "mse", ...)
object |
An object of class |
metric |
Character value. The metric used to select the best hyperparameter combination ( |
... |
Currently not in use. |
Print detailed model summary.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
train_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) summary(fit)xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) summary(fit)
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
data(synthetic_data)data(synthetic_data)
An object of class tibble with 2.000 rows and 3 columns:
variable: Unique identifier as character (key variable).
index: Index as integer (index variable).
value: Value as numeric (measurement variable).
data(synthetic_data)data(synthetic_data)
Return the estimated coefficients from a trained ESN as
tibble.
## S3 method for class 'ESN' tidy(x, ...)## S3 method for class 'ESN' tidy(x, ...)
x |
An object of class |
... |
Currently not in use. |
Coefficients extracted from the object.
Other tidy functions:
ESN(),
filter_esn(),
fitted.ESN(),
forecast.ESN(),
glance.ESN(),
model_sum.ESN(),
report.ESN(),
reservoir(),
residuals.ESN()
library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% tidy()library(tsibble) library(fable) AirPassengers %>% as_tsibble() %>% model("ESN" = ESN(value)) %>% tidy()
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.
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, tau = 0.4, density = 0.5, lambda = c(1e-04, 2), scale_win = 0.5, scale_wres = 0.5, scale_inputs = c(-0.5, 0.5) )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, tau = 0.4, density = 0.5, lambda = c(1e-04, 2), scale_win = 0.5, scale_wres = 0.5, scale_inputs = c(-0.5, 0.5) )
y |
Numeric vector containing the response variable (no missing values). |
lags |
Integer vector with the lag(s) associated with the input variable. |
inf_crit |
Character value. Information criterion used for model selection among the |
n_diff |
Integer value. The nth-differences of the response variable. If |
n_states |
Integer value. The number of internal states of the reservoir. If |
n_models |
Integer value. The maximum number of (random) models to train for model selection. If |
n_initial |
Integer value. The number of observations of internal states for initial drop out (throw-off). If |
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 (value greater than 0 and less than or equal to 1). |
rho |
Numeric value. The spectral radius for scaling the reservoir weight matrix (value often between 0 and 1, but values above 1 are possible). |
tau |
Numeric value. The reservoir scaling parameter to determine the reservoir size based on the time series length (value greater than 0 and less than or equal to 1). |
density |
Numeric value. The connectivity of the reservoir weight matrix (dense or sparse) (value greater than 0 and less than or equal to 1). |
lambda |
Numeric vector. Lower and upper bound of lambda range for ridge regression (numeric vector of length 2 with both values greater than 0 and |
scale_win |
Numeric value. The lower and upper bound of the uniform distribution for scaling the input weight matrix (value greater than 0, weights are sampled from U(- |
scale_wres |
Numeric value. The lower and upper bound of the uniform distribution for scaling the reservoir weight matrix (value greater than 0, weights are sampled from U(- |
scale_inputs |
Numeric vector. The lower and upper bound for scaling the time series data (numeric vector of length 2 with |
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: A list containing several objects and meta information of the trained ESN (weight matrices, hyperparameters, model metrics, etc.).
Häußer, A. (2026). Echo State Networks for Time Series Forecasting: Hyperparameter Sweep and Benchmarking. arXiv preprint arXiv:2602.03912, 2026. https://arxiv.org/abs/2602.03912
Jaeger, H. (2001). The “echo state” approach to analysing and training recurrent neural networks with an erratum note. Bonn, Germany: German National Research Center for Information Technology GMD Technical Report, 148(34):13.
Jaeger, H. (2002). Tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the "echo state network" approach.
Lukosevicius, M. (2012). A practical guide to applying echo state networks. In Neural Networks: Tricks of the Trade: Second Edition, pages 659–686. Springer.
Lukosevicius, M. and Jaeger, H. (2009). Reservoir computing approaches to recurrent neural network training. Computer Science Review, 3(3):127–149.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
tune_esn()
xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) summary(xmodel)xdata <- as.numeric(AirPassengers) xmodel <- train_esn(y = xdata) summary(xmodel)
Tune hyperparameters of an Echo State Network (ESN) based on
time series cross-validation (i.e., rolling forecast). The input series is
split into n_split expanding-window train/test sets with test size
n_ahead. For each split and each hyperparameter combination
(alpha, rho, tau) an ESN is trained via train_esn() and
forecasts are generated via forecast_esn().
tune_esn( y, n_ahead = 12, n_split = 5, alpha = seq(0.1, 1, by = 0.1), rho = seq(0.1, 1, by = 0.1), tau = c(0.1, 0.2, 0.4), min_train = NULL, ... )tune_esn( y, n_ahead = 12, n_split = 5, alpha = seq(0.1, 1, by = 0.1), rho = seq(0.1, 1, by = 0.1), tau = c(0.1, 0.2, 0.4), min_train = NULL, ... )
y |
Numeric vector containing the response variable (no missing values). |
n_ahead |
Integer value. The number of periods for forecasting (i.e. forecast horizon). |
n_split |
Integer value. The number of rolling train/test splits. |
alpha |
Numeric vector. The candidate leakage rates (smoothing parameters). |
rho |
Numeric vector. The candidate spectral radii. |
tau |
Numeric vector. The candidate reservoir scaling values. |
min_train |
Integer value. Minimum training sample size for the first split. |
... |
Further arguments passed to |
An object of class "tune_esn" (a list) with:
pars: A tibble with one row per hyperparameter combination and split. Columns include
alpha, rho, tau, split, train_start, train_end, test_start,
test_end, mse, mae, and id.
fcst: A numeric matrix of point forecasts with nrow(fcst) == nrow(pars) and
ncol(fcst) == n_ahead.
actual: The original input series y (numeric vector), returned for convenience.
Häußer, A. (2026). Echo State Networks for Time Series Forecasting: Hyperparameter Sweep and Benchmarking. arXiv preprint arXiv:2602.03912, 2026. https://arxiv.org/abs/2602.03912
Jaeger, H. (2001). The “echo state” approach to analysing and training recurrent neural networks with an erratum note. Bonn, Germany: German National Research Center for Information Technology GMD Technical Report, 148(34):13.
Jaeger, H. (2002). Tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the "echo state network" approach.
Lukosevicius, M. (2012). A practical guide to applying echo state networks. In Neural Networks: Tricks of the Trade: Second Edition, pages 659–686. Springer.
Lukosevicius, M. and Jaeger, H. (2009). Reservoir computing approaches to recurrent neural network training. Computer Science Review, 3(3):127–149.
Other base functions:
forecast_esn(),
is.esn(),
is.forecast_esn(),
is.tune_esn(),
plot.esn(),
plot.forecast_esn(),
plot.tune_esn(),
print.esn(),
summary.esn(),
summary.tune_esn(),
train_esn()
xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) summary(fit) plot(fit)xdata <- as.numeric(AirPassengers) fit <- tune_esn( y = xdata, n_ahead = 12, n_split = 5, alpha = c(0.5, 1), rho = c(1.0), tau = c(0.4), inf_crit = "bic" ) summary(fit) plot(fit)