如何用 python 计算互相关
互相关是衡量一个时间序列与另一个时间序列的滞后版本之间相似程度的方法。
这种类型的相关性对于计算很有用,因为它可以告诉我们一个时间序列中的值是否可以预测另一个时间序列中的未来值。换句话说,它可以告诉我们一个时间序列是否是另一个时间序列的领先指标。
这种类型的相关性用于许多不同的领域,包括:
企业:营销支出通常被认为是未来业务收入的领先指标。例如,如果一家公司在一个季度的营销上花费了异常高的资金,那么x 个季度后的总收入应该会很高。
经济:消费者信心指数(CCI)被认为是一个国家国内生产总值(GDP)的领先指标。例如,如果某月 CCI 较高,则X 个月后 GDP 可能会更高。
以下示例展示了如何在Python中计算两个时间序列之间的互相关性。
示例:如何用 Python 计算互相关
假设我们有以下 Python 时间序列,显示某公司连续 12 个月的总营销支出(以千为单位)以及总收入(以千为单位):
import numpy as np #define data marketing = n.p. array ([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8]) income = np. array ([21, 19, 22, 24, 25, 29, 30, 34, 37, 40, 35, 30])
我们可以使用statsmodels 包中的ccf()函数计算两个时间序列之间每个滞后的互相关性,如下所示:
import statsmodels. api as sm
#calculate cross correlation
sm. tsa . stattools . ccf (marketing, revenue, adjusted= False )
array([ 0.77109358, 0.46238654, 0.19352232, -0.06066296, -0.28159595,
-0.44531104, -0.49159463, -0.35783655, -0.15697476, -0.03430078,
0.01587722, 0.0070399 ])
以下是如何解释此输出:
- 滞后 0 处的互相关为0.771 。
- 滞后 1 处的互相关为0.462 。
- 滞后 2 处的互相关为0.194 。
- 滞后 3 处的互相关为-0.061 。
等等。
请注意,随着滞后数的增加,两个时间序列之间的正相关性变得越来越弱。这告诉我们,给定月份的营销支出可以很好地预测一两个月后的收入,但不能预测两个月后的收入。
这具有直观意义:我们预计给定月份的高营销支出可以预测未来两个月的收入增加,但不一定会在未来几个月内增加收入。