Biorąc pod uwagę następujące dwa szeregi czasowe ( x , y ; patrz poniżej), jaka jest najlepsza metoda modelowania związku między długoterminowymi trendami w tych danych?
Oba szeregi czasowe mają znaczące testy Durbina-Watsona, gdy są modelowane jako funkcja czasu i żadne z nich nie jest stacjonarne (jak rozumiem ten termin, czy to oznacza, że musi on być tylko stacjonarny w resztach?). Powiedziano mi, że oznacza to, że powinienem wziąć różnicę pierwszego rzędu (przynajmniej może nawet 2 rzędu) każdej serii czasowej, zanim będę mógł modelować jedną jako funkcję drugiej, zasadniczo wykorzystując arimę (1,1,0 ), arima (1,2,0) itp.
Nie rozumiem, dlaczego musisz się zniechęcać, zanim będziesz mógł je wymodelować. Rozumiem potrzebę modelowania autokorelacji, ale nie rozumiem, dlaczego konieczne jest różnicowanie. Wydaje mi się, że zniechęcanie przez różnicowanie usuwa pierwotne sygnały (w tym przypadku trendy długoterminowe) w danych, którymi jesteśmy zainteresowani, i pozostawia „szum” o wyższej częstotliwości (luźno używając terminu szum). Rzeczywiście, w symulacjach, w których tworzę prawie idealną relację między jedną serią czasową a drugą, bez autokorelacji, różnicowanie szeregów czasowych daje mi wyniki, które są sprzeczne z intuicją dla celów wykrywania relacji, np.
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))
W tym przypadku b jest silnie związane z a , ale b ma więcej hałasu. Dla mnie to pokazuje, że różnicowanie nie działa w idealnym przypadku do wykrywania zależności między sygnałami o niskiej częstotliwości. Rozumiem, że różnicowanie jest powszechnie stosowane do analizy szeregów czasowych, ale wydaje się być bardziej przydatne do określania zależności między sygnałami o wysokiej częstotliwości. czego mi brakuje?
Przykładowe dane
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