Несмотря на продолжающиеся и по сей день дебаты, ответ на этот вопрос был дан математиками Вальтером Турманом и Марком Фишером в 1988 году. В своей работе "Chickens, Eggs, and Causality, or Which Came First?" используя аппарат математической статистики, они доказали, что яйца были раньше. Однако с тех пор прошло больше 20 лет, курицы и яйца могли измениться...
На самом деле, эта статья конечно же не о курицах и яйцах, а о причинно-следственном тесте Грейнджера. В статистике и эконометрике этот тест используется для проверки причинно-следственных гипотез. Особенно часто этот тест применяется с временными данными, такими как котировки акций на бирже. В прошлом году я писал о том как предсказываются котировки на бирже с помощью твиттера, в своей работе авторы использовали именно вероятностный тест Грейнджера, для обоснования и подтверждения своей гипотезы. Именно поэтому, я решил вернуться и разобрать эту тему в деталях.
Итак, идея теста Грейнджера проста, предположим, что у нас есть две изменяющиеся во времени величины X и Y. Мы говорим, что величина X является Грейнджер-причиной для Y если значения X в прошлом помогают предсказать будущие значения Y. Это проверяется через линейную регрессию значений Y на прошлых значениях X и Y.
Иными словами, мы представляем значения Y в виде:
Yi = μi + ∑αkYi-k + ∑βkXi-k + εi
где, Yi - значение переменной Y в момент времени i
Xi - значение переменной X в момент времени i
k - временная задержка. Она определяет, влияние какой давности мы хотим проверить.
Если в полученной регрессии, коэффициентами βk можно пренебречь, то считается, что прошлые значения X не помогают предсказывать Y и, стало быть, X не является причиной по-Грейнджеру для Y. И наоборот, если в данном выражении коэффициенты βk статистически значимы и ими пренебречь нельзя, то мы считаем что X является причиной по-Грейнджеру для Y.
Здесь я не буду вдаваться в математику, она детально описана в любой книге по статистике или эконометрике. Сразу перейду к практическому применению: на практике регрессия проводится методом наименьших квадратов, после чего, для коэффициентов βk оценивается F-статистика. Если соответствующее P-значение меньше выбранного уровня значимости, то коэффициентами βk пренебречь нельзя и мы считаем, что Y зависит от X.
Аналогичный тест можно проделать в обратную сторону, чтобы проверить, не существует ли причинно-следственная связь между прошлыми значениями Y и будущими значениями X.
А теперь, вернемся, собственно к яйцам и курицам. В своей работе Турман и Фишер использовали данные о производстве яиц и количестве куриц-несушек в США с 1930 по 1986 годы. Логично, что если резко растет количество яиц то вскоре должно вырасти количество несушек, если резко растет количество куриц, то скоро должно вырасти и количество производимых ими яиц и, соответственно, наоборот если количество тех или других сокращается. На основании этих данных, проведя вероятностный тест Грейнджера, Турман и Фишер и сделали выводы о том, что яйца предшествуют курицам.
В моем распоряжении оказались данные с 1930 по 2006 год и я решил проверить, что же изменилось с тех пор. Для этого было проведено два теста, один на основе данных до 80-года, а второй на основе данных с 1980 до 2006 года.
Результаты для первого периода времени (1930-1980):
Сначала проверим, были ли первыми курицы? Для этого строится линейная регрессия выражения:
Яйцаi = μi + ΣαlЯйцаi-l + ΣβlКурицыi-l + εi
Лаг l | F-statistics | P-value | R2 |
1 | 0.10066 | 0.75244 | 0.96374 |
2 | 1.80463 | 0.17650 | 0.97185 |
3 | 1.11190 | 0.35531 | 0.97167 |
4 | 0.83738 | 0.51006 | 0.96915 |
Из результатов видно, что P-значения достаточно велики, стало быть гипотезу о том, что количество куриц в прошлом может быть использовано для предсказания количества яиц в будущем следует отвергнуть.
Проверим теперь обратную версию. Были ли первыми яйца? Снова строим регрессию но уже другого выражения:
Курицыi = μi + ΣαlКурицыi-l + ΣβlЯйцаi-l + εi
Лаг | F-statistics | P-value | R2 |
1 | 0.84340 | 0.36311 | 0.71301 |
2 | 9.64019 | 0.00033 | 0.79859 |
3 | 5.50405 | 0.00285 | 0.80759 |
4 | 4.64016 | 0.00378 | 0.81962 |
Здесь ситуация обратная, P-значения малы, стало быть мы принимаем гипотезу о том, что яйца являются причиной по-Грейнджеру для куриц.
Эти результаты очень хорошо согласуются с работой Турмана и Фишера и если сформулировать вывод кратко, то получается, что яйца были раньше курицы. Теперь посмотрим, что изменилось с тех пор.
Результаты аналогичного теста с 1980 по 2006 годы.
Были ли первыми курицы?
Лаг | F-statistics | P-value | R2 |
1 | 0.13160 | 0.72008 | 0.97621 |
2 | 12.11797 | 0.00035 | 0.99118 |
3 | 10.98387 | 0.00030 | 0.99430 |
4 | 5.62075 | 0.00651 | 0.99473 |
Были ли первыми яйца?
Лаг | F-statistics | P-value | R2 |
1 | 4.55260 | 0.04375 | 0.94914 |
2 | 2.29759 | 0.12641 | 0.95418 |
3 | 1.85629 | 0.17534 | 0.96130 |
4 | 0.57575 | 0.68488 | 0.95997 |
Мы видим, что результаты зеркально противоположны! То есть мы можем утверждать, что курицы нынче появляются раньше яиц. Как и Турман, я не берусь интерпретировать результат и особенно произошедшее изменения, этим пусть занимаются ученые биологи. Но на вопрос кто появился раньше, курица или яйцо, теперь буду давать однозначный ответ: "с 1980 года раньше по-Грейнджеру являются курицы" :)
В этой заметке я нарочно умолчал о том, как провести этот тест и что значат цифры в таблицах. В следующий раз я в деталях расскажу о его реализации на Java, самые же нетерпеливые могут заглянуть в исходный код теста Грейнджера и посмотреть пример работы для куриц и яиц
Данные о курицах-несушках и производстве яиц в США можно взять тут.
Спасибо, достаточно просто, но не примитивно. (Экономисту уловить смысл удалось :-D)
ReplyDeleteСпасибо за статью! Интересно, а почему используется именно регрессия на старые значения. А если, например, считать корреляцию со старыми значениями, то это что-то даст? Просто разбираюсь с темой причинно-следственных связей.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete> grangertest(chic~egg, order=2, data=mydata)
ReplyDeleteGranger causality test
Model 1: chic ~ Lags(chic, 1:2) + Lags(egg, 1:2)
Model 2: chic ~ Lags(chic, 1:2)
Res.Df Df F Pr(>F)
1 70
2 72 -2 9.9825 0.0001534 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
У вас где-то ошибка, P-value < 5% следовательно яйца являются Грейнджер причиной куриц.)) Турман и Фишер не ошибались