# Seasonality

## What is Seasonality in Time Series Data?

A time series data is said to be seasonal if specific patterns appear on a cyclical basis. The cycle repeating over time may signal important information in forecasting.

```A cycle structure in a time series may or may not be seasonal. If it consistently repeats at the same frequency,
it is seasonal, otherwise it is not seasonal and is called a cycle.
- Page 6, Introductory Time Series with R```

## Types of Seasonality

There can be many types of seasonality based on their repeating cycle. For example:

• Hourly
• Daily
• Weekly
• Monthly
• Quarterly
• Annually

## Why Do We Need to Detect Seasonality?

1. Understanding the seasonal component can help in improving the performance of the machine learning model.

## How to Detect Seasonality?

The most popular method to detect seasonality components is decomposing the time series data.

### Time Series Decomposition

The time series data is decomposed into three components: trend, seasonal and residual.

### 1. Trend

The consistently increasing or decreasing values in a series. It is used to find trend in the time series data under consideration i.e uptrend or downtrend.

### 2. Seasonal

The repeating short-term cycle in the series. It is used to find seasonality in the data.

### 3. Residual

If the trend or seasonality component is removed from a time series data, whatever is left over is called residual.

### Naive Decomposition

In Naive Decomposition, we find the linear relationship between the three components (trend, seasonal, residual) and the observed time series. There are two main approaches to naive decomposition: additive and multiplicative.

### 1. Additive Decomposition

```
from random import randrange

from matplotlib import pyplot

from statsmodels.tsa.seasonal import seasonal_decompose

series=[i+randrange(10) for i in range(1,100)]

result=seasonal_decompose(series,model="additive",period=1)

result.plot()

pyplot.show()

```

`observed = trend + seasonality + residual`

### 2. Multiplicative Decomposition

```series = [i*2 for i in range(1,100)]

result= seasonal_decompose(series, model="multiplicative",period=1)
result.plot()

pyplot.show()

```
`observed = trend * seasonality * residual`

## How to Remove Seasonality?

The process of removing the seasonality from a time series data is called seasonal adjustment or deseasonalizing.

`A time series data with removed seasonality is called seasonal stationary data.`

One of the popular methods for seasonal adjustment is differencing.

### Differencing

In this method, the level of data (weekly, monthly, yearly ) is found. The current value is subtracted from the level of data. For example, if the weekly data is available, then every value is subtracted by 7.