如何计算r中的滑动相关性
滚动相关性是滑动窗口上两个时间序列之间的相关性。这种类型的相关性的好处之一是您可以可视化两个时间序列之间随时间的相关性。
本教程介绍如何在 R 中计算滚动相关性。
如何计算 R 中的滚动相关性
假设我们有以下数据框,显示 15 个月内两种不同产品( x和y )销售的产品总数:
#create data data <- data.frame(month=1:15, x=c(13, 15, 16, 15, 17, 20, 22, 24, 25, 26, 23, 24, 23, 22, 20), y=c(22, 24, 23, 27, 26, 26, 27, 30, 33, 32, 27, 25, 28, 26, 28)) #view first six rows head(data) month xy 1 1 13 22 2 2 15 24 3 3 16 23 4 4 15 27 5 5 17 26 6 6 20 26
要计算 R 中的滚动相关性,我们可以使用Zoo包中的rollapply() 函数。
该函数使用以下语法:
rollapply(数据,宽度,FUN,by.column = TRUE)
金子:
- data:数据框的名称
- width:指定滑动相关窗口宽度的整数
- FUN:要应用的函数。
- by.column:指定是否将函数单独应用于每一列。默认情况下这是 TRUE,但要计算滚动相关性,我们需要指定它是 FALSE。
以下是如何使用此函数计算产品x和产品y之间销售额的 3 个月滚动相关性:
#calculate 3-month rolling correlation between sales for x and y rollapply(data, width=3, function (x) cor(x[,2],x[,3]), by.column= FALSE ) [1] 0.6546537 -0.6933752 -0.2401922 -0.8029551 0.8029551 0.9607689 [7] 0.9819805 0.6546537 0.8824975 0.8170572 -0.9449112 -0.3273268 [13] -0.1889822
此函数返回过去 3 个月两种产品销售额之间的相关性。例如:
- 第 1-3 个月销售额的相关性为0.6546537 。
- 第 2-4 个月的销售相关性为-0.6933752。
- 第 3-5 个月的销售相关性为-0.2401922。
等等。
我们可以轻松调整这个公式来计算不同时间段的滚动相关性。例如,以下代码显示了如何计算两个产品之间的 6 个月销售额滚动相关性:
#calculate 6-month rolling correlation between sales for x and y rollapply(data, width=6, function (x) cor(x[,2],x[,3]), by.column= FALSE ) [1] 0.5587415 0.4858553 0.6931033 0.7564756 0.8959291 0.9067715 0.7155418 [8] 0.7173740 0.7684468 0.4541476
此函数返回过去 6 个月内两种产品销售额之间的相关性。例如:
- 1-6 月份销售额的相关性为0.5587415 。
- 第 2-7 个月的销售相关性为0.4858553。
- 第 3-8 个月的销售相关性为0.6931033。
等等。
评论
使用 rollapply() 函数时请记住以下几点:
- 宽度(即下拉窗口)必须等于或大于 3 才能计算相关性。
- 在上面的公式中,我们使用 cor(x[,2],x[3]) 因为我们想要计算相关性的两列位于位置2和3 。如果您感兴趣的列位于不同的位置,请调整这些数字。