Skip to main content
 首页 » 编程设计

R语言计算时间序列的交叉相关性教程

2022年07月19日206bhlsheji

本文介绍两个时间序列的交叉相关性,并通过示例说明R的计算过程。

时间序列交叉相关性

交叉相关性是衡量一个时间序列与另一个时间序列的延迟版本的相似程度。这种类型相关性可以用于预测另一个时间序列的未来值,也就是说,当前时间序列是另一个时间序列的先行指标。

这种类型相关性常用在很多领域,包括:

  • 经济领域
    consumer confidence index (CCI) 消费者信心指数一般认为是gross domestic product (GDP) 的先行指标。举例:如果CCI在给定月份较高,则GDP在x月之后也会升高。

  • 商业领域
    营销支出通常被认为是企业未来收入的先行指标。例如,如果企业在某个季度的市场营销花费较常高,那么在接下来的x个季度中,总收益将会提高。

  • 生物领域
    海洋污染情况被认为是某种海龟数量的先行指标。例如,如果某一年的污染更严重,那么预计x年后海龟的总数会更少。

下面我们通过示例来计算两个时间序列的交叉相关性。

R计算示例

假设我们有市场营销费用与连续12月销售收入的数据(单位:千元)。我们可以利用ccf()函数计算两个时间序列的交叉相关性:

#define data 
marketing <- c(3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8) 
revenue <- c(21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30)  
 
ccf(marketing, revenue) 

在这里插入图片描述

上图现实两个时间序列在不同滞后期间下的相关性。要查看实际相关性值,可以使用下面语法:

#display cross correlation values 
print(ccf(marketing, revenue, plot = FALSE)) 
 
# Autocorrelations of series ‘X’, by lag 
#  
#     -7     -6     -5     -4     -3     -2     -1      0      1      2      3  
# -0.430 -0.351 -0.190  0.123  0.489  0.755  0.868  0.771  0.462  0.194 -0.061  
#      4      5      6      7  
# -0.282 -0.445 -0.492 -0.358 

下面解释输出结果:

  • 滞后0期间交叉相关性是0.771
  • 滞后1期间交叉相关性是0.462
  • 滞后2期间交叉相关性是0.194
  • 滞后3期间交叉相关性是-0.061

同时我们注意到两个时间序列在滞后-22期间为正相关性,它显示给定月份的营销支出可以较好地预测12月之后的销售收入。

这在直觉上可以理解为:我们能利用给定月份较高营销支出预测未来1~2月的销售收入。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/122644467
阅读延展