Автокорреляция с еженедельными данными

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

Вот мой код:

SPX_ImpliedVola_ts<-ts(SPX_ImpliedVola$x, start=c(2005), end=c(2014), freq=52)
SPX_GSV_ts<-ts(SPX_GSV$x, start=c(2005), end=c(2014), freq=52)
plot(ccf(SPX_ImpliedVola_ts,SPX_GSV_ts, type= "correlation"))

Результаты функции ccf имеют смысл, но разметка оси x неверна. Мои лаги должны быть неделями. Вместо этого для функции построения графика используются годы, поэтому задержка составляет =1/52. Мне не хватает очков репутации, чтобы опубликовать сюжет

Есть ли простой способ отформатировать ось х, чтобы 1 лаг = 1 неделя?

Вот мои данные за 2013 год:

SPX_GSV_ts

structure(c(-0.172545978, -0.085914629, -0.051152522, -0.191885526, 
0.10720997, 0.120573931, 0.123062732, -0.073231914, 0.122783425, 
-0.073231914, -0.091330136, -0.108595771, -0.149988456, -0.077412223, 
0.017728767, -0.057991947, -0.04522754, 0.098925304, 0.019744058, 
-0.042403849, 0.097955247, 0.060480747, -0.096910013, 0.04275198, 
-0.111150452, -0.123384909, 0.020203386, 0.02540458, 0.046743404, 
0.046743404, 0.096910013, -0.029289376, -0.020203386, 0.019305155, 
0.124938737, 0.071494417, 0.080655932, 0.032184683, -0.072195125, 
0.08058446, 0.109144469, -0.116215168, -0.003792989, -0.011685758, 
0.033281387, -0.011685758, 0.044203662, -0.137383556, -0.023912157, 
0.023065304, 0.037141808, -0.128799157, -0.036045104), .Tsp = c(2013, 
2014, 52), class = "ts")

SPX_ImpliedVola_ts:

structure(c(0.1551244, 0.1764986, 0.169477, 0.1509566, 0.14180975, 
0.1455916, 0.1320918, 0.150884, 0.1519094, 0.1670364, 0.1769658, 
0.1491722, 0.14883, 0.13545475, 0.134158, 0.1292596, 0.13465, 
0.14380075, 0.136281, 0.1350982, 0.1384192, 0.1467728, 0.161534, 
0.14764, 0.1332734, 0.1353106, 0.126313, 0.1268324, 0.1200864, 
0.1242202, 0.127857, 0.1382412, 0.1319932, 0.1441192, 0.1316964, 
0.1217246, 0.1262966, 0.11574475, 0.1166192, 0.1231602, 0.119756, 
0.10622025, 0.1133376, 0.1245488, 0.1124368, 0.11566475, 0.1196388, 
0.1003482, 0.0994486, 0.0972232, 0.10798775, 0.1115012, 0.1148464
), .Tsp = c(2013, 2014, 52), class = "ts")

1 ответ

Решение

Кажется, что ccf неправильно отображает количество лагов для ts учебный класс. Вам нужно изменить класс ваших данных на data.frame чтобы получить правильное количество лагов по оси х. Вы можете использовать следующий код:

ccf.results<-ccf(data.frame(SPX_ImpliedVola_ts),data.frame(SPX_GSV_ts), type= "correlation", ylab="Auto-correlation", main="Weekely Auto-corelations")

Вы можете удалить type= "correlation" и вы все равно получите те же результаты, что и по умолчанию type за ccf является correlation

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

ccf.results<-ccf(data.frame(SPX_ImpliedVola_ts),data.frame(SPX_GSV_ts), type= "correlation")
print(ccf.results)

Ты получишь:

Autocorrelations of series ‘X’, by lag

   -14    -13    -12    -11    -10     -9     -8     -7     -6     -5     -4     -3     -2     -1 
-0.010  0.076  0.011 -0.017 -0.031 -0.057 -0.037  0.059  0.067  0.033  0.105  0.000 -0.242 -0.181 
     0      1      2      3      4      5      6      7      8      9     10     11     12     13 
-0.189 -0.157 -0.079  0.041  0.080 -0.015 -0.098 -0.302 -0.303 -0.355 -0.323 -0.264 -0.222 -0.116 
    14 
-0.121 

Обратите внимание, что 0 в приведенных выше результатах означает correlation без каких-либо лагов.

Другие вопросы по тегам