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


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

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

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

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

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

#define data
x <- c(22, 24, 25, 25, 28, 29, 34, 37, 40, 44, 51, 48, 47, 50, 51)

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

library (tseries)

#calculate autocorrelations
acf(x, pl= FALSE )

 0 1 2 3 4 5 6 7 8 9 10 
 1.000 0.832 0.656 0.491 0.279 0.031 -0.165 -0.304 -0.401 -0.458 -0.450 
 11 
-0.369

Способ интерпретации вывода следующий:

  • Автокорреляция при задержке 0 равна 1 .
  • Автокорреляция при задержке 1 составляет 0,832 .
  • Автокорреляция при задержке 2 составляет 0,656 .
  • Автокорреляция при задержке 3 составляет 0,491 .

И так далее.

Мы также можем указать количество лагов для отображения с помощью аргумента lag :

#calculate autocorrelations up to lag=5
acf(x, lag=5, pl= FALSE )

Autocorrelations of series 'x', by lag

 0 1 2 3 4 5 
1.000 0.832 0.656 0.491 0.279 0.031 

Как построить функцию автокорреляции в R

Мы можем построить функцию автокорреляции для временного ряда в R, просто не используя аргумент pl=FALSE :

#plot autocorrelation function
acf(x)

По оси X отображается количество задержек, а по оси Y — автокорреляция при этом количестве задержек. По умолчанию график начинается с запаздывания = 0, а автокорреляция всегда будет равна 1 при запаздывании = 0.

Вы также можете указать другой заголовок для графика, используя основной аргумент:

#plot autocorrelation function with custom title
acf(x, main='Autocorrelation by Lag') 

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

Как рассчитать автокорреляцию в Python
Как рассчитать автокорреляцию в Excel