Granger causality

soyyeong·2024년 4월 13일
3

인과추론

목록 보기
2/3

Granger causality(그랜저 인과관계)


정의 및 특징

두 개의 시계열 데이터에서 한 변수(한 시계열)의 과거데이터와 다른 한 변수(시계열)의 과거데이터의 결합으로 그 변수(처음 시계열)를 선형 예측(Linear regression)을 했을 때 다른 한 변수의 과거데이터로만 선형예측 한 것이 통계적으로 유의미하고 예측에 도움을 줬다면 그것을 그래인저 인과가 있다고 말한다.

즉, 동일한 시간축의 범위를 가진 두 데이터가 있을 때 한 데이터를 다른 한쪽의 데이터의 특정한 시간간격에 대해서 선형회귀를 할 수 있다면 그래인저 인과가 있다고 한다.

시간이 지남에 따라 진화하는 변수 X가 자신의 과거 값과 X의 과거 값에 기반한 Y의 값에 대한 예측이 Y의 과거 값에만 기반한 Y의 예측보다 더 나은 경우, 진화하는 또 다른 변수 Y를 그랜저 유발한다고 말한다.

: '닭이 먼저냐 달걀이 먼저냐' 문제를 해결할 때 사용

추론불가한 문제: "닭이 먼저인가 달걀이 먼저인가?" (인과관계)
추론가능한 문제: "닭과 달걀의 생성순서 별 서로의 영향력은 어떤가?" (Granger 인과관계)
: 원인과 인과 관계를 규명하는 어렵기 때문에 상대적으로 두 요인 중 먼저 영향을 미치는 변수를 알아보고자 할 때 사용

  • 귀무가설(Null Hypothesis, 𝐻0H0): 한 변수가 다른 변수를 예측하는데 도움이 되지 않는다
  • 대립가설(Alternative Hypothesis, 𝐻1H1): 한 변수가 다른 변수를 예측하는데 도움이 된다
  • 선형 인과관계 검증 방식으로, 모형 설정의 오류가 존재할 수 있음.
  • 비선형 Granger 모형도 존재함.
  • 그랜저 인과관계 검정은 한 시계열이 다른 시계열을 예측하는 데 유용한지 여부를 판단하기 위한 통계적 가설 검정.
  • 그랜저 인과관계는 ‘시간적 관련성’으로 더 잘 설명되기 때문에 ‘인과관계’라는 용어만 사용하는 것은 잘못된 명칭이라고 함. 그랜저 인과관계는 X가 Y를 유발하는지 여부를 테스트하는 대신, X가 Y를 예측하는지 여부를 테스트함.
  • 시계열 X는 일반적으로 X의 후행 값에 대한 일련의 t-검정 및 F-검정(Y의 후행 값도 포함)을 통해 해당 X 값이 Y의 미래 값에 대해 통계적으로 유의미한 정보를 제공한다는 것을 보여줄 수 있는 경우 Y를 그랜저 원인으로 간주.
  • A라는 사건이 B라는 사건 이전에 일어났다면 A가 B의 원인이라고 파악할 수 있지만, 반드시 B가 A를 유발시켰다고 할 수는 없음 → Post hoc fallacy
    • 과거의 사건은 현재의 사건을 유발할 수 있지만, 미래의 사건은 현재의 사건을 유발할 수는 없다는 것임.
    • 이러한 논리에 근거하여 인과관계를 파악하는 것이 Granger 인과관계 검정이라고 함.
  • Granger 인과관계 검정은 전통적인 F-통계량을 이용한 비교적 단순한 검정방법임.
    • Granger의 정의에 의하면 y를 예측할 때 y의 과거값과 함께 x의 과거값도 함께 사용하는 것이 y의 과거값만으로 예측하는 것보다 정확하면 x로부터 y로의 인과방향이 존재한다고 간주함.
    • 마찬가지로 x의 예측이 자신의 과거값에 의존하는 것보다 y의 과거값이 포함됨으로써 x의 과거값만으로 예측하는 것보다 정확하면 y로부터 x로의 인과방향이 존재한다고 간주함.
    • 만일 이러한 인과관계가 두 방향으로 모두 성립되면 x와 y는 상호의존적인 관계로 쌍방의 인과방향이 존재하는 것으로 간주함.
  • H0(귀무가설) : 한 변수가 다른 변수를 예측하는 데 도움이 되지 않는다.
  • 그랜저 인과관계 검정에 대한 모형은 아래 두개의 회귀모형
    yt=i=1p+αixii+j=1pβjytj+ε1ty_t = \sum_{i=1 \to p} + \alpha_i x_{i-i} + \sum_{j=1 \to p}\beta_j y_{t-j} + \varepsilon_{1t}
    xt=i=1n+YiXii+j=1pδjytj+ε2tx_t = \sum_{i=1 \to n} + Y_i X_{i-i} + \sum_{j=1 \to p} \delta_j y_{t-j} + \varepsilon_{2t}
    • x가 y에 영향을 미치지 않는다는 귀무가설을 검정하기 위하여 y를 y의 과거값과 x의 과거값에 대한 회귀식을 추정함. 그리고 y를 y의 과거값에 대해서만 회귀식을 추정함. 여기서 오차항 εt\varepsilon_t는 상호독립적이고 iid임.

