Кросс-корреляция автокоррелированных переменных с годовым шагом по времени - PullRequest
0 голосов
/ 25 марта 2019

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

Для каждой переменной я сначала проверяю, является ли она нестационарной (с помощью теста Аугментированного Дики-Фуллера и критерия Квятковского-Филлипса-Шмидта-Шина), затем я проверяю, является ли надлежащим образом запаздывающая и повторяющаяся разница первого порядка автоматической -коррелированный (с оценкой автокорреляционной функции).

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

Вот пример с 3 переменными с годовым шагом по времени (данные за 31 год):

самокоррелируется:

V1 <- c(524.800, 764.449, 557.564, 615.880, 1055.453, 1290.122, 1709.981, 2113.651, 2958.380, 2541.366, 2640.039, 2787.651, 3580.520, 3907.812, 4369.220, 5003.527, 3672.161, 4394.090, 4214.062, 3671.846, 3351.458, 3036.077, 2704.647, 1854.365, 2543.996, 2106.863, 1960.762, 2036.323, 1996.526, 1940.905, 2120.696)

Не коррелируется автоматически:

 V2 <- c(21939,20081,23702,12908,16825,23794,17748,20251,24024,19822,15272, 12258,22539,30856,24090,23512,12588,13367,11501,9099,11411,11832,11341,10899,10049,10114,10667,9902,10639,10702,10066)

Автокорреляция:

V3 <- c(3361213,  3493958,  5924759,  5283699,  9477393, 13528459, 17153250, 14509681, 27052581, 27653986, 25618494, 24642924, 31252566, 40446538, 33833710, 55843471, 31572981, 51685769, 48218752, 46947448, 52243131, 68991783, 66494239, 44108474, 67089912, 61832249, 65841550, 73992509, 62093282, 55447568, 71151920)

Короче говоря, я хочу видеть: ccf (diff (V1), diff (V2)) и ccf (diff (V1), diff (V3))

Итак, вот что я сделал:

adf.test(V1)  #pvalue > 0.05 non stationary #OK
kpss.test(V1)  # pvalue < 0.05 non stationary #OK

то же самое для V2 и V3

Функция автокорреляции:

acf(diff(V1))  

в основном, если задержка резко падает после времени 0, V1 не самокоррелируется. Я также видел более точные выходные значения, только для безопасности. то же самое для V2 и V3

Итак, теперь моя проблема: Чтобы получить ccf (diff (V1), diff (V2)), зная, что diff (V1) автоматически коррелируется, я попытался:

V1ts <- ts(V1,frequency=1) #convert to a time series 

Я предполагаю, что частота = 1, потому что у нас есть только одно значение в год.

V2ts <- ts(V2,frequency=1) #convert to a time series 

library(fpp)  #load forecasting package
mod1 <- auto.arima(V1ts)  
mod2 <- auto.arima(V1ts,D=0)
mod3 <- auto.arima(V1ts,D=1)  

Я также пытался принудительно установить D на 0 или 1.

library(TSA)
print(prewhiten(V1ts, V2ts, mod1))

с mod2 или mod3 я получаю те же результаты ...

При сравнении стандартного ccf без учета автокорреляции ...

ccf1 <- ccf(diff(V1ts),diff(V2ts))
ccf1

Я получил точно такие же результаты ...

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

В двух словах, может кто-нибудь помочь мне проанализировать взаимную корреляцию одной автокоррелированной переменной V1 со второй, которая не является автокоррелированной V2, пожалуйста? И в случае, если обе переменные автоматически коррелируются, как между V1 и V3, нужно ли мне применять две модели ARIMA и предварительно отбеливать их одновременно? Заранее большое спасибо, я немного запутался здесь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...