 # Exponential smoothing vs Moving average for time series forecasting

The exponential smoothing and moving average are the two basic and important techniques used for time series forecasting.

Time series analysis and forecasting are important concepts in data science that have a variety of applications. There are different techniques used to make forecasting with time-series data. The exponential smoothing and moving average are the two basic and important techniques used for this purpose. In this article, we will take a look at the comparison between Exponential smoothing and the Moving average for time series forecasting. The major points to be discussed in the article are listed below.

2. Implementation of exponential smoothing methods
4. Implementation of Moving average
5. Exponential smoothing vs Moving average

#### THE BELAMY

In time series exponential smoothing can be considered as a method to smooth the time series data. We can also consider it as a thumb rule technique which is an approximate method of doing something. This method uses an exponential window function that we use to assign exponentially decreasing weights over time. This method of smoothing time series can also be used for making many determinations based on some prior assumption. But generally, we apply it to smooth the time series data.

Are you looking for a complete repository of Python libraries used in data science, check out here.

Application of widow can also be considered as applying a filter to time series data so that we can remove the noise out of time series data. Let’s say that a univariate time series data is xt at time t = 0 and the result of smoothing using the exponential smoothing is st . we can also say the St is the best estimation of the next value of the time series. Mathematically we can give exponential smoothing in the form of the following formula.

`s0 = x0`
`st = xt + (1-)st-1 ,  t>0      `

Where,

`(0<<1) = smoothing factor.`

A simple exponential smoothing can also be considered as recursive filtering and mathematically can be given as follows

Exponential smoothing at a time t ( st ) can also be considered as the simple weighted average value of time series at time t (xt) and the last smoothed value st-1 . We can even apply these statistics with two sequential values. One thing that is noticeable here is if the value of increases the level of smoothing decreases and there is no perfect methods that can be applied for choosing the value of .

This method can also be referred to as exponentially weighted moving average (EWMA), and autoregressive integrated moving average (ARIMA) without constant term in some other cases. There are three types of exponential smoothing we can find:

• Simple/single exponential smoothing: This smoothing can be used for making forecasts based in a time series that has no trend and seasonality.
• Double exponential smoothing: This type of exponential smoothing comes with the support for trend components of time series.
• Triple exponential smoothing: This type of exponential smoothing comes with the support for trend and seasonality components of time series.

Let’s take a look at how this method can be implemented.

## Forecasting using exponential smoothing

We can use the statsmodel library for the implementation of exponential smoothing methods. In this library under the tsa.holt winters package we can get all the methods implemented for exponential smoothing. Let’s take a look at the implementation of simple exponential smoothing.

Importing data:

`import pandas as pd`
`ts = pd.read_csv('/content/drive/MyDrive/Copy of shampoo-sales .csv')`

Importing and fitting module:

`from statsmodels.tsa.holtwinters import SimpleExpSmoothing`
`model = SimpleExpSmoothing(ts['Sales'])`
`fit_model = model.fit(smoothing_level=0.2, optimized=False)`

Plotting smoothed data:

`import matplotlib.pyplot as plt`
`plt.figure(figsize=(12, 8))`
`plt.plot(ts['Sales'], color="black")`
`plt.plot(fit_model.fittedvalues, color="blue")`

Output:

Here we can see how the function defined in the library works using the simple exponential smoothing method.

As the name suggests it is a method in which we can say the average is moving. In time series analysis it is a method for forecasting works by capturing the average changes in the time series. In various places, we can also find that this method is referred to as rolling average, running average, moving mean (MM)or rolling mean. It is based on making a series of averages using the subsets of full data. In general, we can also consider it as a calculation method to analyze sequential data.

This also works by applying a filter on a time series and the filter can be considered a finite impulse response filter. This filter works by taking the average of a fixed subset of a series of numbers. Let’s say there is a time series that can be divided based on months which means we have a set of values and taking the average of values from the first month of the time series can be considered as the first moving average of the smoothing process. Not as the time will move in the series the set of numbers will change and accordingly the average value will keep changing.

The below image is a representation of applying a moving average to smooth the time series.

Image source

Here we can see that the red line is the result of the smoothing and we can say that we apply it to remove short time fluctuation from the time series so that the long term trend of the time series can be highlighted. There are three types of moving average

• Simple moving average: It is the simplest form of moving average where the addition of recent values of the time series gets divided by the time.
• Exponential moving average: This type of moving average focuses more on the recent values by providing a larger weight of the recent values to the moving average.
• Cumulative moving average:  This method focuses on all the values of the time series by applying the mean of all values and the mean should be unweighted.

Let’s take a look at how we can implement a simple moving average using python.

## Forecasting using moving average

We can perform time series forecasting using the moving average method just with the pandas’ library. In the above, we have imported the shampoo sales data. Let’s plot the data.

`plt.plot(ts['Sales'])`

Output:

Let’s plot the data after applying the moving average.

`ts['Sales'].plot(figsize=(10,6))`
`ts['Sales'].rolling(window =5).mean().plot()`

Output:

In the above, we have seen how we can implement and define both of the methods. Let’s take a look at the difference between these two methods of smoothing.

## Exponential smoothing vs Moving average

One of the important differences between these two methods can be assumed using their name. On the one end, the exponential smoothing is applying an exponential window while on the second side we can see that the average window is applied to the data to reduce the noise of the data.

Under exponential smoothing, we have methods that provide support against the components of time series such as trend and seasonality while talking about the moving average we can say that methods under this smoothing process are more focused on the values with their timings. Like the exponential moving average is focused on the recent values.

One more thing that creates a big difference between these methods is that exponential smoothing can be done using even two data points and to start the moving average we are required to set the window size which needs to be more than three for performing actual smoothing.

Here we can say that the exponential removes more noise from the data according to the smoothing factor and the moving average is removing noise using the mean value of data points.

## Final words

In the article, we have discussed the exponential smoothing and moving average. These both are smoothing methods for time series data. The way of working of the algorithms makes both of them different to each other as we have discussed in our last sentient.

## More Great AIM Stories

### OpenAI Launches \$100 Mn Fund To Catch AI Startups Young Yugesh is a graduate in automobile engineering and worked as a data analyst intern. He completed several Data Science projects. He has a strong interest in Deep Learning and writing blogs on data science and machine learning.

## Our Upcoming Events

Conference, in-person (Bangalore)
MachineCon 2022
24th Jun

Conference, Virtual
Deep Learning DevCon 2022
30th Jul

Conference, in-person (Bangalore)
Cypher 2022
21-23rd Sep

### Discord Server

Stay Connected with a larger ecosystem of data science and ML Professionals

### Telegram Channel

Discover special offers, top stories, upcoming events, and more.  