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

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

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

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

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

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

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

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

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

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

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

#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() следующим образом:

#calculate cross correlation
ccf(marketing, revenue)
Взаимная корреляция в R

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

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

#display cross correlation values
print(ccf(marketing, revenue))

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 .

И так далее.

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.