Связь между двумя временными рядами: ARIMA

12

Учитывая следующие два временных ряда ( x , y ; см. Ниже), каков наилучший метод для моделирования взаимосвязи между долгосрочными тенденциями в этих данных?

Оба временных ряда имеют важные тесты Дурбина-Уотсона, когда они моделируются как функция времени, и ни один из них не является стационарным (как я понимаю, термин, или это означает, что он должен быть только в остатках?). Мне сказали, что это означает, что я должен взять разность первого порядка (по крайней мере, может быть, даже 2-го порядка) каждого временного ряда, прежде чем я смогу смоделировать один как функцию другого, по существу используя ариму (1,1,0 ), арима (1,2,0) и т. д.

Я не понимаю, почему вам нужно уменьшить тренд, прежде чем вы сможете моделировать их. Я понимаю необходимость моделировать автокорреляцию, но я не понимаю, почему должна быть разница. Мне кажется, что отклонение от разницы удаляет первичные сигналы (в данном случае долгосрочные тренды) в данных, которые нас интересуют, и оставляет высокочастотный «шум» (используя термин «шум» свободно). Действительно, в симуляциях, где я создаю почти идеальные отношения между одним временным рядом и другим, без автокорреляции, различие временного ряда дает мне результаты, которые не являются интуитивными для целей обнаружения отношений, например,

a = 1:50 + rnorm(50, sd = 0.01)
b = a + rnorm(50, sd = 1)
da = diff(a); db = diff(b)
summary(lmx <- lm(db ~ da))

В этом случае b тесно связана с a , но b имеет больше шума. Для меня это показывает, что дифференцирование не работает в идеальном случае для обнаружения взаимосвязей между низкочастотными сигналами. Я понимаю, что для анализа временных рядов обычно используется разность, но она представляется более полезной для определения взаимосвязей между высокочастотными сигналами. Что мне не хватает?

Пример данных

df1 <- structure(list(
x = c(315.97, 316.91, 317.64, 318.45, 318.99, 319.62, 320.04, 321.38, 322.16, 323.04, 324.62, 325.68, 326.32, 327.45, 329.68, 330.18, 331.08, 332.05, 333.78, 335.41, 336.78, 338.68, 340.1, 341.44, 343.03, 344.58, 346.04, 347.39, 349.16, 351.56, 353.07, 354.35, 355.57, 356.38, 357.07, 358.82, 360.8, 362.59, 363.71, 366.65, 368.33, 369.52, 371.13, 373.22, 375.77, 377.49, 379.8, 381.9, 383.76, 385.59, 387.38, 389.78), 
y = c(0.0192, -0.0748, 0.0459, 0.0324, 0.0234, -0.3019, -0.2328, -0.1455, -0.0984, -0.2144, -0.1301, -0.0606, -0.2004, -0.2411, 0.1414, -0.2861, -0.0585, -0.3563, 0.0864, -0.0531, 0.0404, 0.1376, 0.3219, -0.0043, 0.3318, -0.0469, -0.0293, 0.1188, 0.2504, 0.3737, 0.2484, 0.4909, 0.3983, 0.0914, 0.1794, 0.3451, 0.5944, 0.2226, 0.5222, 0.8181, 0.5535, 0.4732, 0.6645, 0.7716, 0.7514, 0.6639, 0.8704, 0.8102, 0.9005, 0.6849, 0.7256, 0.878),
ti = 1:52), 
.Names = c("x", "y", "ti"), class = "data.frame", row.names = 110:161)

ddf<- data.frame(dy = diff(df1$y), dx = diff(df1$x))
ddf2<- data.frame(ddy = diff(ddf$dy), ddx = diff(ddf$dx))
ddf$ti<-1:length(ddf$dx); ddf2$year<-1:length(ddf2$ddx)
summary(lm0<-lm(y~x, data=df1))      #t = 15.0
summary(lm1<-lm(dy~dx, data=ddf))    #t = 2.6
summary(lm2<-lm(ddy~ddx, data=ddf2)) #t = 2.6
Мэтт Альбрехт
источник

Ответы:

6

