How to Calculate Autocorrelation in R

Spread the love

Autocorrelation, also known as serial correlation, is a mathematical tool used to determine the degree of correlation of a given time series with a lagged version of itself over successive time intervals. It is a way of comparing a series with its own lagged values to find patterns of correlation. It is commonly used in the analysis of time-series data in fields like economics, weather forecasting, signal processing, and data analysis.

In this article, we will guide you through the process of calculating autocorrelation in R. We’ll start with the basic concepts of autocorrelation and then walk you through code examples and practical applications.

Understanding Autocorrelation

Before diving into the code, it’s important to understand what autocorrelation means and why it’s useful.

Autocorrelation measures the linear relationship between lagged values of a time series. For example, if we have daily temperature data, the autocorrelation might tell us the degree to which today’s temperature can be predicted by yesterday’s, the day before’s, and so on.

Autocorrelation is often used to detect non-randomness in data, identify underlying periodic patterns, or predict future values in a time series.

Calculating Autocorrelation in R

R provides several built-in functions for calculating and analyzing autocorrelation.

One of these is the acf() function, which stands for AutoCorrelation Function. The acf() function takes a time series as input and calculates the autocorrelations of the series for different lags.

Let’s create a simple time series in R and calculate its autocorrelation:

# Create a simple time series
x <- rnorm(100)

# Calculate autocorrelation

Here, we create a time series of 100 random normal numbers, then calculate the autocorrelation of this series. The acf() function automatically creates a plot of the autocorrelations.

The resulting plot shows the autocorrelation coefficient on the y-axis and the lag on the x-axis. Bars extending above the dashed blue lines are statistically significant.

Interpreting the Autocorrelation Plot

Autocorrelation plots (also known as correlograms) help visualize and interpret the autocorrelation function.

In the plot created by the acf() function, the x-axis represents the lag, and the y-axis represents the autocorrelation coefficient, ranging from -1 to 1. A positive autocorrelation indicates that a time series is positively related to its lagged values, and a negative autocorrelation suggests a negative relationship.

The blue dashed lines on the plot represent the significance level, which is the threshold above which the autocorrelations are statistically significant. If the autocorrelation is below this line, it means that the correlation could be due to chance and may not be statistically significant.

Calculating Partial Autocorrelation in R

Partial autocorrelation is another concept related to autocorrelation. It measures the correlation between a variable and its lags that is not explained by previous lags.

R provides the pacf() function for calculating partial autocorrelations. The pacf() function works similarly to the acf() function:

# Calculate partial autocorrelation

Again, this function automatically creates a plot of the partial autocorrelations. The interpretation of this plot is similar to that of the autocorrelation plot.

Dealing with Non-Stationary Data

Autocorrelation and partial autocorrelation are usually applied to stationary time series. A stationary time series is one whose properties do not depend on the time at which the series is observed, meaning that it does not exhibit trends or seasonality.

If your data is not stationary, you may need to transform it before calculating autocorrelations. Common transformations include differencing, where we calculate the difference between consecutive observations, and logging, which can help stabilize variance.

In R, you can use the diff() function to apply differencing:

# Apply differencing
x_diff <- diff(x)

# Calculate autocorrelation of differenced series

Autocorrelation in ARIMA Models

Autocorrelation and partial autocorrelation plots are particularly useful when working with AutoRegressive Integrated Moving Average (ARIMA) models, a common method for forecasting time series data.

The autocorrelation plot helps identify the Moving Average (MA) order of the model, and the partial autocorrelation plot helps identify the AutoRegressive (AR) order of the model.


Understanding and being able to calculate autocorrelation is crucial for anyone working with time-series data. The autocorrelation function is a tool that can help you understand the underlying patterns in your data and inform your modeling strategies.

R’s built-in functions for autocorrelation make it easy to calculate and visualize these values, allowing you to derive insights quickly and efficiently.

Posted in RTagged

Leave a Reply