인과관계를 확인하기 위한 통계적인 방법인 Granger causality 는 일반적으로 사람들이 생각하는 원인을 바로 찾고 관련이 있는지를 알려주는 인과관계를 말하는 것은 아니다. 사람들이 생각하는 인과는 매우 추상적이고 포괄적이기 때문에 이런 것을 과학적인 방법으로 알아내는 것은 매우 어렵다. 그럼에도 시도할 수 있는 단순하고 잘 알려진 방법중, Granger causality가 있다.

Granger 인과의 요점과 방식은 매우 간단하고 쉽지만 알고리즘의 깊은 이해는 여러가지 골치아픈 문제가 엮여 있다. 그레인저 인과관계가 모든 인과문제나 해석문제를 해결해주는 것은 아니며, 결과를 해석함에 있어 분석가의 지식, 경험, 논리가 필요하다.

예를 들어 A와 B라는 데이터가 모두 1일 단위로 집계된 데이터고 265일분의 데이터라고 가정할 때 A와 A의 시점으로부터 각각 5일 후의 데이터가 선형회귀가 된다면, A는 ?????

오해석에 대한 유의

이름이 인과관계라고 되어 있는데 사람들이 흔히 생각하는 인과와는 다르게 생각해야 하므로 이 검정의 결과를 확대해석하거나 오해석하는 것을 매우 경계해야 한다.

달걀의 개체수 증가가 미래의 닭의 개체수 증가에 인과영향이 있다는 사실이 밝혀졌다고 해서 반드시 닭의 수의 요인은 달걀의 개체수다라고 확신해서 말하는 것은 무리가 있다. 단순히 달걀의 생산량을 증가시키면 닭의 수가 늘어나게 된다고 확대해석을 하기 때문이다. 그래서 그레인저 인과관계는 줄여서 인과관계라고 하지 않고, ‘그레인저 인과관계’라고 명시하는 경우가 많다.

그것은 그레인저 인과관계가 일반적으로 인과관계를 말하는 것이 아니며 사람들이 생각하는 추상적인 인과관계를 명확히 밝혀낼 것이라는 기대감을 주지 않기 위함이다.

그래인저 인과관계는 상관관계(Correlation)처럼 결과를 해석할 때 논리적으로 결함이 없는지 여러번 고찰하고 해석할 때 매우 주의해야 한다.

Input Parameter

두 개의 시계열 변수가 필요하며 시차(lag)를 파라미터로 넣어줘야 한다.

시차는 2개의 시계열 데이트 세트 A와 B에 대해 테스트할 때 A가 B의 몇 번째 뒤의 시점까지 영향을 주는지를 확인하기 위함이다.

이 시차값은 직접설정함. 적당한 값을 찾기는 매우 어려우므로 여러 시차를 반복해서 실험해 봐야 함. 경험적 판단으로 적절한 구간을 실행해보고 논리적으로 적당한 값으로 사용해야 함. 만약 적절한 Lags를 찾기 아렵다면 알려진 몇가지 방법을 활용한다.

이 방법은 입력한 시차에 해당하는 것만 사용해 선형회귀를 수행하는 게 아니라, 시차(lags)가 N으로 주어진다면 1부터 N까지의 지연에 해당하는 모든 데이터를 전부 사용한다. 즉 N시차만 영향을 주는지가 아니라 N시차까지 영향력이 있는가를 보는 것이다.