Мэтт, вы очень правы в отношении проблем, которые вы подняли в отношении использования ненужной разностной структуры. Чтобы определить подходящую модель введите описание изображения здесьдля ваших данных, дающую значительную структуру при рендеринге процесса Гауссовой ошибки введите описание изображения здесьс ACFвведите описание изображения здесьпроцесс моделирования идентификации передаточной функции требует (в этом случае) подходящего дифференцирования для создания суррогатных рядов, которые являются стационарными и, таким образом, могут использоваться для ИДЕНТИФИКАЦИИ отношений. При этом требования к разнице для ИДЕНТИФИКАЦИИ были двойной разницей для Х и одинарной разницей для Y. Кроме того, было обнаружено, что ARIMA-фильтр для двукратно разностного Х является AR (1). Применение этого фильтра ARIMA (только для целей идентификации!) К обеим стационарным сериям позволило получить следующую взаимно-корреляционную структуру. введите описание изображения здесьпредлагая простые современные отношения. введите описание изображения здесь, Обратите внимание, что хотя исходная серия демонстрирует нестационарность, это не обязательно означает, что в причинно-следственной модели необходимо дифференцирование. Окончательная модель введите описание изображения здесьи финальная версия ACF поддерживают этовведите описание изображения здесь, При закрытии окончательного уравнения кроме одного эмпирически идентифицированного сдвига уровня (действительно перехватывать изменения)

 Y(t)=-4.78 + .192*X(t) - .177*X(t-1) which is NEARLY equal to 

 Y(t)=-4.78 + .192*[X(t)-X(t-1)] which means that changes in X effect the level of Y

Наконец обратите внимание на характеристики предлагаемой модели.введите описание изображения здесь

серия Level Shift (0,0,0,0,0,0,0,0,0,1,1, ........., 1) предполагает, что при отсутствии обработки остатки модели будут демонстрировать уровень сдвиг в или около периода времени 10 THUS, проверка гипотезы об общем остаточном среднем между первыми 10 невязками и последними 42 будет значимой при альфа = .0002 на основе "t-теста -4,10". Обратите внимание, что включение константы гарантирует, что общее среднее невязок существенно не отличается от нуля, НО это не обязательно для всех подмножеств временных интервалов. Следующий график ясно показывает это (учитывая, что вам сказали смотреть!). Фактический / Подходящий / Прогноз довольно яркий введите описание изображения здесь. Статистика похожа на фонарные столбы, некоторые используют их, чтобы опираться на других, используют их для освещения.

IrishStat
источник
Спасибо за всесторонний анализ, Дэйв. Просто чтобы убедиться, что я понимаю, 2 - это переменная x как есть, 3 - это переменная x с лагом -1, а 4 - сдвиг уровня? Там нет спецификации арима?
Мэтт Альбрехт
@MattAlbrecht Y - это зависимость (ваш y со значениями .0192, -. 0748 ...); X1 - ваш x со значениями 315.97; X2 - фиктивная переменная 0,0,0,0,0,0,0,0,0,1,1,1, ... 1. Переменная X1 имеет одновременный эффект и эффект запаздывания с коэффициентами [.192 и -.177 соответственно]. Окончательное полное уравнение
IrishStat
@MattAlbrecht Y - это зависимость (ваш y со значениями .0192, -. 0748 ...); X1 - ваш x со значениями 315.97; X2 - фиктивная переменная 0,0,0,0,0,0,0,0,0,1,1,1, ... 1. Переменная X1 имеет как эффект одновременности, так и эффект запаздывания с коэффициентами [.192 и -.177 соответственно]. Окончательное полное уравнение имеет 4 коэффициента; постоянная; два коэффициента для ваших х и а
IrishStat
1

Я тоже не понимаю этот совет. Дифференцирование удаляет полиномиальные тренды. Если серии схожи из-за различий в тенденциях, то по существу удаляются эти отношения. это можно сделать только в том случае, если вы ожидаете, что компоненты с трендом будут связаны. Если один и тот же порядок разности приводит к ACF для остатков, которые выглядят так, как будто они могут быть из стационарной модели ARMA, включая белый шум, который может указывать на то, что обе серии имеют одинаковые или похожие полиномиальные тренды.

Майкл Р. Черник
источник
Дифференцирование также можно использовать для устранения нестационарности, когда нет трендов. Необоснованное использование может создать статистическую / эконометрическую чепуху, как вы правильно указали.
IrishStat
1

Как я понимаю, дифференциация дает более четкие ответы в функции взаимной корреляции. Сравните ccf(df1$x,df1$y)и ccf(ddf$dx,ddf$dy).

Kees
источник
Я согласен, что взаимная корреляция показывает, какая связь существует между разностными рядами, но я хочу сказать, что эти ряды, по-видимому, связаны главным образом из-за тенденций, которые устраняет различие.
Майкл Р. Черник
Вы не отвечаете на свой вопрос там? Есть общая тенденция, мы согласны с этим. Дифференциация позволяет взглянуть за тренд: как колебания вокруг тренда? В этом случае корреляция между x и y происходит с лагом 0 и 8. Эффект на лаге 8 также виден в автокорреляции ddf $ dy. Вы не узнали бы это без дифференциации.
Кейс