Związek między dwoma szeregami czasowymi: ARIMA

12

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
Matt Albrecht
źródło

Odpowiedzi:

6

Matt, masz rację co do podniesionych przez ciebie obaw dotyczących stosowania niepotrzebnej struktury różnicującej. W celu zidentyfikowania odpowiedniego modelu wprowadź opis zdjęcia tutajdla twoich danych dających znaczącą strukturę przy renderowaniu procesu błędu Gaussa wprowadź opis zdjęcia tutajz ACF wynoszącymwprowadź opis zdjęcia tutajproces modelowania Identyfikacji funkcji przenoszenia wymaga (w tym przypadku) odpowiedniego różnicowania, aby stworzyć serie zastępcze, które są nieruchome, a zatem przydatne do IDENTYFIKACJI relacji. W tym wymogu różnicowania dla IDENTYFIKACJI były podwójne różnicowanie dla X i pojedyncze różnicowanie dla Y. Ponadto stwierdzono, że filtr ARIMA dla podwójnie zróżnicowanego X jest AR (1). Zastosowanie tego filtra ARIMA (tylko w celu identyfikacji!) Do obu stacjonarnych szeregów dało następującą strukturę korelacji krzyżowej. wprowadź opis zdjęcia tutajsugerując prosty współczesny związek. wprowadź opis zdjęcia tutaj. Należy zauważyć, że chociaż oryginalne serie wykazują niestacjonarność, niekoniecznie oznacza to, że w modelu przyczynowym konieczne jest różnicowanie. Ostateczny model wprowadź opis zdjęcia tutaji końcowy acf to potwierdzająwprowadź opis zdjęcia tutaj. Zamykając końcowe równanie, oprócz jednego zidentyfikowanego empirycznie przesunięcia poziomu (naprawdę przechwytują zmiany)

 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

Na koniec zwróć uwagę na cechy sugerowanego modelu.wprowadź opis zdjęcia tutaj

seria Przesunięcie poziomu (0,0,0,0,0,0,0,0,0,0,1,1, ........., 1) sugeruje, że jeśli nie jest leczona, resztki modelu wykazują poziom przesunięcie w okresie 10 lub około 10 THUS test hipotezy o wspólnej średniej resztkowej między pierwszymi 10 resztami a ostatnimi 42 byłby znaczący przy alfa = 0,0002 w oparciu o „test t -4,10”. Zauważ, że włączenie stałej gwarantuje, że ogólna średnia reszt nie różni się znacząco od zera, ALE niekoniecznie dla wszystkich podokresów. Poniższy wykres wyraźnie to pokazuje (biorąc pod uwagę, że kazano ci wyglądać!). Rzeczywista / Dopasowanie / Prognoza jest dość pouczająca wprowadź opis zdjęcia tutaj. Statystyki są jak latarnie, niektóre wykorzystują je do oparcia się na innych, do oświetlenia.

IrishStat
źródło
Dzięki za kompleksową analizę, Dave. Właśnie dlatego upewniam się, że rozumiem, 2 to zmienna x , jak to jest, 3 to zmienna x z opóźnieniem -1, a 4 to przesunięcie poziomu? Nie ma specyfikacji arima?
Matt Albrecht,
@MattAlbrecht Y jest zależne (twoje y z wartościami .0192, -. 0748 ...); X1 jest twoim x z wartościami 315.97; X2 jest zmienną fikcyjną 0,0,0,0,0,0,0,0,0,0,1,1,1, ... 1. Zmienna X1 ma jednocześnie efekt opóźnienia i opóźnienia o współczynnikach [odpowiednio .192 i -177]. Ostateczne pełne równanie to
IrishStat
@MattAlbrecht Y jest zależne (twoje y z wartościami .0192, -. 0748 ...); X1 jest twoim x z wartościami 315.97; X2 jest zmienną fikcyjną 0,0,0,0,0,0,0,0,0,0,1,1,1, ... 1. Zmienna X1 ma zarówno efekt równoczesny, jak i opóźnienie o współczynnikach [odpowiednio .192 i -177]. Ostateczne pełne równanie ma 4 współczynniki; stała ; dwa współczynniki dla twojego x oraz a
IrishStat
1

Też nie rozumiem tej rady. Różnicowanie usuwa trendy wielomianowe. Jeśli seria jest podobna ze względu na różnice w trendach, zasadniczo usuwa tę relację. zrobiłbyś to tylko wtedy, gdy spodziewasz się, że wycofane komponenty będą ze sobą powiązane. Jeśli ta sama kolejność różnicowania prowadzi do acf dla reszt, które wyglądają tak, jakby mogły pochodzić ze stacjonarnego modelu ARMA, w tym białego szumu, co może wskazywać, że obie serie mają te same lub podobne trendy wielomianowe.

Michael R. Chernick
źródło
Różnicowanie można również wykorzystać do wyeliminowania niestacjonarności, gdy nie ma trendów. Nieuzasadnione użycie może stworzyć statystyczny / ekonometryczny nonsens, jak prawidłowo wskazałeś.
IrishStat
1

W moim rozumieniu różnicowanie daje wyraźniejsze odpowiedzi w funkcji korelacji krzyżowej. Porównaj ccf(df1$x,df1$y)i ccf(ddf$dx,ddf$dy).

Kees
źródło
Zgadzam się, że korelacja krzyżowa pokazuje, jaki związek istnieje między szeregami różnicowanymi, ale mam na myśli to, że te szeregi wydają się być powiązane głównie z powodu trendów, które usuwa różnicowanie.
Michael R. Chernick
Nie odpowiadasz na własne pytanie? Zgadzamy się, że istnieje wspólny trend. Różnicowanie pozwala spojrzeć poza trend: jak zmieniają się trendy? W tym przypadku korelacja między xiy występuje z opóźnieniem 0 i 8. Efekt w opóźnieniu 8 jest również widoczny w autokorelacji ddf $ dy. Nie wiedziałbyś tego bez różnicowania.
Kees