전제조건

  1. 정상성(Stationary)

    테스트하려는 두 변수가 모두 정상성을 만족해야 한다. 정상성을 만족하지 않으면 오해석할 여지가 많은 결과가 나온다. 대부분의 시계열 데이터가 정상성을 바로 만족하지 않기 때문에 정상성을 만족하도록 변형을 시도한다.

    정상성이 없는 시계열 데이터를 정상성 있는 데이터로 만들기 위해서는 일반적으로 차분과 로그 변환을 많이 한다. 특히 증감률은 절대값이 심하게 크지 않는 한 로그 차분에 근사하는 수치이다.

  2. 테스트 방향(Direction)

    테스트하려는 두 개의 변수 A와 B가 있을 때 양방향으로 총 2회의 검정세트로 수행하는 것이 일반적이며 결과에 따라 해석이 달라지는 어려움이 있다.

    • A → B / B → A

    즉, 그래인저 인과 테스트를 두 번 하는 게 일반적인데 논리적으로 확실하게 한쪽 방향이 성립하지 않다고 확신하면 한 쪽은 하지 않아도 된다.

    두 번의 테스트를 통해서 A가 B에 인과 영향을 주는지 테스트하고 B가 A에 인과 영향을 주는지 테스트하게 된다. 이 결과의 조합을 통해서 4가지 경우의 결과가 나온다.

    1. A가 B에 인과영향을 준다. B는 A에 인과영향을 주지 않는다.
    2. B가 A에 인과영향을 준다. A는 B에 인과영향을 주지 않는다.
    3. A가 B에 인과영향을 준다. 그리고 B도 A에 인과영향을 준다.
    4. A가 B에 인과영향을 주지 않는다. 그리고 B도 A에 인과영향을 주지 않는다.

    이것을 다시 논리적으로 해석해야 한다. 위에서 해석이 곤란한 것은 4번째이다. 이 해석이 곤란한 이유는 뒤에 기술할 것이다.

자세한 설명

A lags + B lags로 B의 데이터를 선형회귀한 것의 예측력 > B lags로만 B의 데이터를 선형회귀한 것의 예측력

다음 결과에 대한 조건이 통계적으로 유의미하면 A가 B에 대해 Granger Causality하다고 표현하며, 이는 인과관계가 있을 여지가 있다고 볼 수 있다. (하지만 명확하게 인과관계가 있다는 의미가 아니므로 주의!)

귀무가설 : “Granger Causality를 따르지 않는다”

p-value가 0.05 이하로 나오면 귀무가설을 기각한다.

결과 해석

앞서 시차(lag)가 정해진 경우에는 경우의 수를 보면 총 4개의 결과가 나올 수 있다.

  1. 변수A → 변수B = Granger Causality 성립
    변수B → 변수A = Granger Causality 성립하지 않음

    이 경우는 변수A가 변수B에 선행한다고 볼 수 있다. 즉 변수A가 변수A의 인과요인이 될 가능성이 높다.
  2. 변수A → 변수B = Granger Causality 성립하지 않음
    변수B → 변수A = Granger Causality 성립

    이 경우는 변수B가 변수A에 선행한다고 볼 수 있다. 즉 변수B가 변수A의 인과요인이 될 가능성이 높다.
  3. 변수A → 변수B = Granger Causality 성립
    변수B → 변수A = Granger Causality 성립

    쌍방으로 Granger Causality가 성립하는 경우로 이 경우는 제3의 외부변수(Exogenous Variable)가 영향을 공통으로 주었을 가능성이 높다. 이 경우 제3의 외부변수를 알아내던가 포기하던가 해야 한다. VAR모형(사실 Granger Causality도 VAR모형중 하나이다)을 사용해야 할 수 있다.
  4. 변수A → 변수B = Granger Causality 성립하지 않음
    변수B → 변수A = Granger Causality 성립하지 않음

    두 변수가 서로 인과영향을 주지 않는다고 볼 수도 있지만 단언하지는 못한다. ARIMA모형으로 추가 확인이 가능한 것으로 알려져 있다. 주의 할 점은 위의 결과가 입력값으로 주는 시차에 따라서 달라질 수 있으므로 시차에 따른 해석을 달리해야 하는 문제가 있다. 즉, 해석에 있어서 사람의 경험과 판단이 개입되어야 한다.

소스 코드


from statsmodels.tsa.stattools import grangercausalitytests

df['kakao_ac'].diff()
sample_outs = grangercausalitytests(df[['kakao_ac','kakao_v']], maxlag=4)
print(sample_outs)

출처: https://songseungwon.tistory.com/133

Reference


1개의 댓글

comment-user-thumbnail
2024년 4월 29일

글 퀄리티가 너무 좋네요. 잘 읽었습니다.

답글 달기