# How to Calculate Autocorrelation in Python?

• Difficulty Level : Medium
• Last Updated : 17 Jan, 2022

Correlation generally determines the relationship between two variables. Correlation is calculated between the variable and itself at previous time steps, such a correlation is called Autocorrelation.

## Method 1 : Using lagplot()

The daily minimum temperatures dataset is used for this example. As the first step, the autocorrelation can be quickly checked using lagplot() function provided by pandas.

Syntax:

`pd.plotting.lag_plot(data, lag=1)`

where,

• data is the input dataframe
• lag specifies integer to get the lags

Data Used: daily-minimum-temperatures-in-blr

## Python3

 `# import modules``import` `pandas as pd` `# read the data from the csv``data ``=` `pd.read_csv(``"daily-minimum-temperatures-in-blr.csv"``,``                   ``header``=``0``, index_col``=``0``, parse_dates``=``True``,``                   ``squeeze``=``True``)` `# display top 15 data``data.head(``15``)` `# lagplot``pd.plotting.lag_plot(data, lag``=``1``)`

Output:

## Method 2: Creating lagged variables at different time steps

As we are aware of the fact that, the values of the observation at the current and previous time steps are significant in predicting the future step, let’s create lagged variables at different timesteps say, t+1, t+2, t+3. This is done using pandas.concat() and shift() function. Shift function shifts the timestep by a specified value and the Concat function joins the lagged variables at different timesteps as shown below.

Use pandas.corr() function on the new dataframe to calculate the correlation matrix.

Syntax:

`pandas.DataFrame.corr(method = 'pearson')`

where, method – pearson which is for calculating the standard correlation coefficient

Example:

## Python3

 `data ``=` `pd.read_csv(``"daily-minimum-temperatures-in-blr.csv"``,``                   ``header``=``0``, index_col``=``0``, parse_dates``=``True``,``                   ``squeeze``=``True``)` `# extracting only the temperature values``values ``=` `pd.DataFrame(data.values)` `# using shift function to shift the values.``dataframe ``=` `pd.concat([values.shift(``3``), values.shift(``2``),``                       ``values.shift(``1``), values], axis``=``1``)``# naming the columns``dataframe.columns ``=` `[``'t'``, ``'t+1'``, ``'t+2'``, ``'t+3'``]` `# using corr() function to compute the correlation``result ``=` `dataframe.corr()` `print``(result)`

Output:

## Method 3: Using plot_acf()

A plot of the autocorrelation of a time series by lag is called the AutoCorrelation Function (ACF). Such a plot is also called a correlogram. A correlogram plots the correlation of all possible timesteps. The lagged variables with the highest correlation can be considered for modeling. Below is an example of calculating and plotting the autocorrelation plot for the dataset chosen.

Statsmodel library provides a function called plot_acf() for this purpose.

Syntax:

`statsmodels.graphics.tsaplots.plot_acf(x,lags,alpha)`

where,

• x – An array of time-series values
• lags – An int or array of lag values, used on the horizontal axis. Uses np.arange(lags) when lags is an int.
• alpha – If a number is given, the confidence intervals for the given level are returned. For instance, if alpha=.05, 95 % confidence intervals are returned where the standard deviation is computed according to Bartlettâ€™s formula. If None, no confidence intervals are plotted.

Example:

## Python3

 `# import the required modules``import` `pandas as pd``from` `statsmodels.graphics.tsaplots ``import` `plot_acf` `# read the csv data``data ``=` `pd.read_csv(``"daily-minimum-temperatures-in-blr.csv"``,``                   ``header``=``0``, index_col``=``0``, parse_dates``=``True``,``                   ``squeeze``=``True``)` `# plot the auto correlation``plot_acf(data)`

Output:

My Personal Notes arrow_drop_up