2015-10-27 2 views
0

Я хотел бы проверить, существует ли корреляция между «птицами» & «волками» в разных лагах. Получить значение корреляции легко, но как я могу решить проблему с задержкой (I нужно проверить значение корреляции на 1: 4 лага)? Результат, который я ищу, представляет собой таблицу данных, содержащую значение запаздывания и соответствующее значение корреляции.Как получить корреляции между двумя переменными с лагами

df <- read.table(text = " day birds wolfs  
          0 2  21   
          1 8   4 
          2 2   5 
          3 2   4 
          4 3   6 
          5 1   12 
          6 7   10 
          7 1   9 
          8 2   12 header = TRUE) 

выход (не реальные результаты): Лаг CorValue

0  0.9 
1  0.8 
2  0.7 
3  0.9 

ответ

1

Если вы сделаете это:

corLag<-ccf(df$birds,df$wolfs,lag.max=max(df$day)) 

вернет это:

автокорреляций серии X» ', лаг

-8  -7  -6  -5  -4  -3  -2  -1  0  1  2  3  4  5  6  7  8 
-0.028 0.123 -0.045 -0.019 0.145 -0.176 -0.082 -0.126 -0.296 0.757 -0.134 -0.180 0.070 -0.272 0.549 -0.170 -0.117 

первая строка - это лаг, вторая - значение корреляции. вы можете проверить, что cor(df$birds,df$wolfs) действительно равен -0.296

+0

Здравствуйте, @etienne, Есть ли способ ограничить количество лагов? например, у меня есть 1k временных точек, но я хотел бы проверить корреляцию lags 1:10? Я пробовал: corLag $ ccf [1:10], но безуспешно. – mql4beginner

+1

Да: 'lag.max = 10' вместо' max (df $ day) '. он возвращает лаги от -10 до +10 – etienne

+1

И тогда вы можете использовать 'corLag [0:10]' для корреляции и корреляции с лагами от 1 до 10 – etienne