Как рассчитать взаимную корреляцию в python


Взаимная корреляция — это способ измерения степени сходства между временным рядом и лаговой версией другого временного ряда.

Этот тип корреляции полезен для расчета, поскольку он может сказать нам, являются ли значения в одном временном ряду прогнозирующими будущие значения в другом временном ряду. Другими словами, он может сказать нам, является ли один временной ряд опережающим индикатором для другого временного ряда.

Этот тип корреляции используется во многих различных областях, в том числе:

Предприятия. Расходы на маркетинг часто считаются ведущим индикатором будущих доходов бизнеса. Например, если компания тратит необычно большую сумму денег на маркетинг в течение одного квартала, то общий доход должен быть высоким через x кварталов.

Экономика: Индекс потребительского доверия (CCI) считается ведущим индикатором валового внутреннего продукта (ВВП) страны. Например, если CCI высок в данный месяц, ВВП, вероятно, будет выше x месяцев спустя.

В следующем примере показано, как вычислить взаимную корреляцию между двумя временными рядами в 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])

Мы можем рассчитать взаимную корреляцию для каждого лага между двумя временными рядами, используя функцию ccf() из пакета statsmodels следующим образом:

 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 .

И так далее.

Обратите внимание, что корреляция между двумя временными рядами становится все менее и менее положительной по мере увеличения количества лагов. Это говорит нам о том, что маркетинговые расходы в данном месяце вполне позволяют прогнозировать доход через один или два месяца, но не позволяют прогнозировать доход после двух месяцев.

Это имеет интуитивный смысл: мы ожидаем, что высокие маркетинговые расходы в данном месяце будут предсказывать увеличение дохода в течение следующих двух месяцев, но не обязательно увеличение дохода через несколько месяцев.

Дополнительные ресурсы

Как рассчитать автокорреляцию в Python
Как рассчитать частичную корреляцию в Python
Как рассчитать корреляцию между точками и бисериалами в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *