يمثل تحليل السلاسل الزمنية أحد أكثر الميادين تعقيداً وأهمية في الإحصاء التطبيقي، والاقتصاد القياسي، وعلم البيانات الحديث. تعتمد كفاءة النماذج التنبؤية ودقة الاستدلال الإحصائي على خصائص البيانات الأساسية؛ حيث تفترض غالبية الخوارزميات والنماذج الرياضية، مثل نماذج الانحدار الذاتي والمتوسطات المتحركة، أن الخصائص الإحصائية للسلسلة تظل ثابتة ومستقرة عبر الزمن. يؤدي تجاهل هذه الخصائص إلى استنتاجات خاطئة وعلاقات مضللة تفقد النماذج موثوقيتها وصلاحيتها العلمية في البيئات التطبيقية والبحثية المتقدمة.
يبرز مفهوم الاستقرارية كشرط بنيوي لا غنى عنه قبل الشروع في النمذجة المتقدمة. عندما تفتقر السلسلة الزمنية إلى الاستقرار، فإن المتوسط والتباين والتباين المشترك تتغير مع مرور الوقت، مما يجعل المقاييس الإحصائية التقليدية عاجزة عن تمثيل السلوك المستقبلي بدقة. من هذا المنطلق، طُوّرت حزمة من الاختبارات القياسية لتشخيص بنية السلسلة والتحقق من احتوائها على ما يعرف بـ “جذر الوحدة”، والذي يعد المؤشر الرياضي الأساسي لعدم الاستقرار العشوائي في السلاسل الزمنية المعاصرة.
يعد اختبار ديكي-فولر المعزز (Augmented Dickey-Fuller Test) المعيار الذهبي والأداة الأكثر استخداماً في مختلف الأوساط الأكاديمية والعملية لتحديد وجود جذر الوحدة. يستعرض هذا المقال الشامل اختبار ADF بدءاً من الجذور النظرية والاشتقاقات الرياضية، وصولاً إلى التطبيق العملي المتقدم باستخدام لغة Python ومكتباتها الإحصائية المتخصصة، مقدماً دليلاً مرجعياً متكاملاً للمحللين والباحثين والمطورين الساعين لبناء نماذج قياسية متينة ورصينة.
- 1. مقدمة شاملة لاختبار ديكي فولر المعزز (ADF) وأهميته في السلاسل الزمنية
- 2. المفهوم الرياضي والنظري للاستقرارية (Stationarity)
- 3. الأساس الرياضي والاشتقاق الإحصائي لاختبار ديكي فولر المعزز
- 4. الفرضيات الإحصائية ومعايير اتخاذ القرار في اختبار ADF
- 5. إعداد بيئة العمل بلغة بايثون والمكتبات الأساسية
- 6. استكشاف البيانات وتمثيلها بصرياً قبل إجراء الاختبار
- 7. التطبيق العملي لاختبار ديكي فولر المعزز في بايثون خطوة بخطوة
- 8. قراءة وتفسير مخرجات دالة adfuller بتفصيل دقيق
- 9. معالجة السلاسل الزمنية غير المستقرة وتحويلها
- 10. مقارنة اختبار ADF باختبارات الاستقرارية الأخرى
- 11. الأخطاء الشائعة وحالات الفشل عند تطبيق ADF في بايثون
- 12. تطبيقات متقدمة وسيناريوهات برمجية شاملة
- خاتمة
- References
1. مقدمة شاملة لاختبار ديكي فولر المعزز (ADF) وأهميته في السلاسل الزمنية
1.1 تعريف اختبار ديكي فولر المعزز وسياقه التاريخي
نشأ اختبار ديكي-فولر في سياق محاولات الاقتصاديين القياسيين لتجاوز المعضلات المنهجية التي واجهت التحليل القياسي الكلاسيكي عند التعامل مع السلاسل غير المستقرة. قدّم العالمان ديفيد ديكي وواين فولر في عام 1979 ورقة بحثية رائدة أرست الأساس لاختبار وجود جذر الوحدة في نماذج الانحدار الذاتي من الدرجة الأولى. أظهر هذا الاختبار الأولي كفاءة عالية، لكنه عانى من محدودية واضحة تجلت في افتراضه الصارم بأن البواقي الناتجة عن عملية الانحدار تمثل ضجيجاً أبيض نقيّاً خالياً تماماً من أي ارتباط ذاتي.
نتيجة لهذا القصور، قام الباحثان في عام 1981 بتطوير النسخة المعززة (Augmented Dickey-Fuller Test) لمعالجة مشكلة الارتباط الذاتي ذات الرتب العليا في حدود الخطأ. تم ذلك عبر إدراج فروق زمنية متباطئة للمتغير التابع كمتغيرات مفسرة مستقلة داخل معادلة الاختبار، مما سمح بامتصاص الارتباط التسلسلي المعقد وضمان سلامة التوزيع المقارب لإحصائية الاختبار.
تتمثل الأهداف الأساسية لتطبيق اختبار ADF في توفير آلية فحص استدلالية تمكن الباحث من التمييز الدقيق بين السلاسل المستقرة بطبيعتها وتلك التي تتبع عمليات السير العشوائي ذات الذاكرة الدائمة. يكتسب هذا التمييز أهمية استثنائية في مجالات الاقتصاد والقياس النفسي، حيث تترتب على طبيعة استقرار السلسلة استتباعات جذرية تتعلق بنظرية الصدمات واستمراريتها وتأثير السياسات العامة أو التدخلات السلوكية على المدى الطويل.
1.2 مفهوم السلاسل الزمنية ودور الاستقرارية في النمذجة الإحصائية
تُعرّف السلسلة الزمنية بأنها تتابع منظم من المشاهدات الإحصائية المرتبة ترتيباً زمنياً متتابعاً، وعادة ما تؤخذ عبر فترات زمنية متساوية. تتألف السلسلة من مكونات هيكلية تشمل الاتجاه العام طويل الأجل، والمكون الموسمي المنتظم، والدورات الدورية غير المنتظمة، والاضطرابات العشوائية غير المتوقعة. تكمن الغاية الأساسية من تحليل السلاسل الزمنية في نمذجة هذه المكونات لاستخلاص الديناميكيات الأساسية والتنبؤ بالقيم المستقبلية بأعلى درجة ممكنة من الدقة الرياضية.
تلعب الاستقرارية دوراً حاسماً في هذا السياق؛ إذ إن النماذج الإحصائية القياسية تفترض ثبات القوانين المولدة للبيانات. إذا كانت السلسلة غير مستقرة، فإن التقديرات المستخلصة من عينة معينة تصبح مقيدة بتلك الفترة الزمنية المحددة ولا يمكن تعميمها على الفترات اللاحقة، مما يؤدي إلى انهيار قدرة النموذج التنبؤية وتضخيم أخطاء التقدير بصورة مطردة مع اتساع أفق التنبؤ.
تتجسد الخطورة الكبرى لغياب الاستقرارية في ظاهرة الانحدار الزائف (Spurious Regression)، والتي كشفها الباحثان غرانجر ونيوبولد في دراستهما الشهيرة عام 1974. تحدث هذه الظاهرة عندما يُظهر انحدار سلسلتين غير مستقرتين وغير مرتبطتين إحصائياً معاملات ارتباط وقيم دلالة وهمية مرتفعة للغاية (مثل ارتفاع معامل التحديد $R^2$ وتدني إحصائية داربن-واتسون)، مما يقود الباحث إلى استنتاج علاقات سببية خيالية لا وجود لها في الواقع.
1.3 حالات الاستخدام الشائعة للاختبار في الأبحاث والتحليلات
يمتد تطبيق اختبار ديكي-فولر المعزز عبر مصفوفة واسعة من التخصصات الأكاديمية والمهنية. في التحليلات المالية والاقتصادية، يُستخدم الاختبار لفحص كفاءة الأسواق، واختبار فرضية السير العشوائي لأسعار الأسهم، وتحديد استقرار المؤشرات الاقتصادية الكلية مثل الناتج المحلي الإجمالي، ومعدلات التضخم، وأسعار الفائدة، ومعدلات البطالة، وهي مؤشرات حيوية لصناع القرار والمستثمرين على حد سواء.
في الأبحاث النفسية والعلوم السلوكية التتبعية، يُوظف اختبار ADF في فحص استقرار التغيرات السلوكية والمزاجية عبر الزمن للتحقق مما إذا كانت الاستجابات الانفعالية للمرضى تعود إلى مستوياتها الطبيعية بعد التعرض لمحفزات معينة (خاصية الارتداد للمتوسط) أو أنها تعاني من تحولات دائمة تتطلب تدخلاً علاجياً هيكلياً.
علاوة على ذلك، يشكل اختبار ADF المتطلب التحضيري الأساسي في مشاريع التعلم الآلي ونمذجة السلاسل الزمنية باستخدام عائلات نماذج ARIMA وSARIMAX وVAR. يُبنى تحديد معاملات التكامل $d$ في هذه النماذج على نتائج الاختبار لضمان تحويل البيانات إلى الحالة المستقرة قبل التدريب، وتفادي انحراف الخوارزميات وتوليد توقعات منحازة تفقد المؤسسات ميزتها التنافسية.
2. المفهوم الرياضي والنظري للاستقرارية (Stationarity)
2.1 الاستقرارية الضعيفة مقابل الاستقرارية القوية
تنقسم الاستقرارية في الأدبيات الإحصائية إلى مستويين رئيسيين: الاستقرارية الصارمة (Strict Stationarity) والاستقرارية الضعيفة (Weak Stationarity). تتطلب الاستقرارية الصارمة أن يكون التوزيع الاحتمالي المشترك لأي مجموعة من المتغيرات الزمنية متطابقاً وثابتاً عند إزاحة السلسلة بأي فترة زمنية $k$، بحيث يتحقق الشرط الرياضي التالي:
$$F(y_{t_1}, y_{t_2}, dots, y_{t_n}) = F(y_{t_1+k}, y_{t_2+k}, dots, y_{t_n+k})$$
نظراً لصعوبة التحقق من هذا الشرط الصارم في البيانات التطبيقية المعقدة، يعتمد التحليل القياسي الحديث على الاستقرارية بالمعنى الضعيف، والمعروفة أيضاً باستقرارية العزوم من الدرجة الثانية (Second-order Stationarity). تتطلب الاستقرارية الضعيفة توفر ثلاثة شروط رياضية أساسية:
- ثبات المتوسط الرياضي: يجب أن يكون التوقع الرياضي للسلسلة ثابتاً ومستقلاً عن الزمن: $E[y_t] = \mu$ لجميع قيم $t$.
- ثبات التباين: يجب أن يكون تباين السلسلة محدوداً وثابتاً عبر جميع الفترات: $Var(y_t) = \sigma^2 < \infty$.
- اعتماد التباين المشترك على الفجوة الزمنية فقط: يجب أن تعتمد دالة التغاير الذاتي بين مشاهدتين على الإزاحة الزمنية بينهما $k$ وليس على النقطة الزمنية $t$ نفسها: $Cov(y_t, y_{t-k}) = \gamma_k$.
تشكل هذه الفرضيات الثلاث الركيزة الرياضية التي تسمح بحساب التقديرات الإحصائية الموثوقة وبناء فترات الثقة الصالحة لعمليات التنبؤ المستقبلي.
2.2 أنماط عدم الاستقرارية في البيانات الزمنية
تتعدد أشكال عدم الاستقرارية التي تعتري البيانات الحقيقية، ويعد التمييز بينها خطوة جوهرية لتحديد أسلوب المعالجة الملائم. النمط الأول هو عدم الاستقرارية الناتجة عن الاتجاه الحتمي (Deterministic Trend)، حيث تتغير قيمة السلسلة كدالة خطية أو غير خطية واضحة في الزمن حول متوسط غير ثابت، وتتميز هذه العمليات بإمكانية استعادة استقرارها بمجرد طرح خط الاتجاه العام المقدر.
أما النمط الثاني فيتمثل في الاتجاه العشوائي (Stochastic Trend)، والذي ينشأ من تراكم الصدمات العشوائية عبر الزمن كما في عمليات السير العشوائي، حيث تترك كل صدمة أثراً دائماً على المستوى المستقبلي للسلسلة. لا يمكن إزالة هذا النمط عبر الانحدار على الزمن، بل يتطلب تطبيق الفروق المتتالية للوصول إلى الاستقرار.
يتمثل النمط الثالث في عدم الاستقرارية الموسمية والدورية (Seasonality)، حيث يتقلب التوزيع الاحتمالي وفق نمط زمني دوري متكرر مرتبط بأشهر السنة أو أيام الأسبوع. وأخيراً، يبرز عدم استقرار التباين (Heteroscedasticity)، حيث تتسع وتضيق تقلبات السلسلة عبر الزمن، وهي ظاهرة شائعة جداً في العوائد المالية وتتطلب تحويلات رياضية غير خطية كتحويلات بوكس-كوكس أو نماذج ARCH/GARCH لتثبيت تشتت التباين.

2.3 مفهوم عملية جذر الوحدة (Unit Root Process)
لفهم الآلية الرياضية لجذر الوحدة، نفترض نموذج الانحدار الذاتي البسيط من الدرجة الأولى $AR(1)$ الموضح بالصيغة:
$$y_t = \rho y_{t-1} + \epsilon_t$$
حيث تمثل $\epsilon_t$ عملية ضجيج أبيض بمتوسط صفري وتباين $\sigma^2$. ترتبط ديناميكية هذه السلسلة بقيمة المعامل $rho$. إذا كانت $|rho| < 1$، فإن السلسلة تكون مستقرة وتتلاشى تأثيرات الصدمات العشوائية تدريجياً عبر الزمن وتعود السلسلة دوماً إلى متوسطها طويل الأجل. أما إذا كانت $rho = 1$، فإن النموذج يتحول إلى عملية السير العشوائي الصرفة (Pure Random Walk):
$$y_t = y_{t-1} + \epsilon_t$$
عند فك هذه المتتالية بالتكرار التعويضي، نحصل على الصيغة التراكمية:
$$y_t = y_0 + \sum_{i=1}^t \epsilon_i$$
توضح هذه المعادلة أن القيمة الحالية $y_t$ تمثل المجموع التراكمي لجميع الصدمات العشوائية التاريخية منذ النقطة الزمنية الصفرية $y_0$. يترتب على ذلك أن تباين السلسلة $Var(y_t) = t\sigma^2$ يتزايد خطياً مع الزمن $t$ متجهاً إلى اللانهاية، مما يعني امتلاك السلسلة لـ “ذاكرة غير نهائية” (Infinite Memory) تجعل تأثير أي صدمة عابرة مستمراً إلى الأبد دون أي اضمحلال.
3. الأساس الرياضي والاشتقاق الإحصائي لاختبار ديكي فولر المعزز
3.1 الانتقال من اختبار DF البسيط إلى اختبار ADF المعزز
يعتمد اختبار ديكي-فولر القياسي على إعادة صياغة معادلة الانحدار الذاتي $AR(1)$ بطرح $y_{t-1}$ من طرفي المعادلة للحصول على صيغة الفروق:
$$\Delta y_t = (\rho – 1)y_{t-1} + \epsilon_t = \gamma y_{t-1} + \epsilon_t$$
حيث تعبر $\Delta y_t = y_t – y_{t-1}$ عن الفرق الأول، وتصبح الفرضية الصفرية لوجود جذر الوحدة مكافئة لاختبار ما إذا كان $\gamma = 0$ (أي أن $rho = 1$). تكمن المعضلة الرئيسية في هذا الاختبار البسيط في افتراضه أن حد الخطأ $\epsilon_t$ غير مرتبط ذاتياً، وهو افتراض يسقط غالباً في السلاسل الحقيقية التي تتبع عمليات انحدار ذاتي ومتوسطات متحركة مركبة $ARMA(p, q)$.
لحل هذه المعضلة، قام ديكي وفولر بتعزيز المعادلة من خلال إضافة حدود متباطئة للفروق الأولى للمتغير التابع، لتأخذ معادلة انحدار ADF الصيغة الرياضية العامة التالية:
$$\Delta y_t = \alpha + \beta t + \gamma y_{t-1} + \sum_{i=1}^{k} \delta_i \Delta y_{t-i} + \epsilon_t$$
تعمل حدود الفروق المتباطئة $\sum_{i=1}^{k} \delta_i \Delta y_{t-i}$ على امتصاص وتبييض (Whiten) أي ارتباط ذاتي متبقٍ في حدود الخطأ، مما يضمن أن يصبح حد البواقي $\epsilon_t$ ضجيجاً أبيض حقيقياً، ويحافظ على صحة الخصائص التقاربية لإحصائية الاختبار المقدرة لمعامل $\gamma$.
3.2 النماذج الثلاثة لاختبار ADF (الخيارات الحتمية)
يتطلب التطبيق الدقيق لاختبار ADF تحديد التكوين الحتمي المناسب للسلسلة الزمنية الخاضعة للفحص، حيث يوفر الاختبار ثلاثة نماذج هيكلية رئيسية تختلف باختلاف الحدود الحتمية المضمنة:
- النموذج الأول: خالي من الثابت والاتجاه الزمني (No Drift, No Trend):
$$\Delta y_t = \gamma y_{t-1} + \sum_{i=1}^{k} \delta_i \Delta y_{t-i} + \epsilon_t$$
يُستخدم هذا النموذج عندما تتقلب السلسلة حول متوسط صفري مطلق دون وجود أي نمط صعودي أو هبوطي عبر الزمن. - النموذج الثاني: يحتوي على حد ثابت فقط (Drift Only):
$$\Delta y_t = \alpha + \gamma y_{t-1} + \sum_{i=1}^{k} \delta_i \Delta y_{t-i} + \epsilon_t$$
يعد النموذج الأكثر شيوعاً في التطبيقات، ويناسب السلاسل التي تتذبذب حول متوسط ثابت غير صفري ولكنها لا تظهر اتجاهاً عاماً مستمراً. - النموذج الثالث: يحتوي على حد ثابت واتجاه زمني خطي (Drift and Linear Trend):
$$\Delta y_t = \alpha + \beta t + \gamma y_{t-1} + \sum_{i=1}^{k} \delta_i \Delta y_{t-i} + \epsilon_t$$
يُطبق هذا النموذج عندما تظهر السلسلة اتجاهاً صعودياً أو هبوطياً خطياً واضحاً ومطرداً، مثل سلاسل الناتج القومي أو المؤشرات السكانية المتنامية.
يعد الاختيار الصحيح بين هذه النماذج أمراً فائق الأهمية؛ نظراً لأن تضمين حدود حتمية لا وجود لها يقلل من قوة الاختبار الإحصائية، بينما يؤدي حذف حدود حتمية جوهرية إلى تشويه نتائج التقدير وانحياز إحصائية الاختبار.
3.3 التوزيع الإحصائي وقيم Dickey-Fuller الحرجة
تحت الفرضية الصفرية بوجود جذر الوحدة ($\gamma = 0$)، ينهار الافتراض القياسي لنظرية العينات الكبيرة، ولا تتبع إحصائية $t$ المحسوبة للمعامل $\gamma$ توزيع $t$-Student القياسي المألوف، ولا تتقارب نحو التوزيع الطبيعي المعياري حتى في العينات الكبيرة للغاية.
يعود هذا الانحراف الرياضي إلى أن مقام إحصائية الاختبار، والممثل بالخطأ المعياري المقدر للمعامل، يتقارب نحو تكامل عشوائي مشتق من حركة براونية المعيارية (Brownian Motion / Wiener Process) وليس نحو ثابت محدد، مما يجعل توزيع الإحصائية منحرفاً انحرافاً سالباً حاداً وله ذيل أثقل بكثير مقارنة بالتوزيع الطبيعي.
يُعرف هذا التوزيع غير القياسي باسم “توزيع تاو” ($tau$-Distribution). نظراً لعدم إمكانية التعبير عن هذا التوزيع بصيغة تحليلية مغلقة، اعتمد ديكي وفولر وماكينون لاحقاً على محاكاة مونت كارلو الرياضية الشاملة لحساب القيم الحرجة الدقيقة للاختبار عند مستويات الدلالة المختلفة (1%، 5%، 10%). تكون هذه القيم الحرجة سالبة دائماً، وتتغير تبعاً لحجم العينة والنموذج الحتمي المستخدم، مما يفرض مقارنة الإحصائية المحسوبة بتلك الجداول المتخصصة حصراً.
4. الفرضيات الإحصائية ومعايير اتخاذ القرار في اختبار ADF
4.1 صياغة الفرضيات الإحصائية الصفرية والبديلة
تُصاغ الفرضيات الإحصائية لاختبار ديكي-فولر المعزز بدقة رياضية صارمة تعكس البنية الديناميكية للسلسلة. تأتي الفرضية الصفرية ($H_0$) لتنص على أن السلسلة الزمنية تحتوي على جذر الوحدة، مما يعني رياضياً أن $\gamma = 0$ (أي أن معامل الانحدار الذاتي $rho = 1$). يترتب على قبول الفرضية الصفرية اعتبار السلسلة غير مستقرة وتتبع نمط السير العشوائي، وأنها تتطلب أخذ الفروق لتصل إلى الاستقرار.
في المقابل، تنص الفرضية البديلة ($H_a$) على أن السلسلة خالية من جذر الوحدة ومستقرة، وهو ما يكافئ رياضياً الشرط $\gamma < 0$ (أي أن $rho < 1$). في سياق النموذج المتضمن للاتجاه الزمني، يُعاد تفسير الفرضية البديلة لتعني أن السلسلة "مستقرة حول الاتجاه" (Trend-Stationary)، مما يشير إلى أن استقراريتها تتحقق بمجرد عزل وإزالة الاتجاه الزمني الحتمي المقدر.
يجب التأكيد على أن اختبار ADF مصمم لاختبار طرف واحد من الذيل الأيسر (Left-tailed Test)، نظراً لأن قيم $\gamma > 0$ تقود إلى متتالية تباعدية انفجارية (Explosive Process) لا تقع ضمن نطاق النمذجة الاقتصادية والقياسية المعتادة.
4.2 قواعد اتخاذ القرار بالاعتماد على إحصائية الاختبار والقيمة الاحتمالية
يتطلب اتخاذ القرار الإحصائي الدقيق مقارنة المعايير المحسوبة بالمستويات المرجعية المعتمدة. القاعدة الأولى تستند إلى المقارنة المباشرة بين إحصائية ADF المحسوبة والقيمة الحرجة المستخرجة من جدول ماكينون عند مستوى معنوية محدد $\alpha$ (مثل 5%):
- رفض الفرضية الصفرية ($H_0$): إذا كانت إحصائية ADF المحسوبة أكثر سلبية (أي أقل رياضياً) من القيمة الحرجة المجدولة ($ADF_{stat} < CriticalValue$). يُستنتج حينئذ أن السلسلة مستقرة وخالية من جذر الوحدة عند مستوى الثقة المحدد.
- الإخفاق في رفض الفرضية الصفرية ($H_0$): إذا كانت إحصائية ADF المحسوبة أكبر رياضياً (أقل سلبية أو موجبة) من القيمة الحرجة المجدولة ($ADF_{stat} ge CriticalValue$). يعني هذا عجز الأدلة الإحصائية عن دحض وجود جذر الوحدة، وتُعامل السلسلة على أنها غير مستقرة.
القاعدة الثانية تعتمد على القيمة الاحتمالية (p-value) الناتجة عن الاختبار. يتم رفض الفرضية الصفرية إذا كانت القيمة الاحتمالية أصغر من مستوى المعنوية المختار ($p < \alpha$). تمثل الحالات التي تقترب فيها القيمة الاحتمالية من مستوى المعنوية (بين 0.04 و 0.06) مناطق رمادية إحصائية تتطلب إجراء اختبارات مساندة أو زيادة حجم العينة لقطع الشك باليقين.
4.3 تحديد طول الإبطاء الأمثل (Lag Order Selection)
يمثل اختيار عدد حدود الفروق المتباطئة ($k$) في معادلة ADF معضلة موازنة دقيقة بين الكفاءة والتحيز الإحصائي. إذا تم اختيار عدد إبطاءات قليل جداً، فإن البواقي لن تتخلص تماماً من الارتباط الذاتي، مما يؤدي إلى تضخيم معدل الخطأ من النوع الأول ورفض الفرضية الصفرية وهي صحيحة. على النقيض من ذلك، فإن المبالغة في زيادة عدد الإبطاءات يؤدي إلى استنزاف درجات الحرية وتدهور القوة الإحصائية للاختبار، مما يجعل الاختبار عاجزاً عن اكتشاف الاستقرارية الحقيقية.
تعتمد الممارسة الإحصائية الحديثة على معايير المعلومات الآلية لتحديد طول الإبطاء الأمثل، وأبرزها:
- معيار أكايكي للمعلومات (Akaike Information Criterion – AIC): يميل هذا المعيار إلى اختيار نماذج أكثر سخاءً في عدد الإبطاءات، ويعد ممتازاً لتقليل مخاطر بقاء الارتباط الذاتي في البواقي.
- معيار شوارتز البايزي (Bayesian Information Criterion – BIC / SIC): يفرض هذا المعيار عقوبة أكبر على زيادة المعلمات، مما يجعله يميل نحو اختيار نماذج أكثر اختصاراً وهو المفضل في العينات الكبيرة.
توفر المكتبات الإحصائية البرمجية خوارزميات تبحث عن الإبطاء الذي يحقق أدنى قيمة لمعيار المعلومات المختار ضمن مدى أقصى يحدده الباحث وفق معادلات شائعة تعتمد على حجم العينة مثل معادلة شفيرت (Schwert): $k_{\max} = \lfloor 12 \times (T/100)^{1/4} \rfloor$.
5. إعداد بيئة العمل بلغة بايثون والمكتبات الأساسية
5.1 تثبيت وضبط المكتبات البرمجية المطلوبة
تتمتع لغة بايثون بنظام بيئي غني بالباقات الرياضية والإحصائية المصممة للتعامل مع تحليل السلاسل الزمنية بكفاءة عالية. لإجراء اختبار ديكي-فولر المعزز والتحليلات البيانية المرتبطة به، يلزم تثبيت وضبط أربع مكتبات رئيسية عبر مدير الحزم pip:
- Statsmodels: تمثل الحزمة الأساسية للنمذجة القياسية والإحصائية في بايثون، وتحتوي على الدالة المتخصصة
adfullerبالإضافة إلى اختبارات التكامل وجذور الوحدة المتقدمة. - Pandas: الحزمة القياسية لهيكلة ومعالجة السلاسل الزمنية، وتوفر كائنات
SeriesوDataFrameالمدعومة بفهارس زمنية دقيقة تدعم الحسابات الإحصائية والتجميع الزمني. - NumPy: توفر العمليات الرياضية المصفوفية عالية الأداء وتوليد السلاسل الزمنية العشوائية عبر نماذج المحاكاة الإحصائية.
- Matplotlib & Seaborn: مكتبتان متكاملتان لإنشاء الرسوم البيانية الاستكشافية واللوحات التشخيصية وتوزيعات البيانات بدقة ووضوح عاليين.
يمكن تثبيت هذه المكتبات بالأمر المباشر في الطرفية (Terminal):
pip install statsmodels pandas numpy matplotlib seaborn
5.2 بناء بيئة تحليل السلاسل الزمنية في Jupyter Notebook
تعد بيئة Jupyter Notebook المنصة المثالية لإجراء البحوث التكرارية وتحليل البيانات، حيث تسمح بدمج الأكواد البرمجية مع المخرجات التحليلية والتمثيل البصري والنصوص التفسيرية في وثيقة تفاعلية واحدة. لتهيئة البيئة، نبدأ باستيراد المكتبات الأساسية وضبط الإعدادات البصرية وتنسيق الأرقام العشرية لتجنب ظهور المخرجات بصيغ علمية يصعب قراءتها.
يوضح المقتطف البرمجي التالي كيفية استيراد الوحدات اللازمة والتحقق من إصداراتها لضمان التوافقية البرمجية:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import warnings
warnings.filterwarnings('ignore')
pd.set_option('display.float_format', lambda x: '%.5f' % x)
plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default')
يضمن هذا الإعداد جاهزية البيئة لمعالجة تدفقات البيانات الزمنية وتطبيق الاختبارات دون مواجهة أخطاء تقنية ناتجة عن عدم توافق الدوال أو تنسيقات الرسم البياني.
6. استكشاف البيانات وتمثيلها بصرياً قبل إجراء الاختبار
6.1 تحميل وتجهيز بيانات السلسلة الزمنية التوضيحية
لإجراء تجربة تطبيقية واقعية تحاكي البيانات الحقيقية، سنقوم بتوليد سلسلة زمنية مركبة تحتوي على اتجاه عشوائي (جذر وحدة) مع ضجيج أبيض مضاف. يضمن هذا النهج فهم السلوك الميكانيكي للاختبار على بيئة خاضعة للرقابة قبل الانتقال للبيانات الميدانية.
نقوم بإنشاء نطاق زمني يومي يمتد لـ 500 يوم، ثم نبني عملية سير عشوائي تراكمية كما يوضح الكود التالي:
np.random.seed(42)
n_samples = 500
dates = pd.date_range(start='2023-01-01', periods=n_samples, freq='D')
shocks = np.random.normal(loc=0.5, scale=2.0, size=n_samples)
random_walk = np.cumsum(shocks)
ts_data = pd.Series(random_walk, index=dates, name='Simulated_Price')
يتيح فحص الخصائص الوصفية الأولية للسلسلة (المتوسط، التباين، أدنى وأعلى قيمة) عبر الدالة ts_data.describe() تكوين انطباع أولي عن سلوك البيانات. كما يجب التأكد التام من خلو السلسلة من أي قيم مفقودة عبر ts_data.isnull().sum()، حيث إن وجود فجوات في البيانات الزمنية يؤدي إلى تعطل مصفوفات الفروق المتباطئة في معادلة ديكي-فولر المعزز.
6.2 التمثيل البصري وتشخيص الاتجاهات الأولية
يعد الفحص البصري الخطوة التشخيصية الإلزامية الأولى قبل تشغيل أي اختبار إحصائي صارم. يكشف الرسم البياني الزمني بوضوح عن وجود اتجاه عام واضح أو تباين غير متجانس عبر الزمن. يتم توليد الرسم البياني باستخدام باقة Matplotlib عبر الشيفرة التالية:
plt.figure(figsize=(12, 5))
plt.plot(ts_data.index, ts_data.values, color='#1f77b4', lw=2, label='المشاهدات اليومية')
plt.title('التمثيل البصري للسلسلة الزمنية التجريبية (مسار غير مستقر)')
plt.xlabel('التاريخ')
plt.ylabel('القيمة')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
بالإضافة إلى الرسم الخطي المباشر، توفر دالتا الارتباط الذاتي (ACF) والارتباط الذاتي الجزئي (PACF) رؤية عميقة حول ذاكرة السلسلة. تتميز السلاسل غير المستقرة التي تحتوي على جذر وحدة بانحدار دالة ACF ببطء شديد وبشكل خطي شبه معدوم التلاشي عبر فترات إبطاء طويلة، بينما تظهر السلاسل المستقرة انخفاضاً أسياً سريعاً جداً يقترب من الصفر بعد فترات إبطاء قصيرة.
fig, axes = plt.subplots(1, 2, figsize=(14, 4))
plot_acf(ts_data, lags=30, ax=axes[0], title='دالة الارتباط الذاتي (ACF)')
plot_pacf(ts_data, lags=30, ax=axes[1], title='دالة الارتباط الذاتي الجزئي (PACF)')
plt.show()
7. التطبيق العملي لاختبار ديكي فولر المعزز في بايثون خطوة بخطوة
7.1 استدعاء دالة adfuller وتمرير المعاملات الأساسية
توفر مكتبة statsmodels.tsa.stattools الدالة adfuller المجهزة بخيارات متقدمة تتيح تخصيص عملية الاختبار بدقة تامة لتلائم البنية الإحصائية للبيانات. يوضح الجدول المفاهيمي التالي المعاملات التشغيلية الأساسية للدالة:
- x: السلسلة الزمنية المدخلة بتنسيق 1D array أو Pandas Series، ويجب أن تكون خالية من القيم المفقودة.
- maxlag: أقصى عدد من الفترات المتباطئة المسموح باختبارها. إذا تم تركه افتراضياً (None)، تستخدم الدالة معادلة $12 \times (nobs/100)^{1/4}$.
- regression: يحدد التكوين الحتمي للنموذج ويأخذ إحدى القيم الأربع:
'c': يتضمن حداً ثابتاً فقط (الافتراضي Drift).'ct': يتضمن حداً ثابتاً واتجاهاً زمنياً خطياً (Trend & Drift).'ctt': يتضمن حداً ثابتاً واتجاهين خطي وتربيعي.'nc': نموذج مجرد تماماً دون أي ثابت أو اتجاه (No Constant).
- autolag: معيار التحسين الآلي لاختيار أفضل إبطاء، وتشمل الخيارات:
'AIC'(المفضل عملياً)،'BIC'،'t-stat'، أوNoneلتثبيت عدد الإبطاءات عند القيمة المحددة فيmaxlag. - store: قيمة منطقية (Boolean)، في حال ضبطها على
Trueتقوم الدالة بإرجاع كائن يحتوي على نتائج الاختبار التفصيلية والمعادلة التقديرية الكاملة.
7.2 تنفيذ الكود البرمجي الكامل وطباعة النتائج
لضمان سهولة قراءة المخرجات وتجنب التعامل مع المصفوفات الرقمية المجردة، يُفضل بناء دالة مساعدة متكاملة (Helper Function) تقوم بتشغيل الاختبار، وتنسيق النتائج، وعرضها في جدول بيانات منظم ومصقول. يوضح المقتطف البرمجي التالي هذا التطبيق المتكامل:
def perform_adf_test(series, regression_type='c', autolag_criterion='AIC'):
result = adfuller(series, regression=regression_type, autolag=autolag_criterion)
output = pd.Series({
'ADF Test Statistic': result[0],
'p-value': result[1],
'Number of Lags Used': int(result[2]),
'Number of Observations': int(result[3]),
'Critical Value (1%)': result[4]['1%'],
'Critical Value (5%)': result[4]['5%'],
'Critical Value (10%)': result[4]['10%'],
'Maximization Information Criterion': result[5]
}, name='ADF Results')
return output
adf_summary = perform_adf_test(ts_data, regression_type='c', autolag_criterion='AIC')
print(adf_summary)
يمنح هذا البناء المعياري المطورين القدرة على إعادة استخدام الكود عبر مشاريع متعددة مع إمكانية تصدير المخرجات بسهولة إلى ملفات تقارير أو واجهات تفاعلية.
8. قراءة وتفسير مخرجات دالة adfuller بتفصيل دقيق
8.1 تحليل إحصائية الاختبار والقيمة الاحتمالية الناتجة
عند تشغيل الكود السابق على السلسلة التجريبية غير المستقرة، ينتج تقرير إحصائي يتطلب قراءة دقيقة لكل بند من بنوده. يمثل العنصر الأول ADF Test Statistic القيمة المحسوبة لمعامل جذر الوحدة المقسم على خطئه المعياري. لنفترض أن القيمة الناتجة هي -0.4521؛ نلاحظ هنا أن هذه القيمة قريبة جداً من الصفر وغير سالبة بالقدر الكافي لدفعنا نحو رفض فرضية العدم.
يرتبط هذا الاستنتاج مباشرة بالعنصر الثاني وهو p-value، والذي قد يسجل قيمة مرتفعة تقارب 0.9012. بمقارنة هذه القيمة بمستوى الدلالة القياسي المعياري ($\alpha = 0.05$):
$$p\text{-value} = 0.9012 > 0.05$$
بما أن القيمة الاحتمالية أكبر بكثير من 0.05، فإننا نفشل قطعياً في رفض الفرضية الصفرية ($H_0$). النتيجة العلمية المؤكدة هنا هي: السلسلة الزمنية غير مستقرة، وتمتلك جذر وحدة نشط، وتتبع نمط السير العشوائي الصريح، مما يحظر استخدامها في النماذج التنبؤية المباشرة دون تحويل مسبق.
8.2 فهم معايير الإبطاء وعدد المشاهدات الفعالة
يوفر العنصر الثالث في النتائج Number of Lags Used مؤشراً عن التعقيد الديناميكي في السلسلة. إذا أظهر التقرير استخدام إبطاءين ($Lags = 2$)، فهذا يعني أن معيار AIC وجد أن تضمين فرقين متباطئين ($\Delta y_{t-1}, \Delta y_{t-2}$) كان كافياً لتبييض البواقي وإزالة أي ارتباط ذاتي متبقٍ بنجاح.
يترتب على استخدام الفترات المتباطئة تقليص طفيف في حجم العينة الفعالة المستخدمة في تقدير الانحدار النهائي، وهو ما يظهره العنصر الرابع Number of Observations. إذا بدأنا بعينة أولية قدرها 500 مشاهدة واستخدمنا إبطاءين بالإضافة إلى الفرق الأول، فإن عدد المشاهدات الفعالة يصبح:
$$N_{eff} = N_{total} – k – 1 = 500 – 2 – 1 = 497$$
يعد تتبع حجم العينة الفعالة أمراً جوهرياً لضمان عدم تآكل درجات الحرية في العينات الصغيرة وتأكيد دقة القيم الحرجة المحسوبة بواسطة الخوارزمية.
8.3 مقارنة المخرجات مع مستويات القيم الحرجة (1%, 5%, 10%)
يوفر قاموس القيم الحرجة الناتج من Statsmodels الحدود الفاصلة الدقيقة لاتخاذ القرار الإحصائي عند مستويات ثقة مختلفة:
- مستوى ثقة 99% ($\alpha = 0.01$): القيمة الحرجة المجدولة =
-3.4436 - مستوى ثقة 95% ($\alpha = 0.05$): القيمة الحرجة المجدولة =
-2.8674 - مستوى ثقة 90% ($\alpha = 0.10$): القيمة الحرجة المجدولة =
-2.5699
بإجراء المقارنة الرياضية المباشرة:
$$-0.4521 > -2.8674 implies ADF_{stat} > CriticalValue_{5%}$$
تؤكد هذه النتيجة عجز إحصائية الاختبار عن تجاوز الحاجز الحرج عند كافة مستويات الدلالة المتاحة (1% و 5% و 10%)، مما يثبت صلابة الاستنتاج الإحصائي بأن السلسلة تخضع لعملية جذر الوحدة.
9. معالجة السلاسل الزمنية غير المستقرة وتحويلها
9.1 تقنية أخذ الفروق (Differencing)
تعد تقنية أخذ الفروق المتتالية الإجراء الأكثر فاعلية لتحويل السلاسل ذات الاتجاه العشوائي إلى سلاسل مستقرة. يتم حساب الفرق من الدرجة الأولى عبر طرح القيمة السابقة من القيمة الحالية:
$$\Delta y_t = y_t – y_{t-1}$$
في لغة بايثون، يُطبق هذا الإجراء بسهولة تامة باستخدام دالة diff() المدمجة في مكتبة Pandas، مع ضرورة استبعاد القيمة الفارغة الأولى الناتجة عن العملية باستخدام dropna():
ts_diff = ts_data.diff().dropna()
adf_diff_summary = perform_adf_test(ts_diff, regression_type='c')
print(adf_diff_summary)
عند فحص نتائج الاختبار بعد أخذ الفرق الأول، نلاحظ تحولاً جذرياً في المخرجات؛ حيث تقفز إحصائية الاختبار إلى قيمة شديدة السلبية (مثل -22.341)، وتهبط القيمة الاحتمالية إلى مستويات شديدة الصغر تقترب من الصفر المطلق ($p < 0.00001$). وبما أن إحصائية الاختبار أصبحت أصغر بكثير من القيمة الحرجة عند مستوى 1% ($-22.341 < -3.443$)، فإننا نرفض الفرضية الصفرية بحسم ونستنتج أن السلسلة أصبحت مستقرة تماماً بعد أخذ الفرق من الدرجة الأولى $I(1)$.
9.2 التحويلات اللوغاريتمية والأسية للتحكم بالتباين
عندما تعاني السلسلة الزمنية من عدم استقرار التباين وتزايد الاتساع التذبذبي مع مرور الزمن بالتوازي مع نمو المتوسط، فإن أخذ الفروق بمفرده يصبح عاجزاً عن تثبيت التباين. في هذه السيناريوهات، يُلجأ إلى التحويلات الرياضية غير الخطية مثل تحويل اللوغاريتم الطبيعي:
$$z_t = \ln(y_t)$$
أو تطبيق تحويل بوكس-كوكس المعمم (Box-Cox Transformation) عبر باقة scipy.stats للعثور على المعامل $lambda$ الأمثل الذي يحقق أفضل توزيع تقاربي متجانس التباين:
from scipy.stats import boxcox
transformed_data, best_lambda = boxcox(ts_data[ts_data > 0])
ts_log = np.log(ts_data[ts_data > 0])
ts_log_diff = ts_log.diff().dropna()
يضمن دمج التحويل اللوغاريتمي مع أخذ الفروق تحقيق الاستقرار الكامل في كل من المتوسط والتباين معاً، وهو المعيار الحاسم لتهيئة السلاسل المالية شديدة التقلب لنمذجة العوائد الدقيقة.
9.3 إزالة الاتجاه العام الحتمي (Detrending)
إذا أظهرت السلسلة اتجاهاً حتمياً واضحاً (Deterministic Trend) وثبت من اختبار ADF مع خيار regression='ct' أنها مستقرة حول الاتجاه وليست ذات جذر وحدة عشوائي، فإن الإجراء الرياضي الصحيح ليس أخذ الفروق (الذي قد يدخل متوسطات متحركة مصطنعة في البواقي)، بل عزل وإزالة الاتجاه عبر الانحدار الخطي البسيط على الزمن:
$$y_t = \alpha + \beta t + e_t implies e_t = y_t – (\hat{\alpha} + \hat{\beta} t)$$
يوضح الكود التالي كيفية تطبيق هذا الإجراء برمجياً واختبار استقرارية سلسلة البواقي $e_t$:
from sklearn.linear_model import LinearRegression
X = np.arange(len(ts_data)).reshape(-1, 1)
y = ts_data.values
model = LinearRegression().fit(X, y)
trend = model.predict(X)
detrended_series = pd.Series(y - trend, index=ts_data.index)
adf_detrended = perform_adf_test(detrended_series, regression_type='c')
تتحول سلسلة البواقي الناتجة إلى سلسلة مستقرة تتذبذب حول متوسط صفري ثابت، وتصبح جاهزة للمراحل اللاحقة من النمذجة الرياضية.
10. مقارنة اختبار ADF باختبارات الاستقرارية الأخرى
10.1 مقارنة اختبار ADF مع اختبار KPSS
يُعد اختبار Kwiatkowski-Phillips-Schmidt-Shin (KPSS) المكمل الاستراتيجي لاختبار ADF في تحليل السلاسل الزمنية، وتكمن نقطة الاختلاف الجوهرية بينهما في صياغة الفرضيات الإحصائية:
- اختبار ADF: الفرضية الصفرية ($H_0$) هي عدم الاستقرار (وجود جذر الوحدة)، بينما الفرضية البديلة ($H_a$) هي الاستقرار.
- اختبار KPSS: الفرضية الصفرية ($H_0$) هي الاستقرارية حول مستوى ثابت أو اتجاه، بينما الفرضية البديلة ($H_a$) هي عدم الاستقرار (وجود جذر الوحدة).
يتيح تطبيق الاختبارين معاً في إطار ما يعرف بالتحليل التوكيدي للبيانات (Confirmatory Data Analysis) الوصول إلى أربعة استنتاجات تشخيصية حاسمة:
- الحالة الأولى (رفض ADF الصفرية + قبول KPSS الصفرية): تتفق النتيجتان تماماً على أن السلسلة مستقرة وموثوقة (Stationary).
- الحالة الثانية (قبول ADF الصفرية + رفض KPSS الصفرية): تتفق النتيجتان تماماً على أن السلسلة غير مستقرة وتحتوي على جذر وحدة صريح (Unit Root).
- الحالة الثالثة (قبول ADF الصفرية + قبول KPSS الصفرية): تدل على عدم كفاية المعلومات في العينة وتواجد السلسلة في منطقة رمادية غير حاسمة، مما يتطلب بيانات إضافية.
- الحالة الرابعة (رفض ADF الصفرية + رفض KPSS الصفرية): تشير إلى وجود ديناميكيات معقدة أو انكسارات هيكلية، أو أن السلسلة تخضع لعملية تكامل كسري (Fractional Integration).
10.2 مقارنة اختبار ADF مع اختبار فيليبس-بيرون (Phillips-Perron)
يقدم اختبار فيليبس-بيرون (PP) بديلاً قوياً لاختبار ديكي-فولر المعزز في فحص جذور الوحدة. يعتمد كلا الاختبارين على نفس الفرضية الصفرية بوجود جذر الوحدة، إلا أنهما يختلفان جذرياً في كيفية معالجة الارتباط الذاتي والتباين غير المتجانس في البواقي:
يعالج اختبار ADF الارتباط الذاتي أسلوبياً عبر إضافة حدود متباطئة صريحة في معادلة الانحدار (معالجة معلمية – Parametric Approach)، بينما يبقي اختبار فيليبس-بيرون على معادلة ديكي-فولر البسيطة دون إضافة فروق متباطئة، ويقوم بدلاً من ذلك بتعديل إحصائية $t$ نفسها بصورة غير معلمية (Non-parametric Adjustment) باستخدام مقدر نيووي-ويست (Newey-West Kernel) لمصفوفة التغاير طويل الأجل.
يتميز اختبار PP بالمتانة العالية ضد الأشكال المجهولة من التباين غير المتجانس وتجنب فقدان درجات الحرية الناتج عن إضافة إبطاءات متعددة، مما يجعله مفضلاً عند التعامل مع السلاسل الزمنية المالية عالية التردد والمليئة بالقفزات التذبذبية.
11. الأخطاء الشائعة وحالات الفشل عند تطبيق ADF في بايثون
11.1 الوقوع في فخ التحديد الخاطئ للنموذج الحتمي
يعد الخطأ في تحديد معامل الانحدار الحتمي (regression='c' أو 'ct' أو 'nc') أحد أكثر الأخطاء المنهجية شيوعاً بين الممارسين. يؤدي تشغيل الاختبار على سلسلة تمتلك متوسطاً غير صفري مع ضبط الخيار على 'nc' (بدون ثابت) إلى انحياز شديد يرفع من تقدير معامل جذر الوحدة نحو الصفر ويؤدي إلى رفض خاطئ لفرضية العدم.
بالمثل، فإن إهمال وجود اتجاه حتمي صاعد وتطبيق اختبار يحتوي على ثابت فقط ('c') يجعل إحصائية الاختبار عاجزة تماماً عن اكتشاف الاستقرارية حول الاتجاه، مما يدفع الباحث إلى أخذ فروق غير ضرورية للسلسلة تشوه خواصها الإحصائية الأصلية.
لتفادي هذا الفخ، يوصى باتباع منهجية دولادو-جينكينز-سوسفيا (Dolado-Jenkins-Sosvilla Strategy) المتسلسلة:
- البدء بأكثر النماذج شمولاً المتضمن للثابت والاتجاه الزمني (
'ct'). - إذا تم رفض الفرضية الصفرية، يتوقف الاختبار ونستنتج الاستقرارية حول الاتجاه.
- إذا لم يتم رفض الفرضية الصفرية، يتم فحص معنوية معامل الاتجاه الزمني عبر اختبار $t$ أو $F$؛ فإذا كان الاتجاه غير معنوي، يُعاد تقدير الاختبار باستخدام نموذج الثابت فقط (
'c'). - تتكرر الخطوة مع النموذج الأخير الخالي من الثابت (
'nc') فقط إذا كان الثابت غير معنوي والمتوسط الحقيقي للسلسلة صفراً.
11.2 تأثير الانكسارات الهيكلية (Structural Breaks) على نتائج الاختبار
أثبت الاقتصادي بيير بيرون في ورقته المفصلية عام 1989 أن وجود انكسار هيكلي واحد غير مكتشف في مستوى السلسلة أو في مسار اتجاهها العام يؤدي إلى انخفاض كارثي في القوة الإحصائية لاختبار ديكي-فولر المعزز، مما يجعله يفشل في رفض الفرضية الصفرية بصورة كاذبة ويشخص السلسلة على أنها غير مستقرة، بينما هي في الحقيقة سلسلة مستقرة تعرضت لصدمة هيكلية ناتجة عن أزمة اقتصادية أو تغير تشريعي.
في مثل هذه البيئات المعقدة، يتوجب على الباحثين استخدام اختبارات متخصصة تدعم الاستقرارية في ظل الانكسارات الهيكلية مثل اختبار زيفوت-أندروز (Zivot-Andrews Test)، والذي يحدد داخلياً وتلقائياً نقطة الانكسار الأكثر ترجيحاً ويختبر جذر الوحدة مع أخذ هذا التحول الهيكلي في الحسبان، وهو متاح مباشرة في باقة Statsmodels عبر الدالة zivot_andrews.
11.3 التعامل مع حجم العينة غير الكافي ومشكلات البيانات المتقطعة
يعاني اختبار ADF، شأنه شأن معظم اختبارات جذور الوحدة، من ضعف القوة الإحصائية (Low Statistical Power) في العينات الزمنية الصغيرة (أقل من 50 أو 100 مشاهدة). في هذه العينات المحدودة، يميل الاختبار بشدة إلى عدم رفض الفرضية الصفرية، خاصة إذا كانت القيمة الحقيقية لمعامل الانحدار الذاتي قريبة من الواحد (مثل $rho = 0.95$).
بالإضافة إلى ذلك، فإن وجود بيانات متقطعة أو فجوات زمنية غير منتظمة يُفسد البنية الرياضية للفروق المتباطئة. للتغلب على هذه التحديات، يوصى بزيادة تردد جمع البيانات الزمني حيثما أمكن (التحول من التردد السنوي إلى الشهري أو اليومي)، وتطبيق أساليب الاستكمال الداخلي الرياضي المتطورة لسد الفجوات المفقودة قبل تمرير السلسلة إلى الاختبار.
12. تطبيقات متقدمة وسيناريوهات برمجية شاملة
12.1 بناء خط أنابيب (Pipeline) لاختبار استقرارية سلاسل زمنية متعددة
في بيئات الأعمال الواقعية ومشاريع النمذجة واسعة النطاق، يواجه مهندس البيانات مئات السلاسل الزمنية المتزامنة التي تتطلب فحصاً ومعالجة مؤتمتة وسريعة. يوضح الكود المتقدم التالي كيفية بناء خط أنابيب برمجي متكامل يقوم بفحص مصفوفة بيانات كاملة، وتطبيق اختبار ADF، وتحويل السلاسل غير المستقرة تلقائياً، وتوليد تقرير تشخيصي شامل:
def automated_stationarity_pipeline(dataframe, alpha=0.05):
report_list = []
transformed_df = pd.DataFrame(index=dataframe.index)
for col in dataframe.columns:
series = dataframe[col].dropna()
initial_adf = adfuller(series, autolag='AIC')
stat, p_val = initial_adf[0], initial_adf[1]
if p_val < alpha:
status = 'مستقرة أصلاً I(0)'
order_of_integration = 0
transformed_df[col] = series
else:
diff_series = series.diff().dropna()
diff_adf = adfuller(diff_series, autolag='AIC')
diff_p_val = diff_adf[1]
if diff_p_val < alpha:
status = 'مستقرة بعد الفرق الأول I(1)'
order_of_integration = 1
transformed_df[col] = diff_series
else:
status = 'تحتاج فروق عليا I(2+)'
order_of_integration = 2
transformed_df[col] = diff_series.diff().dropna()
report_list.append({
'السلسلة': col,
'إحصائية ADF': stat,
'القيمة الاحتمالية p-value': p_val,
'رتبة التكامل d': order_of_integration,
'الحالة التشخيصية': status
})
return pd.DataFrame(report_list), transformed_df
تسمح هذه الدالة بمعالجة أطر البيانات الضخمة المتضمنة عشرات المتغيرات المالية في بضع ثوانٍ معدودة، مع توفير مخرجات جاهزة للدمج الفوري في نماذج التنبؤ.
12.2 الاستعداد لبناء نماذج ARIMA والتكامل المشترك (Cointegration)
يشكل اختبار ADF حجر الزاوية المباشر لتحديد المعامل $d$ في منهجية بوكس-جينكينز لبناء نماذج ARIMA$(p, d, q)$. إذا بينت نتائج الاختبار أن السلسلة متكاملة من الدرجة الأولى $I(1)$، يتم تثبيت قيمة $d=1$ في النموذج لضمان تدريب النموذج على البيانات المستقرة.
كما يُوظف اختبار ADF في اختبار التكامل المشترك لإنجل-جرانجر (Engle-Granger Two-Step Cointegration Test). فإذا كانت هناك سلسلتان زمنيتان غير مستقرتين ولكن كلاهما متكامل من نفس الدرجة $I(1)$، يتم تطبيق الانحدار الخطي المشترك بينهما واستخراج سلسلة البواقي الناتجة. عند إجراء اختبار ADF على هذه البواقي وثبوت استقراريتها $I(0)$، يُستنتج وجود علاقة توازن طويلة الأجل (Long-run Equilibrium) حقيقية وغير زائفة بين المتغيرين، مما يفتح الباب لبناء نماذج تصحيح الخطأ المتطورة (Error Correction Models – ECM).
خاتمة
يعد اختبار ديكي-فولر المعزز (ADF) أحد أكثر الأدوات الإحصائية رسوخاً وأهمية في ترسانة محلل السلاسل الزمنية وعالم البيانات. يوفر الاختبار أساساً رياضياً واستدلالياً متيناً للتحقق من وجود جذر الوحدة، مما يمنع الوقوع في فخاخ الانحدار الزائف ويضمن دقة وصلاحية النماذج التنبؤية المعاصرة.
أظهر الدليل أن التطبيق الناجح لاختبار ADF في بايثون لا يقتصر على مجرد استدعاء دالة برمجية، بل يتطلب فهماً عميقاً لطبيعة الحدود الحتمية للبيانات، وتحديد طول الإبطاء الأمثل عبر معايير المعلومات، والتحقق البصري الموازي لدوال الارتباط الذاتي، والمقارنة مع اختبارات تكميلية مثل KPSS عند الاشتباه في الانكسارات الهيكلية. يشكل الالتزام بهذه الممارسات الإحصائية الرصينة الضمانة الأساسية لبناء حلول استدلالية وتنبؤية قوية قابلة للاعتماد في بيئات اتخاذ القرار الحساسة.
References
- Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators for autoregressive time series with a unit root. Journal of the American Statistical Association, 74(366a), 427–431. https://doi.org/10.1080/01621459.1979.10482531
- Dickey, D. A., & Fuller, W. A. (1981). Likelihood ratio statistics for autoregressive time series with a unit root. Econometrica, 49(4), 1057–1072. https://doi.org/10.2307/1912517
- Granger, C. W., & Newbold, P. (1974). Spurious regressions in econometrics. Journal of Econometrics, 2(2), 111–120. https://doi.org/10.1016/0304-4076(74)90034-7
- Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press.
- Kwiatkowski, D., Phillips, P. C., Schmidt, P., & Shin, Y. (1992). Testing the null hypothesis of stationarity against the alternative of a unit root: How sure are we that economic time series have a unit root? Journal of Econometrics, 54(1-3), 159–178. https://doi.org/10.1016/0304-4076(92)90104-Y
- MacKinnon, J. G. (1996). Numerical distribution functions for unit root and cointegration tests. Journal of Applied Econometrics, 11(6), 601–618. <a href="https://doi.org/10.1002/(SICI)1099-1255(199611)11:63.0.CO;2-T”>https://doi.org/10.1002/(SICI)1099-1255(199611)11:63.0.CO;2-T
- Perron, P. (1989). The great crash, the oil price shock, and the unit root hypothesis. Econometrica, 57(6), 1361–1401. https://doi.org/10.2307/1913712
- Phillips, P. C., & Perron, P. (1988). Testing for a unit root in time series regression. Biometrika, 75(2), 335–346. https://doi.org/10.1093/biomet/75.2.335
- Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. Proceedings of the 9th Python in Science Conference, 57, 61. https://doi.org/10.25080/Majora-92bf1922-011
- Zivot, E., & Andrews, D. W. K. (1992). Further evidence on the great crash, the oil-price shock, and the unit-root hypothesis. Journal of Business & Economic Statistics, 10(3), 251–270. https://doi.org/10.1080/07350015.1992.10509904