# Automatic Time Series Forecasting

How to do automatic forecasting using `AutoARIMA`

, `AutoETS`

, `AutoCES`

and `AutoTheta`

.

TipAutomatic forecasts of large numbers of univariate time series are often needed. It is common to have multiple product lines or skus that need forecasting. In these circumstances, an automatic forecasting algorithm is an essential tool. Automatic forecasting algorithms must determine an appropriate time series model, estimate the parameters and compute the forecasts. They must be robust to unusual time series patterns, and applicable to large numbers of series without user intervention.

## 1. Install statsforecast and load data

Use pip to install statsforecast and load Air Passangers dataset as an example

```
# uncomment the following line to install the library
# %pip install statsforecast
```

```
from statsforecast.utils import AirPassengersDF
```

```
Y_df = AirPassengersDF
```

## 2. Import StatsForecast and models

Import the core StatsForecast class and the models you want to use

```
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA, AutoETS, AutoTheta, AutoCES
```

## 3. Instatiate the class

Instantiate the StatsForecast class with the appropriate parameters

```
season_length = 12 # Define season length as 12 months for monthly data
horizon = 1 # Forecast horizon is set to 1 month
# Define a list of models for forecasting
models = [
AutoARIMA(season_length=season_length), # ARIMA model with automatic order selection and seasonal component
AutoETS(season_length=season_length), # ETS model with automatic error, trend, and seasonal component
AutoTheta(season_length=season_length), # Theta model with automatic seasonality detection
AutoCES(season_length=season_length), # CES model with automatic seasonality detection
]
# Instantiate StatsForecast class with models, data frequency ('M' for monthly),
# and parallel computation on all CPU cores (n_jobs=-1)
sf = StatsForecast(
models=models, # models for forecasting
freq='M', # frequency of the data
n_jobs=1 # number of jobs to run in parallel, -1 means using all processors
)
```

## 4. a) Forecast with forecast method

The `.forecast`

method is faster for distributed computing and does not
save the fittted models

```
# Generate forecasts for the specified horizon using the sf object
Y_hat_df = sf.forecast(df=Y_df, h=horizon) # forecast data
# Display the first few rows of the forecast DataFrame
Y_hat_df.head() # preview of forecasted data
```

ds | AutoARIMA | AutoETS | AutoTheta | CES | |
---|---|---|---|---|---|

unique_id | |||||

1.0 | 1961-01-31 | 444.300049 | 442.357178 | 442.940796 | 453.03418 |

## 4. b) Forecast with fit and predict

The `.fit`

method saves the fitted models

```
sf.fit(df=Y_df) # Fit the models to the data using the fit method of the StatsForecast object
sf.fitted_ # Access fitted models from the StatsForecast object
Y_hat_df = sf.predict(h=horizon) # Predict or forecast 'horizon' steps ahead using the predict method
Y_hat_df.head() # Preview the first few rows of the forecasted data
```

ds | AutoARIMA | AutoETS | AutoTheta | CES | |
---|---|---|---|---|---|

unique_id | |||||

1.0 | 1961-01-31 | 444.300049 | 442.357178 | 442.940796 | 453.03418 |