Автокорреляция с еженедельными данными
Я новый пользователь 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
без каких-либо лагов.