Słownik metodologiczny · Projekt badania

Przyczynowość w sensie Grangera – co naprawdę pokazuje test?

Przyczynowość w sensie Grangera oznacza, że przeszłość jednego szeregu poprawia prognozę drugiego. Pokazujemy, jak działa test, dlaczego nie dowodzi wpływu, przykład w R i opis do pracy.

Strona główna / Słownik / Przyczynowość w sensie Grangera
W skrócie: Przyczynowość w sensie Grangera oznacza, że przeszłe wartości X poprawiają prognozę Y ponad przeszłość samego Y. Test porównuje modele z opóźnieniami X i bez nich i wymaga stacjonarnych szeregów. Pokazuje pierwszeństwo czasowe, a nie wpływ: ten sam wynik da wspólna przyczyna.

Co to jest przyczynowość w sensie Grangera?

Przyczynowość w sensie Grangera (ang. Granger causality) to własność dwóch szeregów czasowych: X „powoduje w sensie Grangera” Y, jeśli przeszłe wartości X poprawiają prognozę Y ponad to, co daje sama przeszłość Y. Granger (1969) zaproponował testowalne definicje przyczynowości i sprzężenia zwrotnego właśnie w kategoriach prognozy. Seth i in. (2015) nazywają to predykcyjnym pojęciem przyczynowości: przyczyna poprzedza skutek i pomaga go przewidzieć.

Jak działa test

Porównuje się dwa modele regresji Y na jego własnych opóźnieniach: bez opóźnień X i z nimi. Test F (lub Walda) sprawdza, czy współczynniki przy opóźnieniach X są łącznie zerowe. Liczbę opóźnień wybiera się z góry albo kryterium AIC lub BIC. Oba szeregi powinny być stacjonarne – sprawdź to np. testem Dickeya–Fullera, a w razie potrzeby zróżnicuj dane. Test wykonuje się w obu kierunkach, bo możliwe jest też sprzężenie zwrotne.

To nie jest przyczynowość kontrfaktyczna

Pomimo nazwy test mówi o pierwszeństwie w czasie i przydatności do prognozy, a nie o tym, co stałoby się z Y po zmianie X. Seth i in. (2015) podkreślają, że opisuje on zależności w danych, a nie fizyczny mechanizm. Jeśli obie zmienne zależą od trzeciej, która wpływa na X szybciej niż na Y, X „wyprzedzi” Y bez żadnego wpływu – to klasyczna zmienna zakłócająca. Granger (1969) zwracał uwagę, że wnioski zależą od tego, jak szeroki zestaw możliwych przyczyn uwzględniono. Szerzej o tej różnicy piszemy w haśle korelacja a przyczynowość i w poradniku o grafach przyczynowych (DAG).

Przykład

Zasymulowaliśmy w R 200 pomiarów, w których wspólny czynnik Z wpływa na X po jednym okresie, a na Y po dwóch; X nie wpływa na Y. Test z dwoma opóźnieniami wskazał „przyczynowość” X → Y: F = 19.74, p < .001 (w drugą stronę F = 1.58, p = .21). Po dodaniu przeszłości Z do modelu efekt zniknął: F = 0.89, p = .411.

Jak opisać w pracy

Zależność czasową sprawdzono testem przyczynowości w sensie Grangera z dwoma opóźnieniami, po potwierdzeniu stacjonarności obu szeregów. Przeszłe wartości X poprawiały prognozę Y, F(2, 191) = 19.74, p < .001. Wynik interpretujemy jako pierwszeństwo czasowe i wartość prognostyczną, a nie jako dowód wpływu przyczynowego.
Przykład reprodukowalny

Przyczynowość w sensie Grangera w R

Kod symuluje dwa szeregi zależne od wspólnego czynnika, uruchamia lmtest::grangertest w obu kierunkach, a potem powtarza test z kontrolą przeszłości wspólnego czynnika.

Pozorna przyczynowość Grangera przy wspólnej przyczynie

Dane wejściowe: 200 symulowanych pomiarów trzech szeregów (X, Y, Z); set.seed(4471).

