How to perform Rolling Correlation in R
Rolling Correlation in R, Correlations between two-time series on a rolling window are known as rolling correlations.
Correlations in time series are extremely valuable since they may be used to model and forecast if a relationship exists. But there’s a catch: a correlation isn’t static! It evolves over time.
The rolling correlation is one of the most important calculations in time series analysis.
Rank Order analysis in R » Optimal order & Probability
This sort of correlation has the advantage of allowing you to visualize the correlation between two-time series across time.
This article will show you how to use R to calculate rolling correlations.
Rolling Correlation in R
In R, how do you calculate rolling correlations?
Consider the following data frame, which shows the total profit for two separate products (x and y) over the course of a 12-month period:
SharePoint R integration and analysis » Automation »
Let’s create a data frame
tsData <- data.frame(month=1:12, x=c(9, 12, 20, 12, 14, 15, 18, 12, 27, 33, 35, 21), y=c(19, 36, 29, 26, 33, 18, 15, 28, 18, 19, 14, 25))
head(tsData)
month x y 1 1 9 19 2 2 12 36 3 3 20 29 4 4 12 26 5 5 14 33 6 6 15 18
The rollapply() function from the zoo package can be used to calculate a rolling correlation in R.
The syntax for this function is as follows:
tidyverse in r – Complete Tutorial » Unknown Techniques »
rollapply(data, width, FUN, by.column=TRUE)
where:
data: The data frame’s name
width: The window width for the rolling correlation is specified as an integer.
FUN: The function that will be used.
by.column: Specifies whether the function should be applied to each column separately. This is TRUE by default, but we need to set it to FALSE to calculate a rolling correlation.
To compute the 3-month rolling correlation in sales between x and y, use the following formula:
library(zoo) rollapply(tsData, width=3, function(x) cor(x[,2],x[,3]), by.column=FALSE)
To calculate correlations, the width (i.e. the rolling window) should be 3 or more.
Because the two columns we wanted to calculate correlations between were in positions 2 and 3, we used cor(x[,2],x[3]) in the calculations above.
If the columns you’re interested in are in different places, change these numbers.
R compiler Application-Installation Guide »
[1] 0.3602064 -0.2250176 0.1595863 -0.3634274 -0.7970168 -0.9549191 -0.6518694 -0.9316225 [9] -0.5447048 -0.9431854
This function returns the three-month correlation between product profit x and y. Consider the following scenario:
The correlation in profit during months 1 through 3 was 0. 3602064.
The correlation in profit during months 2 through 4 was -0. 2250176.
The correlation in profit during months 3 through 5 was -0. 1595863.
And so forth.
This formula can simply be changed to determine the rolling correlation over a different time period.
The following code, for example, demonstrates how to compute the 5-month rolling correlation in profit between the two products:
Repeated Measures of ANOVA in R Complete Tutorial »
rollapply(tsData, width=5, function(x) cor(x[,2],x[,3]), by.column=FALSE)
[1] 0.3781826 -0.1882708 -0.1850412 -0.7344118 -0.5643492 -0.4000877 -0.6476290 -0.9401665
For the last 5 months, this function returns the correlation between the two product profits. Consider the following scenario,
The correlation in profit during months 1 through 5 was 0. 3781826.
The correlation in profit during months 2 through 6 was -0. 1882708.
The correlation in profit during months 3 through 7 was -0. 1850412.
And so on.