З огляду на наступні два часові ряди ( 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