Co odczytać: statystykę F i p dla kierunku X → Y i Y → X oraz test opóźnień X po dodaniu opóźnień Z.

R
suppressPackageStartupMessages(library(lmtest))
set.seed(4471)
n <- 200
z <- as.numeric(arima.sim(list(ar = 0.5), n))   # wspólna przyczyna
x <- y <- numeric(n)
for (t in 3:n) {
  x[t] <- 0.3 * x[t - 1] + 0.8 * z[t - 1] + rnorm(1)
  y[t] <- 0.3 * y[t - 1] + 0.8 * z[t - 2] + rnorm(1)  # x nie wpływa na y
}
d <- data.frame(x, y, z)[-(1:2), ]
wynik <- function(g) c(F = round(g$F[2], 2), p = signif(g$`Pr(>F)`[2], 2))
rbind(x_do_y = wynik(grangertest(y ~ x, order = 2, data = d)),
      y_do_x = wynik(grangertest(x ~ y, order = 2, data = d)))
# kontrola z: czy przeszłość x poprawia prognozę y, gdy w modelu jest przeszłość z?
L <- function(v, k) c(rep(NA, k), head(v, -k))
d2 <- with(d, data.frame(y, y1 = L(y, 1), y2 = L(y, 2), z1 = L(z, 1), z2 = L(z, 2),
                         x1 = L(x, 1), x2 = L(x, 2)))[-(1:2), ]
m0 <- lm(y ~ y1 + y2 + z1 + z2, d2)
m1 <- lm(y ~ y1 + y2 + z1 + z2 + x1 + x2, d2)
a <- anova(m0, m1); c(F = round(a$F[2], 2), p = round(a$`Pr(>F)`[2], 3))
Wynik w R
           F       p
x_do_y 19.74 1.6e-08
y_do_x  1.58 2.1e-01
    F     p 
0.890 0.411 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet lmtest). Stopnie swobody testu podaje pełny wydruk grangertest.

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. lmtest (wersja 0.9.40): Zeileis, A., & Hothorn, T. (2002). Diagnostic checking in regression relationships. R News, 2(3), 7–10. https://CRAN.R-project.org/doc/Rnews/

Najczęstsze pytania

Czy przyczynowość w sensie Grangera dowodzi wpływu przyczynowego?

Nie. Pokazuje, że przeszłość X poprawia prognozę Y. Taki wynik daje też wspólna przyczyna działająca na X wcześniej niż na Y albo pominięta zmienna.

Ile opóźnień wybrać w teście Grangera?

Tyle, ile uzasadnia rytm zjawiska i częstość pomiaru, albo według AIC lub BIC. Wynik bywa wrażliwy na tę decyzję, więc podaj go dla kilku rozsądnych wartości.

Czy test Grangera można liczyć na danych z trendem?

Lepiej nie. Niestacjonarne szeregi łatwo dają pozorne zależności. Najpierw sprawdź stacjonarność i w razie potrzeby zróżnicuj dane albo usuń trend.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Granger, C. W. J. (1969). Investigating causal relations by econometric models and cross-spectral methods. Econometrica, 37(3), 424–438. https://doi.org/10.2307/1912791
  2. Seth, A. K., Barrett, A. B., & Barnett, L. (2015). Granger causality analysis in neuroscience and neuroimaging. The Journal of Neuroscience, 35(8), 3293–3297. https://doi.org/10.1523/jneurosci.4399-14.2015 ● Otwarty dostęp

Cytowania BibTeX

@article{granger1969investigating, author={Granger, C. W. J.}, title={{Investigating causal relations by econometric models and cross-spectral methods}}, journal={Econometrica}, year={1969}, volume={37}, number={3}, pages={424--438}, doi={10.2307/1912791}}
@article{seth2015granger, author={Seth, Anil K. and Barrett, Adam B. and Barnett, Lionel}, title={{Granger causality analysis in neuroscience and neuroimaging}}, journal={The Journal of Neuroscience}, year={2015}, volume={35}, number={8}, pages={3293--3297}, doi={10.1523/jneurosci.4399-14.2015}}
R