Статистика

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

В: Статистика


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

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

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

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

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

В следующем примере показано, как вычислить взаимную корреляцию между двумя временными рядами в Python.

Пример: как рассчитать взаимную корреляцию в Python

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

import numpy as np

#define data 
marketing = np.array([3, 4, 5, 5, 7, 9, 13, 15, 12, 10, 8, 8])
revenue = 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 ])

Вот как интерпретировать этот вывод:

  • Взаимная корреляция при lag 0 составляет 0,771
  • Взаимная корреляция при lag 1 составляет 0,462
  • Взаимная корреляция при lag 2 составляет 0,194
  • Взаимная корреляция при lag 3 составляет -0,061

И так далее.

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

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

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

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

Еще от кодкамп
Статистика

Как рассчитать коэффициент внутриклассовой корреляции в Python

Коэффициент внутриклассовой корреляции (ICC или intraclass correlation coefficient) используется, чтобы определить, могут ли предметы или предметы быть надежно оценены разными
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.