كيفية إجراء اختبار السببية جرانجر في بايثون
يتم استخدام اختبار السببية جرانجر لتحديد ما إذا كانت إحدى السلاسل الزمنية مفيدة في التنبؤ بأخرى أم لا.
يستخدم هذا الاختبار الفرضيات الصفرية والبديلة التالية:
الفرضية الصفرية (H 0 ): السلسلة الزمنية x لا تسبب السلسلة الزمنية y لجرانجر
الفرضية البديلة ( HA ): السلاسل الزمنية x السلاسل الزمنية لجرانجر تسبب y
مصطلح “أسباب جرانجر” يعني أن معرفة قيمة السلسلة الزمنية x بتأخر معين مفيد للتنبؤ بقيمة السلسلة الزمنية y في فترة لاحقة.
ينتج عن هذا الاختبار إحصائية اختبار F مع القيمة p المقابلة. إذا كانت القيمة p أقل من مستوى معين من الأهمية (أي α = 0.05)، فيمكننا رفض فرضية العدم ونستنتج أن لدينا أدلة كافية للتأكيد على أن السلسلة الزمنية x Granger تسبب السلسلة الزمنية y.
يمكننا استخدام الدالة grangercausalitytests() من حزمة statsmodels لإجراء اختبار Granger-Causality في بايثون:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' column1 ', ' column2 ']], maxlag=[ 3 ])
لاحظ أن maxlag يحدد عدد الفترات الزمنية التي سيتم استخدامها في السلسلة الزمنية الأولى.
يوضح المثال التالي خطوة بخطوة كيفية استخدام هذه الوظيفة عمليًا.
الخطوة 1: تحميل البيانات
في هذا المثال، سنستخدم مجموعة بيانات تحتوي على قيم لعدد البيض المنتج وكذلك عدد الدجاج في الولايات المتحدة من عام 1930 إلى عام 1983:
import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/- Statorials/Miscellaneous/main/chicken_egg.txt" #read in dataset as pandas DataFrame df = pd. read_csv (url, sep=" ") #view first five rows of DataFrame df. head () year chicken egg 0 1930 468491 3581 1 1931 449743 3532 2 1932 436815 3327 3 1933 444523 3255 4 1934 433937 3156
ذات صلة: كيفية قراءة ملفات CSV باستخدام Pandas
الخطوة الثانية: إجراء اختبار السببية لجرانجر
بعد ذلك، سوف نستخدم وظيفة Grangercausalitytests () لإجراء اختبار سببية Granger لمعرفة ما إذا كان عدد البيض الذي تم إنتاجه يتنبأ بالعدد المستقبلي للدجاج. سنقوم بإجراء الاختبار باستخدام ثلاثة إزاحات:
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' chicken ', ' egg ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=5.4050, p=0.0030, df_denom=44, df_num=3 ssr based chi2 test: chi2=18.7946, p=0.0003, df=3 likelihood ratio test: chi2=16.0003, p=0.0011, df=3 parameter F test: F=5.4050, p=0.0030, df_denom=44, df_num=3
تبين أن إحصائيات اختبار F هي 5.405 والقيمة p المقابلة هي 0.0030 .
وبما أن القيمة p أقل من 0.05، يمكننا رفض الفرضية الصفرية للاختبار ونستنتج أن معرفة عدد البيض مفيد في التنبؤ بالعدد المستقبلي للدجاج.
الخطوة 3: إجراء اختبار السببية لجرانجر في الاتجاه المعاكس
على الرغم من أننا رفضنا الفرضية الصفرية للاختبار، فمن الممكن في الواقع أن تحدث حالة سببية عكسية. بمعنى آخر، من الممكن أن يتسبب عدد الدجاج في تغيير عدد البيض.
لاستبعاد هذا الاحتمال، نحن بحاجة إلى إجراء اختبار السببية جرانجر في الاتجاه المعاكس، وذلك باستخدام الدجاج كمتغير متنبئ والبيض كمتغير الاستجابة :
from statsmodels. tsa . stattools import grangercausalitytests #perform Granger-Causality test grangercausalitytests(df[[' egg ', ' chicken ']], maxlag=[ 3 ]) Granger Causality number of lags (no zero) 3 ssr based F test: F=0.5916, p=0.6238, df_denom=44, df_num=3 ssr based chi2 test: chi2=2.0572, p=0.5606, df=3 likelihood ratio test: chi2=2.0168, p=0.5689, df=3 parameter F test: F=0.5916, p=0.6238, df_denom=44, df_num=3
تبين أن إحصائيات اختبار F هي 0.5916 والقيمة p المقابلة هي 0.6238 .
وبما أن القيمة p لا تقل عن 0.05، فلا يمكننا رفض فرضية العدم. وبعبارة أخرى، فإن عدد الدجاجات لا يتنبأ بعدد البيض في المستقبل.
وهكذا يمكننا أن نستنتج أن معرفة عدد البيض مفيد في التنبؤ بعدد الدجاج في المستقبل.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى باستخدام السلاسل الزمنية في بايثون:
كيفية إنشاء مؤامرة سلسلة زمنية في سيبورن
كيفية إنشاء مؤامرة سلسلة زمنية في Matplotlib