الإحصاء والتحليل الرياضيبرمجة بايثونعلم النفس القياسي

كيفية إجراء اختبار التتابع في بايثون

دليل شامل ومفصل حول كيفية إجراء اختبار التتابع (Runs Test) في بايثون لاختبار عشوائية البيانات وتحليل النتائج إحصائياً وبرمجياً بدقة.

تاريخ النشر

تُعد مسألة التحقق من عشوائية البيانات واحدة من الركائز الأساسية التي تستند إليها بنية الاستدلال الإحصائي الحديث، حيث تشترط معظم النماذج الرياضية الكلاسيكية والاختبارات البارامترية استقلالية المشاهدات وتوزيعها المتماثل بصورة عشوائية خالية من الأنماط المسبقة. في بيئات التحليل المعاصرة وعلوم البيانات، يمثل افتراض الاستقلالية والعشوائية حجر الزاوية الذي يضمن خلو النتائج التجريبية من التحيزات المستترة أو الانحدارات الذاتية التي قد تُبطل مصداقية التقديرات الاحتمالية. وتكتسب هذه القضية أهمية بالغة في مجالات متعددة تتراوح بين النمذجة الاقتصادية، والعلوم السلوكية، وعلم النفس القياسي، واختبار جودة خوارزميات التشفير ومولدات الأرقام شبه العشوائية.

يبرز اختبار التتابع لفالد-وولفويتز (Wald-Wolfowitz Runs Test) كأحد أبرز الاختبارات اللامعلمية المصممة خصيصاً لاختبار فرضية العشوائية في المتتاليات الرقمية والفئوية، دون الحاجة إلى افتراض اعتدالية التوزيع الأصلي للبيانات. يركز هذا الاختبار على ترتيب ظهور المشاهدات وتعاقبها الزمني أو المكاني، مما يجعله أداة تشخيصية فريدة للكشف عن النزعات التجميعية، أو التناوب المفرط، أو الانزياحات التدريجية في سلاسل المشاهدات. وتتيح لغة بايثون، عبر منظومتها الإحصائية المتطورة، بيئة برمجية متكاملة لتنفيذ هذا الاختبار بكفاءة حاسوبية فائقة، مما يمكن الباحثين من تفكيك الهياكل التسلسلية المعقدة وتقييم الفرضيات البحثية بدقة متناهية.

يقدم هذا الدليل المرجعي الشامل تأصيلاً نظرياً وعملياً عميقاً لكيفية إجراء وفهم وتفسير اختبار التتابع باستخدام لغة بايثون، وتحديداً عبر حزمة Statsmodels المتخصصة. سيتم استعراض الأسس الرياضية والاحتمالية للاختبار، وتفكيك معادلات التوقع والتباين والتحويل المعياري، بالإضافة إلى تقديم معالجة دقيقة للاعتبارات البرمجية، واختيار نقاط القطع المثلى، وتطبيق تصحيحات الاستمرارية، ومعالجة البيانات المتطابقة والمفقودة. يهدف هذا العمل إلى تزويد الباحثين ومحللي البيانات بمرجع متكامل يجمع بين الصرامة الرياضية والتطبيق البرمجي الاحترافي لتحقيق أعلى مستويات الدقة في تقييم العشوائية الإحصائية.

1. مقدمة نظرية حول اختبار التتابع (Runs Test) ومفهوم العشوائية الإحصائية

1.1 مفهوم التتابع (Run) في التحليل الإحصائي

يُعرَّف التتابع في سياق التحليل الإحصائي بأنه متتالية متصلة من المشاهدات المتماثلة أو المتشابهة في إحدى الخصائص النوعية أو الكمية، والتي تكون مسبوقة ومتبوعة بمشاهدات تختلف عنها في تلك الخاصية، أو تقع عند أطراف السلسلة الإحصائية. عند فحص سلسلة زمنية أو تسلسل تجريبي ثنائي القيمة يتألف من عنصرين متمايزين، فإن كل كتلة مستمرة من الرموز المتطابقة تمثل تتابعاً واحداً، ويُشار إلى عدد العناصر المكونة لتلك الكتلة بطول التتابع. يشكل التحليل الكمي لعدد التتابعات الإجمالية وطول كل منها مدخلاً أساسياً لتقييم البنية الداخلية للتسلسل واكتشاف ما إذا كان الترتيب ناتجاً عن صدفة عشوائية بحتة أم خاضعاً لقوانين حتمية خفية.

تستند فلسفة تقييم الأنماط التسلسلية إلى الموازنة الدقيقة بين التتابعات المرصودة وتلك المتوقعة نظرياً في ظل فرضية العشوائية الكاملة. ففي حال كانت السلسلة تتسم بتناوب دوري منتظم وسريع بين الحالات المختلفة، فإن عدد التتابعات سيرتفع بصورة شاذة ليتجاوز التوقعات الإحصائية، مما يشير إلى وجود عملية تناوب منتظمة تفتقر إلى العشوائية. وعلى النقيض من ذلك، إذا مالت البيانات إلى الاستقرار لفترات طويلة في حالة معينة قبل التحول إلى الحالة الأخرى، فإن ذلك يؤدي إلى انخفاض حاد في إجمالي عدد التتابعات وظهور تتابعات طويلة المدى، وهو ما يعكس ظاهرة التكتل أو الارتباط الموجب بين المشاهدات المتتالية.

يتميز اختبار التتابع بكونه اختباراً لا معلمياً مرناً لا يفرض قيوداً مشددة حول طبيعة التوزيع الاحتمالي للبيانات الأصلية، مثل اشتراط التوزيع الطبيعي أو تجانس التباين. يمنح هذا الطابع اللامعلمي الاختبار قدرة فائقة على معالجة البيانات الاسمية والترتيبية والكمية بعد تحويلها إلى متتاليات ثنائية، مما يجعله أداة استكشافية متقدمة في الحالات التي تفشل فيها الاختبارات البارامترية التقليدية في التعامل مع البيانات غير المتماثلة أو شديدة الالتواء.

1.2 أهمية اختبار العشوائية في البحث العلمي والبيانات التجريبية

تشترط المنهجيات الإحصائية الاستدلالية، ولا سيما تحليلات التباين والانحدار الخطي وتحليل السلاسل الزمنية، أن تكون أخطاء القياس أو المشاهدات مستقلة استقلالاً تاماً عن بعضها البعض وموزعة توزيعاً عشوائياً. يمثل اختبار التتابع وسيلة تشخيصية صارمة للتحقق من استيفاء هذا الافتراض المحوري، حيث إن انتهاك استقلالية البيانات يؤدي إلى تضخيم معدلات الخطأ من النوع الأول وتقديم تقديرات مضللة لمستويات الدلالة الإحصائية وفترات الثقة، مما يعرض الاستنتاجات العلمية للخطأ المنهجي.

يسهم اختبار التتابع بشكل حاسم في الكشف عن الارتباط الذاتي الخفي والتحيزات النظامية التي قد تتسرب إلى عمليات جمع البيانات الميدانية والتجريبية. ففي دراسات العلوم السلوكية والقياس النفسي، قد يتأثر أداء الأفراد بعوامل الإجهاد أو التعلم التراكمي عبر الزمن، مما يُحدث أنماطاً غير عشوائية في تسلسل الاستجابات. يتيح تطبيق الاختبار على سجلات الاستجابة رصد هذه التحيزات الديناميكية وفصل التأثيرات التجريبية الحقيقية عن التغيرات الطارئة الناجمة عن الترتيب الزمني للتجارب.

يمتد دور الاختبار إلى مجالات علوم الحاسوب وتطبيقات النمذجة الإحصائية عبر محاكاة مونت كارلو، حيث يُستخدم لتقييم جودة مولدات الأرقام العشوائية وشبه العشوائية (PRNGs). إن التأكد من أن الأرقام المتولدة لا تتبع دورات تكرارية خفية أو أنماطاً تجميعية يُعد شرطاً إلزامياً لضمان سلامة خوارزميات التشفير وأمان النظم المعلوماتية وموثوقية التجارب الرقمية واسعة النطاق.

1.3 سياق استخدام الاختبار وتطوره التاريخي

تعود الجذور التاريخية لاختبار التتابع إلى العمل الرائد الذي قدمه عالما الرياضيات أبراهام فالد وجاكوب وولفويتز في مطلع الأربعينيات من القرن العشرين، حيث قاما بصياغة اختبار إحصائي لامعلمي لاختبار الفرضية القائلة بأن عينتين مستقلتين قد تم سحبهما من نفس التوزيع المستمر، وهو ما عُرف لاحقاً باختبار فالد-وولفويتز للتتابع. وسرعان ما تم تكييف هذا الإطار الرياضي ليُستخدم كاختبار لعينة واحدة لفحص عشوائية ترتيب عناصر السلسلة الزمنية والتسلسلات الثنائية.

تاريخياً، ارتبط تطبيق اختبار التتابع بالمجالات الصناعية ومراقبة الجودة، حيث كان يُعتمد عليه لمراقبة خطوط الإنتاج والتحقق من أن انحرافات القياس لعينات الإنتاج تحدث وفق مسار عشوائي ولا تعكس تدهوراً تدريجياً في أداء الآلات. ومع تقدم الفكر الإحصائي، اتسعت رقعة تطبيقاته لتشمل مجالات الاقتصاد القياسي وتحليل الأسواق المالية، لاختبار كفاءة الأسواق وفحص فرضية السير العشوائي لأسعار الأصول والمؤشرات المالية.

شهد الاختبار تحولاً جوهرياً مع ظهور الحوسبة الرقمية، حيث انتقل من جداول التوزيع الاحتمالي اليدوية المقيدة بأحجام عينات صغيرة إلى المعالجة البرمجية الآلية للسلاسل الضخمة. توفر لغات البرمجة الحديثة مثل بايثون اليوم إمكانية تنفيذ الاختبار على ملايين المشاهدات في أجزاء من الثانية، مع حساب التوزيعات التقريبية والدقيقة، مما أعاد للاختبار مكانته كأداة تشخيصية سريعة وشاملة في خطوط معالجة البيانات المعاصرة.

2. الفرضيات الإحصائية لاختبار التتابع وصياغتها الرياضية

2.1 صياغة الفرضية الصفرية (Null Hypothesis – H0)

تنص الفرضية الصفرية في اختبار التتابع لعينة واحدة على أن عناصر السلسلة المدروسة قد تم توليدها وترتيبها بواسطة عملية عشوائية متماثلة ومستقلة إحصائياً. رياضياً، تفترض الفرضية الصفرية أن احتمال ظهور أي قيمة معينة في الموضع الزمني الحالي لا يتأثر بأي شكل من الأشكال بالقيم التي ظهرت في المواضع السابقة، مما يعني انعدام الارتباط التسلسلي وغياب الذاكرة في النظام المولد للبيانات.

يترتب على تبني الفرضية الصفرية افتراض أن جميع التبديلات والترتيبات الممكنة لعناصر العينة تمتلك نفس احتمالية الحدوث المتساوية تماماً. يشير هذا إلى أن توزيع التتابعات في السلسلة يخضع للتوزيع التوافقي الاحتمالي البحت، بحيث لا يمكن التنبؤ بالقيمة التالية بناءً على النمط الحالي للمتتالية، مما يضمن خلو السلسلة من أي اتجاه عام أو نزعة انحدارية أو تقلبات دورية موسمية أو منتظمة.

تُعد الفرضية الصفرية نقطة الانطلاق الأساسية لجميع الحسابات الاستدلالية في الاختبار، حيث يتم اشتقاق القيمة المتوقعة لعدد التتابعات والتباين النظري بناءً على افتراض صحتها المطلقة. ويشير عدم رفض هذه الفرضية إلى عدم كفاية الأدلة الإحصائية في العينة لدحض فرضية الترتيب العشوائي، مما يسمح بمواصلة التحليلات البارامترية الأخرى التي تفترض استقلالية البيانات.

2.2 صياغة الفرضية البديلة (Alternative Hypothesis – Ha)

تنص الفرضية البديلة على أن ترتيب المشاهدات في التسلسل المدروس يتبع نمطاً غير عشوائي، مما يعكس وجود بنية نظامية كامنة تقود عملية تعاقب القيم. وتتخذ الفرضية البديلة في السياق العام طابعاً غير موجه (ثنائي الطرف)، يشمل حالتين متناقضتين تماماً من الانحراف عن العشوائية: حالة التجميع المفرط وحالة التناوب الزائد.

تتمثل الحالة الأولى في ظاهرة التجميع، حيث يكون عدد التتابعات المرصودة أقل بكثير من العدد المتوقع نظرياً، مما يشير إلى أن المشاهدات المتشابهة تميل إلى التراكم والظهور المتتالي لفترات ممتدة. تدل هذه الظاهرة غالباً على وجود اتجاه عام تصاعدي أو تنازلي في السلسلة، أو وجود ارتباط ذاتي موجب يجعل حدوث حالة معينة يزيد من احتمالية تكرارها في النقطة الزمنية اللاحقة، وهو ما يُلاحظ في الظواهر ذات الاستمرارية الذاتية أو التأثيرات المتأخرة.

تتمثل الحالة الثانية في ظاهرة التناوب المفرط أو الخلط الزائد، حيث يكون عدد التتابعات المرصودة أكبر بكثير من المتوقع تحت فرضية العشوائية، مما يعكس نمط تبديل دوري فائق السرعة بين الحالات المختلفة. يشير هذا النمط إلى وجود ارتباط ذاتي سالب، أو وجود آليات تنظيمية تصحيحية تفرض العودة السريعة إلى الحالة المعاكسة فور حدوث أي تغير، وهو ما يظهر في أنظمة التغذية الراجعة أو التجارب المعملية ذات التناوب المحكوم.

2.3 مستويات الدلالة الإحصائية وتحديد مناطق الرفض والقبول

يتطلب اتخاذ القرار الإحصائي في اختبار التتابع تحديد مستوى المعنوية ألفا، والذي يمثل الحد الأقصى المقبول لاحتمال ارتكاب خطأ من النوع الأول، المتمثل في رفض الفرضية الصفرية بالرغم من صحتها. يُحدد هذا المستوى تقليدياً عند قيم مثل 0.05 أو 0.01 اعتماداً على حساسية المجال البحثي وصرامته، وتُشتق منه القيم الحرجة التي تفصل بين مناطق قبول الفرضية الصفرية ومناطق رفضها في التوزيع الاحتمالي لعدد التتابعات.

نظراً لأن الانحراف عن العشوائية قد يحدث باتجاه التكتل المفرط (تتابعات قليلة) أو التناوب الشاذ (تتابعات كثيرة)، فإن الاختبار يُجرى عادة كاختبار ثنائي الطرف. تقسم المساحة الحرجة المقابلة لمستوى المعنوية بالتساوي على طرفي التوزيع الاحتمالي، بواقع نصف القيمة لكل طرف، مما ينشئ منطقتي رفض محددتين عند الذيل الأدنى والذيل الأعلى للتوزيع.

تستند قاعدة اتخاذ القرار الإحصائي إلى مقارنة القيمة الاحتمالية المحسوبة مباشرة بمستوى المعنوية المحدد سلفاً. فإذا كانت القيمة الاحتمالية أقل من أو تساوي ألفا، يتم رفض الفرضية الصفرية لصالح الفرضية البديلة، مما يُثبت وجود نمط غير عشوائي ذي دلالة إحصائية في ترتيب البيانات، في حين يؤدي تجاوز القيمة الاحتمالية لعتبة ألفا إلى الإخفاق في رفض الفرضية الصفرية، مما يدعم فرضية العشوائية في السلسلة.

3. الأسس الرياضية لحساب إحصائية اختبار التتابع

3.1 حساب المتوسط الحسابي والتباين لعدد التتابعات المتوقعة

يرتكز الاشتقاق الرياضي لاختبار التتابع على الحسابات التوافقية المستندة إلى التوزيعات الاحتمالية للمتتاليات المنفصلة. بافتراض وجود عينة تتكون من مجموعتين من العناصر المتمايزة، حيث يمثل العدد الإجمالي للمشاهدات من النوع الأول المتغير (n1)، ويمثل العدد الإجمالي للمشاهدات من النوع الثاني المتغير (n2)، بحيث يكون الحجم الكلي للعينة مساوياً لمجموعهما (N = n1 + n2)، يمكن اشتقاق القيمة المتوقعة إحصائياً لعدد التتابعات الكلي (R).

تُعطى صيغة القيمة المتوقعة لعدد التتابعات بالمعادلة الرياضية التالية:

E(R) = [2 * n1 * n2 / (n1 + n2)] + 1

توضح هذه المعادلة أن القيمة المتوقعة تتحدد مباشرة بنسب العناصر المنتمية إلى كل فئة من الفئتين، وتصل إلى أعلى مستوياتها الممكنة عندما تكون أحجام الفئتين متساوية تماماً (n1 = n2)، مما يعزز فرص التداخل والتناوب بين الحالات المختلفة في ظل التوزيع العشوائي الصرف.

أما التباين الإحصائي لعدد التتابعات، والذي يحدد مقدار التشتت الطبيعي المتوقع حول المتوسط الحسابي، فيُشتق عبر المعادلة الرياضية التوافقية التالية:

Var(R) = [2 * n1 * n2 * (2 * n1 * n2 – n1 – n2)] / [(n1 + n2)^2 * (n1 + n2 – 1)]

يوضح تحليل هذه المعادلة أن التباين يتأثر بدرجة التوازن بين أحجام الفئات وبحجم العينة الإجمالي؛ حيث يؤدي عدم التوازن الحاد بين حجمي الفئتين إلى تقليص التباين المتوقع، مما يجعل من الضروري أخذ هذه المعلمات في الحسبان عند بناء الإحصائية المعيارية للاختبار لضمان دقة التقديرات الاحتمالية.

3.2 تحويل التوزيع إلى الدرجة المعيارية (Z-score)

وفقاً لمبادئ مبرهنة النهاية المركزية (Central Limit Theorem)، يتقارب التوزيع الاحتمالي المنفصل لعدد التتابعات تدريجياً نحو التوزيع الاحتمالي الطبيعي المتصل كلما تزايد حجم العينة الإجمالي وبلغت أحجام الفئات الفرعية مستويات كافية، تقليدياً عندما يتجاوز كل من n1 و n2 عشرين مشاهدة. يتيح هذا التقارب استخدام التحويل المعياري لحساب إحصائية الدرجة المعيارية بدقة وموثوقية عالية.

تُصاغ إحصائية الاختبار المعيارية (Z-score) على النحو الرياضي التالي، والذي يقيس المسافة المعيارية بين عدد التتابعات الفعلي المرصود والمتوسط المتوقع بوحدات الانحراف المعياري:

Z = (R – E(R)) / sqrt(Var(R))

تمثل R في المعادلة عدد التتابعات المحسوبة فعلياً من السلسلة التجريبية، في حين يمثل المقام الجذر التربيعي للتباين، وهو الانحراف المعياري لتوزيع التتابعات تحت فرضية العدم.

تتبع الإحصائية Z الناتجة التوزيع الطبيعي المعياري بمتوسط صفري وانحراف معياري يساوي واحداً صحيحاً تحت فرضية العدم. يسمح هذا التحويل باستخدام جداول التوزيع الطبيعي المعياري أو دوال التوزيع التراكمي في البرمجيات الإحصائية لحساب القيمة الاحتمالية المقابلة للدرجة المعيارية المحسوبة، مما يسهل عملية اتخاذ القرار الإحصائي بسرعة وكفاءة دون الحاجة إلى معالجات توافقية معقدة لكل حالة على حدة.

3.3 التوزيع الدقيق للعينات الصغيرة (Exact Distribution)

عندما تكون أحجام العينات صغيرة جداً، ولا سيما عندما يقل عدد العناصر في أي من الفئتين عن عشرين مشاهدة، تفقد التقريبات المستندة إلى التوزيع الطبيعي المعياري دقتها، مما يؤدي إلى تشويه مستويات الدلالة الإحصائية المحسوبة وزيادة احتمالية ارتكاب أخطاء استدلالية. في مثل هذه البيئات المحدودة، يصبح من الضروري اللجوء إلى التوزيع الاحتمالي الدقيق القائم على المبادئ التوافقية البحتة.

يُحسب التوزيع الدقيق لعدد التتابعات عن طريق حساب جميع التباديل والترتيبات الممكنة لتوزيع عناصر الفئتين، وتحديد عدد التباديل التي تُنتج عدداً محدداً من التتابعات بدقة. تُحدد احتمالية الحصول على عدد محدد من التتابعات الزوجية أو الفردية عبر الصيغ التوافقية الشهيرة التي تعتمد على معاملات التوافيق، مما يتيح حساب دالة الكتلة الاحتمالية الدقيقة لكل قيمة ممكنة للمتغير العشوائي R.

تعتمد البرمجيات الإحصائية المتطورة، عند التعامل مع العينات الصغيرة، على توليد الاحتماليات التراكمية الدقيقة مباشرة من هذه الصيغ الرياضية بدلاً من الاعتماد على إحصائية Z التقريبية. يضمن هذا النهج الدقيق الحفاظ على مستوى المعنوية الاسمي المحدد للتجربة ويمنع التقديرات المتفائلة أو المتشائمة لفرص رفض الفرضية الصفرية في التجارب المعملية والسريرية ذات الأحجام المحدودة.

4. إعداد بيئة العمل البرمجية في بايثون لتحليل التتابع

4.1 تثبيت المكتبات الإحصائية والتحليلية الأساسية

تتطلب المعالجة الإحصائية المتقدمة لاختبار التتابع في بايثون تهيئة بيئة عمل متكاملة تتضمن حزم الحوسبة العلمية ومعالجة البيانات والجداول. تأتي حزمة Statsmodels في مقدمة هذه الأدوات، حيث تحتوي على الوحدات الفرعية المتخصصة في تنفيذ الاختبارات اللامعلمية واختبارات السلاسل الزمنية. يمكن تثبيت الحزمة وإدارتها عبر مدير الحزم القياسي من خلال تشغيل الأمر التالي في سطر الأوامر:

pip install statsmodels numpy pandas matplotlib seaborn

توفر حزمة NumPy الأسس الرياضية لمعالجة المصفوفات متعددة الأبعاد والعمليات الحسابية المتجهة فائقة السرعة، وهو أمر ضروري لتقطيع السلاسل وحساب الفروق المعيارية. من جانبها، تتيح حزمة Pandas هياكل بيانات مرنة مثل السلاسل والجداول، مما يسهل عمليات استيراد البيانات من الملفات الخارجية، والتعامل مع التواريخ، وتنظيف القيم الشاذة والمفقودة قبل الشروع في التحليل الإحصائي.

يستلزم التحليل المتكامل أيضاً تجهيز مكتبات التصور البياني مثل Matplotlib و Seaborn، والتي تلعب دوراً حاسماً في استكشاف الأنماط التسلسلية بصرياً. يتيح التكامل السلس بين هذه الحزم بناء خطوط معالجة بيانات قوية تبدأ من قراءة البيانات الخام، مروراً بإجراء الحسابات الإحصائية الدقيقة لاختبار التتابع، وانتهاءً بتوليد المخططات التشخيصية المتقدمة التي تفسر السلوك التسلسلي للبيانات.

4.2 استيراد الوحدات الخاصة باختبار التتابع

تتضمن مكتبة Statsmodels وحدة فرعية متخصصة في الاختبارات اللامعلمية ضمن بيئة الحوسبة الرملية (Sandbox)، والتي تحتوي على الدوال المخصصة لاختبارات التتابع. يتم استدعاء دالة اختبار التتابع لعينة واحدة ودالة الاختبار لعينتين من خلال التعليمات البرمجية الصريحة التالية:

from statsmodels.sandbox.stats.runs import runstest_1samp, runstest_2samp
import numpy as np
import pandas as pd

تحتوي دالة runstest_1samp على الخوارزميات اللازمة لتقسيم السلاسل المتصلة وفق عتبات محددة وحساب إحصائية Z والقيمة الاحتمالية المقابلة لها مع خيارات تصحيح الاستمرارية. في المقابل، تُستخدم دالة runstest_2samp لمقارنة توزيعين مستقلين واختبار فرضية تجانس التوزيع الأصلي عبر دمج العينات وترتيبها وحساب التتابعات المشتركة.

من الضروري التحقق من توافق إصدارات الحزم المثبتة في بيئة العمل لتجنب الأخطاء الناتجة عن التغيرات في المعمارية البرمجية للمكتبات. يمكن التحقق من إصدار حزمة Statsmodels المثبتة بطباعة خاصية الإصدار البرمجي الخاص بالحزمة، والتأكد من استقرار استدعاء الدوال من وحدة Sandbox دون تحذيرات متعلقة بإلغاء التوافقية في الإصدارات المستقبلية.

4.3 تهيئة وبناء بيئة افتراضية متكاملة للتحليل

يُنصح دائماً بإنشاء بيئة افتراضية معزولة (Virtual Environment) مخصصة لمشروع التحليل الإحصائي لتجنب تضارب التبعيات بين الحزم المختلفة ولضمان إمكانية إعادة إنتاج النتائج بدقة عبر منصات التشغيل المتعددة. يمكن إنشاء بيئة افتراضية جديدة وتفعيلها باستخدام أدوات البيئة الافتراضية القياسية في بايثون أو عبر نظام إدارة البيئات المتقدم Conda.

تُعد دفاتر الملاحظات التفاعلية Jupyter Notebook أو بيئة JupyterLab الإطار المثالي لتنفيذ اختبارات التتابع، حيث تتيح الدمج التفاعلي بين مقاطع الكود البرمجي، والجداول الإحصائية، والمخططات البصرية التوضيحية، والنصوص التفسيرية بصيغة Markdown. يساعد هذا التنظيم المنهجي على تتبع خطوات التحليل خطوة بخطوة وتوثيق الملاحظات التحليلية بجانب المخرجات الرقمية مباشرة.

ينبغي الالتزام بمعايير الصياغة البرمجية المعتمدة في مجتمع بايثون، والمعروفة بدليل أسلوب PEP 8، من خلال تنظيم الاستيرادات في مستهل الملف البرمجي، وتسمية المتغيرات بأسماء واضحة تعكس دلالتها الإحصائية مثل z_statistic و p_value، واستخدام التعليقات التوضيحية لتوثيق معايير القطع المختارة ومستويات الدلالة المعتمدة لكل مرحلة من مراحل التحليل.

5. التطبيق العملي لاختبار التتابع باستخدام مكتبة statsmodels

5.1 استخدام دالة runstest_1samp ومعاملاتها الأساسية

تُشكل دالة runstest_1samp الأداة البرمجية الأساسية لإجراء اختبار التتابع لعينة واحدة في بايثون، وتتميز ببنية برمجية مباشرة تقبل العديد من المعاملات التحكمية لضبط سلوك الاختبار الإحصائي. تتحدد البنية الأساسية للدالة بالصيغة التالية:

z_stat, p_val = runstest_1samp(x, cutoff=’mean’, correction=True)

يُمثل المعامل الأول (x) مصفوفة البيانات أو السلسلة الرقمية أو الفئوية المُراد اختبار عشوائيتها. يمكن تمرير مصفوفات NumPy أحادية البعد أو سلاسل Pandas Series كمدخلات صالحة للدالة، شريطة خلوها من القيم المفقودة وغير المعرفة التي قد تعطل العمليات الحسابية الداخلية.

يتحكم المعامل الثاني (cutoff) في طريقة تحويل البيانات الرقمية المتصلة إلى تسلسل ثنائي من الفئات، حيث يمكن تمرير القيم النصية المحددة مسبقاً مثل ‘mean’ لاستخدام المتوسط الحسابي، أو ‘median’ لاستخدام الوسيط الإحصائي، أو تمرير قيمة عددية مخصصة تمثل عتبة القطع النظرية. أما المعامل الثالث (correction)، فهو معامل منطقي (Boolean) يتحكم في تفعيل أو تعطيل تصحيح الاستمرارية للعينات، حيث يؤدي ضبطه على القيمة True إلى تعديل إحصائية Z بمقدار نصف وحدة لتقليل التحيز في العينات ذات الأحجام المحدودة.

تُرجع الدالة زوجاً من القيم العددية العائمة (Tuple) يمثل العنصر الأول منهما الدرجة المعيارية المحسوبة (Z-statistic)، بينما يمثل العنصر الثاني القيمة الاحتمالية المقابلة (P-value) للاختبار ثنائي الطرف. يتيح ذلك للباحث استخراج النتائج ودمجها في قوالب تقارير مخصصة أو استخدامها كمدخلات في شروط منطقية لاتخاذ قرارات قبول أو رفض الفرضيات آلياً.

5.2 تطبيق خطوة بخطوة على مجموعة بيانات رقمية متصلة

لتوضيح التطبيق العملي الكامل، نفترض وجود سلسلة زمنية تمثل قراءات متتالية لظاهرة فيزيائية أو مالية ممتدة عبر 30 نقطة زمنية. تبدأ الخطوة الأولى بتجهيز البيانات وتمريرها إلى الدالة الإحصائية وتحديد الوسيط كنقطة قطع لضمان توازن التوزيع:

data = np.array([12.3, 14.1, 13.8, 15.2, 16.0, 15.8, 14.9, 13.2, 11.5, 10.8,
                 11.2, 12.0, 14.5, 15.1, 16.3, 17.0, 16.5, 15.4, 13.9, 12.8,
                 11.9, 10.5, 11.1, 12.4, 13.5, 14.8, 15.9, 16.1, 15.0, 13.7])

z_stat, p_val = runstest_1samp(data, cutoff=’median’, correction=True)
print(f”Z-statistic: {z_stat:.4f}, P-value: {p_val:.4f}”)

عند تنفيذ هذا الكود، تقوم الدالة آلياً بحساب وسيط البيانات، ثم تحويل كل قيمة في المصفوفة إلى قيمة ثنائية تعبر عما إذا كانت القيمة تقع أعلى الوسيط أو أدناه. بعد ذلك، تحسب الدالة عدد التتابعات الكلي للمشاهدات المتشابهة، وتقارنها بالقيمة المتوقعة والتباين النظري لتوليد الدرجة المعيارية Z والقيمة الاحتمالية بدقة فائقة.

إذا أظهرت المخرجات أن إحصائية Z سالبة بشكل ملحوظ وقيمة p-value أقل من 0.05، فإن ذلك يعكس وجود نمط تجميعي قوي حيث تظل القيم فوق الوسيط لفترات طويلة ثم تنخفض لتبقى تحت الوسيط لفترات متصلة، مما يكشف عن وجود حركة موجية أو اتجاه عام يلغي فرضية العشوائية البحتة في السلسلة المدروسة.

5.3 إجراء الاختبار على العينات الثنائية المستقلة (Two-Sample Runs Test)

يُستخدم اختبار فالد-وولفويتز لعينتين مستقلتين لاختبار ما إذا كانت العينتان مسحوبتين من مجتمعين متطابقين في التوزيع والشكل والموقع. تُقدم مكتبة Statsmodels دالة runstest_2samp لتنفيذ هذا الإجراء اللامعلمي المتقدم، حيث يتم دمج عناصر المجموعتين معاً في متتالية موحدة ومرتبة تصاعدياً مع الاحتفاظ بمؤشر انتماء كل عنصر لمجموعته الأصلية.

group_a = np.array([23, 25, 28, 32, 35, 39, 42])
group_b = np.array([15, 18, 19, 21, 24, 27, 30])

z_stat_2s, p_val_2s = runstest_2samp(group_a, group_b)
print(f”Two-sample Runs Test – Z: {z_stat_2s:.4f}, P-value: {p_val_2s:.4f}”)

تقوم الخوارزمية بحساب عدد التتابعات الناتجة عن تسميات المجموعات في المصفوفة المدمجة والمرتبة. فإذا كانت العينتان تنتميان إلى نفس التوزيع، فإن عناصر المجموعتين ستتداخل بشكل عشوائي ومكثف، مما يؤدي إلى عدد كبير من التتابعات؛ أما إذا اختلف التوزيعان في المتوسط أو التشتت، فإن عناصر إحدى المجموعتين ستتجمع في أحد أطراف التسلسل، مما يقلل عدد التتابعات بشكل حاد.

يمثل هذا الاختبار بديلاً لامعلمياً مهماً لاختبار كولموجوروف-سميرنوف لعينتين، حيث يتميز بحساسيته العالية للاختلافات في أي ملمح من ملامح التوزيع الاحتمالي، سواء كان ذلك الاختلاف متعلقاً بالنزعة المركزية أو التباين أو الالتواء والتفرطح، مما يجعله أداة استكشافية قوية في الأبحاث المقارنة.

6. معالجة البيانات الفئوية والثنائية عبر اختبار التتابع في بايثون

6.1 تحويل المتغيرات الثنائية (Binary Data) للاختبار

في العديد من الدراسات التطبيقية، تأتي البيانات بصيغة فئوية ثنائية بطبيعتها، مثل نتائج التجارب المعملية (نجاح/فشل)، أو اتجاهات الأسواق (صعود/هبوط)، أو الاستجابات السلوكية (نعم/لا). للتعامل مع هذه البيانات في بايثون، يجب أولاً ترميز المتغيرات الاسمية إلى قيم رقمية ثنائية متمايزة (عادة 0 و 1) باستخدام عمليات التعيين المباشرة أو دوال الترميز في مكتبة Pandas.

عند تطبيق دالة runstest_1samp على بيانات مرمزة مسبقاً إلى 0 و 1، يجب توخي الحذر الشديد عند تحديد معامل نقطة القطع. إن ترك المعامل الافتراضي ‘mean’ قد يؤدي إلى إعادة حساب المتوسط للأصفار والآحاد واعتماده كعتبة، وهو أمر صحيح رياضياً، لكن التحديد الصريح لعتبة القطع عند القيمة 0.5 يضمن الفصل التام بين الفئتين ويمنع أي التباس في تصنيف المشاهدات، كما هو موضح في النموذج التالي:

responses = np.array([‘Yes’, ‘Yes’, ‘No’, ‘Yes’, ‘No’, ‘No’, ‘No’, ‘Yes’])
binary_data = np.where(responses == ‘Yes’, 1, 0)
z_stat, p_val = runstest_1samp(binary_data, cutoff=0.5, correction=False)

تضمن هذه المعالجة الصريحة استقرار الحسابات الإحصائية ومطابقتها للمفاهيم الرياضية الأصلية لاختبار التتابع الثنائي، مما يتيح للباحث التحقق من عشوائية تسلسل الاختيارات أو الأحداث الفئوية بدقة وموثوقية بالغة.

6.2 معالجة البيانات الفئوية متعددة المستويات

عند التعامل مع سلاسل تتضمن متغيرات فئوية متعددة المستويات (أكثر من فئتين، مثل تقييمات ثلاثية أو خيارات استهلاكية متعددة A, B, C)، لا يمكن تطبيق اختبار التتابع الثنائي القياسي مباشرة دون إعادة هيكلة البيانات. تتمثل الإستراتيجية الكلاسيكية في تقليص الفئات المتعددة إلى بنية ثنائية عبر تجميع فئات معينة مقابل فئة مرجعية، أو دراسة عشوائية الانتقال بين فئة مستهدفة وجميع الفئات الأخرى مجتمعة.

يمكن أيضاً بناء خوارزمية مخصصة في بايثون لحساب التتابعات متعددة الفئات مباشرة، حيث يُعرَّف التتابع بأنه أي سلسلة متصلة من نفس الرمز بغض النظر عن عدد الفئات المتاحة. في هذه الحالة، يتم حساب عدد التتابعات الكلي المرصود ومقارنته بالتوزيع الاحتمالي متعدد الحدود المقابل لتوزيع التكرارات في العينة الأصلية عبر المحاكاة الإحصائية أو الصيغ التوافقية الموسعة.

يُمثل فحص مصفوفة الانتقالات الاحتمالية (Transition Matrix) باستخدام حزمة Pandas وسيلة مكملة بالغة الأهمية لدراسة السلاسل متعددة الفئات، حيث يمكن حساب احتمالات الانتقال من حالة إلى أخرى ومقارنتها باحتمالات الانتقال المتوقعة تحت فرضية العشوائية الكاملة، مما يوفر رؤية تشخيصية متكاملة لطبيعة التبعية التسلسلية بين المستويات الفئوية المختلفة.

6.3 التعامل مع المشاهدات المتكررة والمتطابقة (Ties Handling)

تنشأ معضلة المشاهدات المتطابقة (Ties) عندما تتساوى بعض قيم السلسلة العددية تماماً مع نقطة القطع المعتمدة، مثل تطابق عدة مشاهدات مع الوسيط أو المتوسط الحسابي. يؤدي وجود هذه القيم إلى غموض في تصنيف المشاهدة: هل تنتمي إلى الفئة العليا أم الدنيا؟ ويؤثر قرار معالجة هذه الحالات تأثيراً مباشراً على إجمالي عدد التتابعات وقيمة إحصائية Z الناتجة.

تتبنى مكتبة Statsmodels منهجية افتراضية تقضي بتضمين القيم المتطابقة مع عتبة القطع ضمن إحدى الفئتين (عادة الفئة الأكبر أو المتساوية). ومع ذلك، تتضمن الممارسات الإحصائية المتقدمة استراتيجيات بديلة، مثل حذف القيم المتطابقة تماماً مع نقطة القطع لتقليص حجم العينة الفعلي وتجنب التحيز، أو توزيع القيم المتطابقة عشوائياً بين الفئتين العليا والدنيا لتقييم حساسية النتائج.

يوضح النموذج البرمجي التالي كيفية استبعاد القيم المتطابقة مع الوسيط قبل تنفيذ الاختبار لضمان عدم تشويه التتابعات بسبب تكرار القيم المركزية:

raw_data = np.array([5, 8, 12, 10, 10, 10, 15, 18, 10, 22])
med_val = np.median(raw_data)
filtered_data = raw_data[raw_data != med_val]
z_stat, p_val = runstest_1samp(filtered_data, cutoff=med_val, correction=True)

يساعد هذا الإجراء على ضمان اتساق الاستدلال الإحصائي، ولا سيما في مجموعات البيانات المتقطعة أو التي تتضمن تقريباً كمياً كبيراً يؤدي إلى تكرار متطابق للقيم حول العتبات الحسابية.

7. تحديد عتبات التقسيم (Cutoff Methods) وتأثيرها على النتائج

7.1 التقسيم باستخدام المتوسط الحسابي (cutoff=’mean’)

يُعد المتوسط الحسابي أحد الخيارات الأكثر شيوعاً لتحديد نقطة القطع في اختبار التتابع، حيث يتم حساب المتوسط الإجمالي للسلسلة واستخدامه كعتبة لتقسيم المشاهدات إلى فئتين: فئة القيم الأكبر من المتوسط وفئة القيم الأقل من أو المتساوية معه. تُفعل هذه المنهجية برمجياً عبر تمرير المعامل `cutoff=’mean’` في دالة `runstest_1samp`.

يتسم المتوسط الحسابي بحساسيته الشديدة لجميع القيم في السلسلة، مما يجعله معياراً ممتازاً لتقسيم البيانات عندما تكون موزعة بشكل متماثل وخالية من القيم الشاذة المتطرفة. يعكس التقسيم بالمتوسط التغيرات الإجمالية في طاقة النظام أو المستوى العام للإشارة حول مركز ثقلها الفيزيائي أو الرياضي، مما يوفر تقييماً دقيقاً لعشوائية التذبذب حول القيمة المتوقعة الكلية.

ومع ذلك، تكمن خطورة الاعتماد على المتوسط الحسابي في التوزيعات الملتوية أو السلاسل التي تحتوي على قيم شاذة حادة (Outliers)؛ حيث تؤدي قيمة متطرفة واحدة إلى سحب المتوسط بعيداً عن مركز تركيز البيانات، مما ينتج عنه انقسام غير متوازن للغاية في أحجام الفئتين (n1 و n2). يترتب على هذا الخلل تقليص التباين الإحصائي للتتابعات وانخفاض القوة الاختبارية، مما قد يؤدي إلى نتائج مضللة تشير زيفاً إلى وجود نمط غير عشوائي.

7.2 التقسيم باستخدام الوسيط الإحصائي (cutoff=’median’)

يُمثل الوسيط الإحصائي الخيار الأكثر متانة وموثوقية في التحليل الإحصائي اللامعلمي، ويُفعل برمجياً بتمرير المعامل `cutoff=’median’`. يتميز الوسيط بقدرته الجوهرية على تقسيم مجموعة البيانات دائماً إلى نصفين متساويين في الحجم تقريباً (n1 ≈ n2)، بغض النظر عن مدى التواء التوزيع الأصلي أو وجود قيم شاذة حادة في الأطراف.

يحقق استخدام الوسيط التوازن الأمثل بين أحجام المجموعات، مما يرفع القيمة المتوقعة لعدد التتابعات إلى أقصى حد نظري ممكن ويزيد من التباين الإحصائي، وهو ما يمنح الاختبار أعلى قوة إحصائية ممكنة للكشف عن الأنماط غير العشوائية. ولهذا السبب، يوصي معظم علماء الإحصاء باعتماد الوسيط كخيار افتراضي ومعياري في اختبارات التتابع ما لم تكن هناك مسوغات نظرية صارمة تفرض خلاف ذلك.

تُظهر المقارنة التطبيقية بين استخدام المتوسط والوسيط على نفس مجموعة البيانات أن الوسيط يظل ثابتاً ومقاوماً للتأثيرات الجانبية للقيم المتطرفة، بينما يتأرجح المتوسط مسبباً تغيرات كبيرة في إحصائية Z المحسوبة. يضمن التقسيم بالوسيط بقاء الاختبار وفياً لطبيعته اللامعلمية المقاومة للافتراضات التوزيعية المقيدة.

7.3 استخدام عتبات مخصصة (Custom Cutoff Values)

في العديد من السياقات التطبيقية والهندسية والسريرية، لا تكون نقاط القطع الإحصائية كالمتوسط والوسيط هي المعيار الأنسب لتقييم العشوائية، بل تبرز الحاجة إلى استخدام عتبات مخصصة مبنية على معايير نظرية محددة سلفاً، مثل عتبات الأمان الفيزيائية، أو حدود التحكم في الجودة، أو المستويات الإكلينيكية الحرجة للمؤشرات الحيوية.

تتيح دالة `runstest_1samp` تمرير أي قيمة رقمية عائمة كمعامل للقطع مباشرة. يتيح ذلك للباحث فحص عشوائية تجاوز النظام لحد معين، مثل دراسة ما إذا كانت فترات تجاوز درجات الحرارة لحاجز 37.5 درجة مئوية تحدث بصورة عشوائية أم تأتي على شكل نوبات وتكتلات زمنية مترابطة، كما يوضح النموذج التالي:

temperature_records = np.array([36.8, 37.1, 37.6, 37.8, 38.0, 37.4, 36.9, 36.7])
clinical_threshold = 37.5
z_stat, p_val = runstest_1samp(temperature_records, cutoff=clinical_threshold)
print(f”Custom Cutoff Test (37.5°C) – Z: {z_stat:.4f}, P-val: {p_val:.4f}”)

يمكن أيضاً استخدام النسب المئوية المتقدمة (Percentiles) كعتبات قطع ديناميكية، مثل فحص التتابعات عند المئين التسعين لدراسة عشوائية الأحداث المتطرفة والنادرة في السلاسل المالية والمناخية، مما يوسع من الآفاق التحليلية لاختبار التتابع في مجالات إدارة المخاطر وتوقع الكوارث.

8. تطبيق معامل تصحيح الاستمرارية للعينات الصغيرة (Continuity Correction)

8.1 الأساس الرياضي لتصحيح الاستمرارية (Yates-like Correction)

ينشأ تصحيح الاستمرارية في اختبار التتابع من الحاجة المنهجية لمعالجة الفجوة الرياضية بين التوزيع المنفصل الفعلي لعدد التتابعات (حيث لا يأخذ R سوى قيم صحيحة موجبة) والتوزيع الطبيعي المعياري المستمر المستخدم لحساب الاحتماليات التقريبية. يشبه هذا التصحيح في جوهره تصحيح ييتس للاستمرارية (Yates’s correction for continuity) المطبق في اختبار كاي تربيع والجداول التوافقية.

رياضياً، يتم تطبيق التصحيح عن طريق تعديل بسط إحصائية Z بمقدار نصف وحدة (0.5) في الاتجاه المعاكس لاتجاه الانحراف نحو المتوسط المتوقع، وذلك لتقريب مساحة المستطيلات المنفصلة من مساحة المنحنى المستمر بدقة أكبر. تُصاغ المعادلة المعدلة للتصحيح على النحو التالي:

Z_corrected = (R – E(R) – sign(R – E(R)) * 0.5) / sqrt(Var(R))

حيث تمثل دالة الإشارة sign قيمة 1+ إذا كان عدد التتابعات الفعلي أكبر من المتوقع، وقيمة 1- إذا كان أصغر من المتوقع، مما يؤدي إلى تقليص القيمة المطلقة لإحصائية Z قليلاً نحو الصفر.

يعمل هذا التعديل التحفظي على رفع القيمة الاحتمالية p-value بشكل طفيف، مما يقلل من فرصة رفض الفرضية الصفرية زيفاً ويحد من معدلات تضخم الخطأ من النوع الأول، لا سيما في الدراسات التي تعتمد على عينات محدودة الحجم ويكون فيها التقريب الطبيعي غير دقيق بصورة مثالية.

8.2 التحكم في معامل التصحيح برمجياً في Statsmodels

تتيح مكتبة Statsmodels للمستخدمين التحكم الكامل في تفعيل أو تعطيل هذا التعديل الرياضي عبر المعامل المنطقي `correction` في دالة `runstest_1samp`. يتم تفعيل التصحيح افتراضياً عند ضبط `correction=True`، بينما يؤدي ضبطه على `correction=False` إلى استخدام الصيغة الكلاسيكية المباشرة دون تعديل النصف وحدة.

تُظهر المقارنة البرمجية بين الحالتين فروقاً واضحة في المخرجات الرقمية عندما يكون حجم العينة محدوداً، كما يتضح من المثال البرمجي التالي:

sample_data = np.array([1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1])
z_corr, p_corr = runstest_1samp(sample_data, cutoff=0.5, correction=True)
z_raw, p_raw = runstest_1samp(sample_data, cutoff=0.5, correction=False)

print(f”With Correction: Z = {z_corr:.4f}, p = {p_corr:.4f}”)
print(f”Without Correction: Z = {z_raw:.4f}, p = {p_raw:.4f}”)

توضح النتائج أن تعطيل التصحيح يؤدي إلى قيمة مطلقة أكبر للدرجة المعيارية Z وقيمة احتمالية أقل، مما يجعل الاختبار أكثر تساهلاً في رفض فرضية العشوائية. تشير التوجيهات الإحصائية إلى ضرورة الإبقاء على تفعيل التصحيح في العينات الصغيرة والمتوسطة (أقل من 50 مشاهدة)، في حين يصبح تأثير التصحيح مهملاً رياضياً مع العينات الكبيرة التي تتجاوز مئات المشاهدات نظراً لضآلة قيمة 0.5 مقارنة بحجم البسط الإجمالي.

8.3 تأثير حجم العينة على دقة الاختبار وحساسيته

يرتبط الأداء الاستدلالي لاختبار التتابع ارتباطاً وثيقاً بحجم العينة الإجمالي ودرجة التوازن بين المجموعات الفرعية. في العينات بالغة الصغر (أقل من 10 مشاهدات)، تكون القوة الإحصائية للاختبار منخفضة للغاية، مما يجعل الاختبار عاجزاً عن اكتشاف الأنماط غير العشوائية الحقيقية ويؤدي إلى ارتفاع ملحوظ في معدل الخطأ من النوع الثاني (الفشل في رفض الفرضية الصفرية الباطلة).

مع زيادة حجم العينة، تتحسن القوة الإحصائية للاختبار بشكل مطرد وتتزايد حساسيته لكشف الارتباطات الذاتية الدقيقة والنزعات الخفية. وتُظهر تجارب المحاكاة الإحصائية أن حجم عينة يتراوح بين 30 و 50 مشاهدة موزعة بالتساوي يوفر قوة إحصائية كافية لاكتشاف معظم الانحرافات الجوهرية عن العشوائية بمستوى ثقة يتجاوز 80%.

يجب على الباحثين مراعاة أن الزيادة المفرطة في حجم العينة (مئات الآلاف من المشاهدات) تجعل الاختبار شديد الحساسية للانحرافات الرياضية الضئيلة جداً التي قد لا تحمل أي دلالة تطبيقية أو علمية حقيقية. في مثل هذه الحالات، يجب تقييم حجم التأثير ومقدار الانحراف المعياري بدلاً من الاعتماد الحصري على القيمة الاحتمالية لاتخاذ القرارات العلمية.

9. تفسير المخرجات الإحصائية واتخاذ القرار العلمي

9.1 قراءة إحصائية Z وفهم دلالة إشارتها

تحمل إشارة الدرجة المعيارية Z الناتجة عن اختبار التتابع دلالات جوهرية تفسر الطبيعة الدقيقة للنمط المكتشف في البيانات. فعندما تكون إحصائية Z ذات قيمة موجبة (Z > 0)، فإن ذلك يدل على أن عدد التتابعات الفعلي المرصود في العينة أكبر من العدد المتوقع في ظل فرضية العشوائية الكاملة.

يعكس التتابع الموجب المرتفع ظاهرة التناوب المفرط والتبديل السريع بين الحالات، مما يشير إلى وجود عملية تصحيحية دورية أو آلية تجبر المتغير على التغير المستمر والارتداد السريع حول نقطة القطع. ويُعد هذا النمط شائعاً في البيانات المصممة يدوياً لمحاكاة العشوائية حيث يميل البشر دون وعي إلى الإفراط في تغيير الاختيارات تجنباً لتكرار نفس الرمز.

على العكس من ذلك، عندما تكون إحصائية Z سالبة (Z < 0)، فإن ذلك يعبر عن وجود عدد تتابعات أقل بكثير من المتوقع نظرياً، مما يشير إلى ظاهرة التكتل والاستقرار الممتد في نفس الحالة لفترات طويلة. يمثل هذا النمط دليلاً قوياً على وجود اتجاهات عامة (Trends)، أو ارتباطات ذاتية موجبة، أو خمول في النظام يمنعه من التغير السريع، وهو ما يمثل النمط الأكثر شيوعاً في السلاسل الزمنية الطبيعية والاقتصادية والبيولوجية.

9.2 تفسير القيمة الاحتمالية (P-value) وإقرار النتيجة

تمثل القيمة الاحتمالية المحسوبة (P-value) احتمالية الحصول على عدد من التتابعات يبتعد عن المتوسط المتوقع بمقدار يساوي أو يتجاوز ما تم رصده فعلياً في العينة، بافتراض صحة الفرضية الصفرية القائلة بالعشوائية الكاملة. وتُقارن هذه القيمة مباشرة بمستوى الدلالة المعياري المعتمد (مثل 0.05).

إذا كانت قيمة P-value أقل من 0.05، يتم رفض الفرضية الصفرية بصورة قاطعة، ويُستنتج وجود نمط غير عشوائي ذي دلالة إحصائية في ترتيب المشاهدات. ويجب على الباحث في هذه الحالة تحديد اتجاه النمط (تكتل أم تناوب) بالاستناد إلى إشارة إحصائية Z وتوثيق النتيجة بدقة علمية وفق معايير التوثيق الأكاديمي، مثل دليل جمعية علم النفس الأمريكية (APA Style).

تتم صياغة النتيجة الإحصائية وفق دليل APA بنص علمي منضبط مثل: “أظهر اختبار التتابع لفالد-وولفويتز وجود نمط تجميعي دال إحصائياً في تسلسل الاستجابات (Z = -2.45, p = .014)، مما يشير إلى انتهاك افتراض العشوائية المستقلة للمشاهدات”. ويضمن هذا الأسلوب الشفافية والموثوقية في تقديم النتائج العلمية وتفادي المغالطات التفسيرية الشائعة.

9.3 التصور البصري لنتائج اختبار التتابع

يُعد التصور البياني خطوة تشخيصية وتفسيرية بالغة الأهمية تساند القرارات الإحصائية الرقمية، حيث يتيح للباحث رؤية التكتلات والتتابعات وتوزيع المشاهدات بصرياً حول خط القطع. يمكن بناء مخطط تشخيصي احترافي في بايثون باستخدام مكتبتي Matplotlib و Seaborn لربط النقاط وتلوين المشاهدات بحسب تصنيفها:

import matplotlib.pyplot as plt

# إعداد البيانات ونقطة القطع
cutoff_val = np.median(data)
runs_labels = data >= cutoff_val

plt.figure(figsize=(10, 4))
plt.plot(data, color=’gray’, linestyle=’–‘, alpha=0.6, label=’Data Series’)
plt.scatter(range(len(data)), data, c=runs_labels, cmap=’coolwarm’, s=50, zorder=3)
plt.axhline(cutoff_val, color=’red’, linestyle=’-‘, linewidth=1.5, label=f’Cutoff (Median = {cutoff_val:.2f})’)
plt.title(f”Runs Test Diagnostics (Z = {z_stat:.2f}, p = {p_val:.3f})”)
plt.xlabel(“Sequence Index”)
plt.ylabel(“Observed Value”)
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

يُبرز هذا المخطط بوضوح المشاهدات الواقعة أعلى العتبة بلون متمايز عن تلك الواقعة أدناها، مما يجعل التتابعات المتصلة وطول كل منها مرئياً بصورة جلية للمحلل. يسهم هذا التمثيل البصري في تعزيز التقارير الإحصائية وتسهيل شرح النتائج للجهات العلمية والتطبيقية غير المتخصصة في الرياضيات البحتة.

10. تطبيقات اختبار التتابع في الأبحاث النفسية والعلوم السلوكية

10.1 تحليل أوقات الاستجابة وزمن الرجع (Reaction Times)

يُعد قياس زمن الرجع وأوقات الاستجابة من الأدوات المركزية في تجارب علم النفس المعرفي والفيزيولوجيا العصبية لتقييم كفاءة المعالجة الدماغية والانتباه وسرعة اتخاذ القرار. تتطلب هذه النماذج افتراض أن فترات الاستجابة عبر التجارب المتكررة تمثل قياسات مستقلة تتغير حول متوسط ثابت تحت ظروف التجربة الموحدة.

يُستخدم اختبار التتابع كأداة تشخيصية لاختبار فرضية الاستقلالية في سلاسل زمن الرجع؛ حيث يكشف انخفاض عدد التتابعات وظهور Z سالبة عن تأثيرات الإجهاد المعرفي التدريجي (حيث تزداد أزمنة الاستجابة تدريجياً عبر الزمن) أو تأثيرات التعلم والتدريب الممتد (حيث تتناقص أزمنة الاستجابة تدريجياً). إن اكتشاف هذه الأنماط غير العشوائية يفرض على الباحثين معالجة هذه التأثيرات الزمنية كمتغيرات وسيطة أو إدراج معاملات تصحيحية لتفادي تفسير تغيرات الأداء العارضة كفروق جوهرية بين المجموعات التجريبية.

يسهم الاختبار أيضاً في تقييم اضطرابات الانتباه المستمر لدى الفئات السريرية مثل مرضى اضطراب فرط الحركة وتشتت الانتباه (ADHD)؛ حيث تكشف تحليلات التتابع عن تكتلات زمنية من التشتت الحاد والانقطاع الانتباهي تليها فترات من الاستجابة السريعة، مما يوفر مؤشرات تشخيصية كمية تتجاوز مجرد حساب المتوسط الحسابي الإجمالي لزمن الاستجابة.

10.2 تقييم عشوائية الاختيارات السلوكية وصنع القرار

تشكل دراسة قدرة العقل البشري على توليد أحداث عشوائية موضوعاً كلاسيكياً في دراسات علم النفس المعرفي والاقتصاد السلوكي. أظهرت عقود من الأبحاث أن البشر يفتقرون إلى القدرة الفطرية على إنتاج تسلسلات عشوائية حقيقية، حيث يقع معظم الأفراد تحت تأثير الانحياز المعرفي المعروف باسم مغالطة المقامر (Gambler’s Fallacy).

تتمثل هذه المغالطة في الاعتقاد الخاطئ بأن حدوث نتيجة معينة لعدة مرات متتالية يزيد من احتمالية حدوث النتيجة المعاكسة في المحاولة التالية لاستعادة التوازن الكوني للصدفة. يقود هذا التحيز المشاركين في التجارب السلوكية إلى الإفراط في تغيير اختياراتهم، مما يُنتج عدداً كبيراً جداً من التتابعات القصيرة وإحصائية Z موجبة وشاذة إحصائياً عند تطبيق اختبار التتابع على تسلسل اختياراتهم.

يُستخدم اختبار التتابع في هذا السياق لقياس درجة التحيز الإدراكي وتقييم استراتيجيات التبديل والتكرار في مهمات الاختيار الثنائي، ومقارنة أداء الأفراد الأصحاء بالمرضى المصابين بآفات في الفص الجبهي أو اضطرابات الوسواس القهري، والذين قد يظهرون سلوكيات تكرارية مفرطة وغير مرنة تنعكس في صورة تتابعات طويلة جداً وإحصائية Z سالبة حادة.

10.3 فحص بواقي النماذج الانحدارية في علم النفس القياسي

في نمذجة المعادلات البنائية والنماذج الخطية العامة المستخدمة في علم النفس القياسي والعلوم التربوية، يُعد فحص بواقي النموذج (Residuals) شرطاً جوهرياً للتحقق من جودة المطابقة وصحة الفرضيات الهيكلية. تفترض النماذج القياسية أن البواقي الناتجة عن التنبؤ تمثل ضجيجاً عشوائياً أبيض (White Noise) غير مترابط وخالياً من أي بنية نمطية متبقية.

يُطبق اختبار التتابع على سلسلة البواقي المرتبة زمنياً أو وفق الترتيب التجريبي لاختبار عشوائية التذبذب حول الصفر. فإذا أظهر الاختبار أن البواقي تتكتل في تتابعات موجبة أو سالبة طويلة (Z سالبة ودالة إحصائياً)، فإن ذلك يمثل دليلاً قاطعاً على سوء تخصيص النموذج (Model Misspecification)، مثل إغفال متغير تفسيري حاسم، أو وجود علاقات غير خطية لم تلتقطها معادلة الانحدار الخطية، أو وجود ارتباط ذاتي بين أخطاء القياس.

يتيح دمج اختبار التتابع كخطوة فحص إلزامية في خطوط المعالجة القياسية في بايثون الكشف المبكر عن هذه المشكلات الهيكلية وإعادة معايرة النماذج السلوكية قبل اعتمادها في التنبؤ أو القياس النهائي، مما يرفع من الموثوقية العلمية للبحوث المنشورة.

11. مقارنة اختبار التتابع باختبارات العشوائية والاستقلالية الأخرى في بايثون

11.1 المقارنة مع اختبار ديربن-واتسون (Durbin-Watson Test)

يُعد اختبار ديربن-واتسون (Durbin-Watson Test) المعيار الكلاسيكي الأكثر شهرة للكشف عن الارتباط الذاتي من الدرجة الأولى (AR(1)) في بواقي نماذج الانحدار الخطي. يستند هذا الاختبار إلى حساب الفروق المربعة بين البواقي المتتالية، وتتراوح إحصائيته بين 0 و 4، حيث تشير القيمة 2 إلى غياب الارتباط الذاتي تماماً.

يكمن الفرق الجوهري بين الاختبارين في الطبيعة الرياضية والافتراضات الأساسية؛ فاختبار ديربن-واتسون هو اختبار بارامتري يفترض التوزيع الطبيعي للبواقي وتجانس التباين ويفحص خطياً الارتباط من الدرجة الأولى حصراً. في المقابل، يُعد اختبار التتابع اختباراً لامعلمياً بالكامل لا يتأثر بشكل التوزيع ولا بالقيم المتطرفة، ويركز على الترتيب التسلسلي والاتجاهات التراكمية العامة دون التقيد بنموذج انحدار ذاتي خطي محدد.

يتميز اختبار التتابع بقدرته على كشف الأنماط غير الخطية والانزياحات المفاجئة في المتوسط التي قد تعجز إحصائية ديربن-واتسون عن تشخيصها بوضوح عندما تتوازن الفروق الإيجابية والسلبية. وتتكامل الأداتان في بايثون لتوفير فحص تشخيصي شامل للبواقي والسلاسل الزمنية.

11.2 المقارنة مع اختبار ليونغ-بوكس (Ljung-Box Test)

يُعتبر اختبار ليونغ-بوكس (Ljung-Box Test) أحد أقوى الاختبارات الإحصائية في مجال تحليل السلاسل الزمنية المتقدمة، حيث يقوم بفحص الفرضية الصفرية القائلة بأن معاملات الارتباط الذاتي لسلسلة معينة تساوي صفراً عند فترات إبطاء زمني متعددة (Multiple Lags) في آن واحد، بدلاً من الاقتصار على فحص الإبطاء الأول فقط.

يتميز اختبار ليونغ-بوكس، المتاح عبر دالة `acorr_ljungbox` في مكتبة Statsmodels، بقدرته الفائقة على اكتشاف الاعتماديات الزمنية الممتدة والأنماط الدورية المعقدة التي تمتد عبر دورات زمنية متباعدة. ومع ذلك، فإنه يعتمد على حساب التغاير الذاتي الخطي الكمي، مما يجعله حساساً للقيم الشاذة التي قد تشوه تقديرات الارتباط الذاتي.

في المقابل، يقدم اختبار التتابع تقييماً نوعياً شاملاً للعشوائية التسلسلية الإجمالية للسلسلة بالاعتماد على ترتيب القيم وتكرار كتل الإشارات فقط. ويُعد الجمع بين الاختبارين في بايثون ممارسة منهجية ممتازة؛ حيث يؤكد توافق نتائج الاختبارين صحة فرضية العشوائية والاستقلالية، بينما يشير تعارضهما إلى وجود أنماط غير خطية أو تشوهات توزيعية تتطلب فحصاً استكشافياً معمقاً.

11.3 المقارنة مع اختبارات التوزيع ونسبة التكرار (Chi-Square Goodness of Fit)

يخلط بعض الباحثين المبتدئين بين اختبار عشوائية التوزيع التكراري واختبار عشوائية الترتيب التسلسلي. يختص اختبار كاي تربيع لحسن المطابقة (Chi-Square Goodness of Fit) بفحص ما إذا كانت تكرارات الفئات المختلفة تتوافق مع التوزيع الاحتمالي النظري المتوقع (مثل التساوي في فرص الظهور)، دون أن يلتفت إطلاقاً إلى الترتيب الزمني أو التسلسلي لظهور تلك الفئات.

لتوضيح هذا التمايز الجوهري، نفترض سلسلة ناتجة عن رمي عملة نقدية تظهر 50 صورة متتالية متبوعة بـ 50 كتابة متتالية. سيُظهر اختبار كاي تربيع تطابقاً تاماً ومثالياً مع التوزيع المتوقع (p = 1.0) لأن التكرارات متساوية، بينما سيكشف اختبار التتابع فوراً عن شذوذ كامل وغياب تام للعشوائية (Z سالبة حادة جداً) نظراً لوجود تتابعين اثنين فقط في السلسلة بأكملها.

يوضح هذا المثال أن العشوائية الإحصائية الحقيقية تتطلب استيفاء شرطين متكاملين: التوزيع التكراري المتجانس (المفحوص عبر كاي تربيع)، والتسلسل الزمني غير النمطي المستقل (المفحوص عبر اختبار التتابع). بناء لوحة تشخيصية في بايثون تجمع بين هذين الاختبارين يوفر تقييماً شاملاً لا غنى عنه في علوم البيانات والتشفير الإحصائي.

12. الأخطاء الشائعة واستكشاف المشكلات البرمجية وإصلاحها

12.1 التعامل مع القيم المفقودة (Missing Values – NaNs)

تُمثل القيم المفقودة وغير المعرفة (NaNs) أحد أكثر أسباب تعطل دالة `runstest_1samp` شيوعاً، حيث لا تحتوي الدوال اللامعلمية في بيئة الحوسبة الرملية لـ Statsmodels على معالجات داخلية تلقائية لاستبعاد القيم المفقودة، مما يؤدي إلى توليد قيم غير معرفة للدرجة المعيارية Z والقيمة الاحتمالية، أو إطلاق استثناءات برمجية أثناء التنفيذ.

تتطلب المعالجة السليمة تنظيف السلسلة مسبقاً باستخدام دوال Pandas المتخصصة. ويجب الانتباه إلى أن استبعاد القيم المفقودة (Dropna) يُعد مقبولاً فقط إذا كانت المشاهدات مفقودة بصورة عشوائية تماماً، مع مراعاة أن حذف النقاط الزمنية قد يشوه المسافات الزمنية الحقيقية للتسلسل. يُفضل في السلاسل الزمنية المتصلة استخدام تقنيات الاستيفاء الرياضي (Interpolation) الحذر لملء الفجوات قبل إجراء الاختبار كما يوضح الكود التالي:

dirty_series = pd.Series([12.1, np.nan, 14.3, 15.0, np.nan, 13.8, 12.0])
# استبعاد القيم المفقودة مع الحفاظ على التتابع المنطقي
clean_data = dirty_series.dropna().to_numpy()
z_stat, p_val = runstest_1samp(clean_data, cutoff=’median’)

يضمن هذا الإجراء التنظيفي الصارم استقرار الكود البرمجي وحماية النتائج الإحصائية من التشوهات الحسابية غير المتوقعة.

12.2 الوقوع في أخطاء المعاملات والتفسير الخاطئ للقطع

يقع بعض المحللين في أخطاء برمجية شائعة تتعلق بتمرير قيم غير مدعومة لمعامل `cutoff` في دالة `runstest_1samp`، مثل تمرير نصوص مثل ‘mode’ أو كتابة ‘Mean’ بحروف كبيرة، مما يولد أخطاء في التعرف على المعاملات. الخيارات النصية المدعومة رسمياً وصحيحة نحوياً هي ‘mean’ و ‘median’ فقط بحروف صغيرة، وأي قيمة أخرى يجب أن تكون قيمة عددية صريحة (int أو float).

من الأخطاء التحليلية الجسيمة أيضاً تطبيق الاختبار على سلاسل تحتوي على قيم متطابقة فقط (جميع المشاهدات متساوية)، أو تطبيق عتبة قطع مخصصة تقع خارج نطاق قيم البيانات بالكامل (كأن تكون العتبة أكبر من أعلى قيمة في العينة). ينتج عن ذلك وجود فئة واحدة فارغة (n1 = 0 أو n2 = 0)، مما يؤدي إلى خطأ رياضي يتمثل في القسمة على صفر أثناء حساب التباين، وظهور تحذيرات حوسبية تشير إلى نتائج باطلة.

يجب دائماً التحقق برمجياً من وجود تباين كافٍ في البيانات وتأكيد انقسام العينة إلى فئتين تحتوي كل منهما على عنصر واحد على الأقل قبل تمرير المصفوفات إلى دوال الاختبار، لضمان استقرار خطوط التحليل الآلية وتجنب التوقف المفاجئ للأنظمة البرمجية.

12.3 إرشادات كتابة كود قوي وقابل لإعادة الاستخدام (Reusable Pipeline)

لضمان أعلى معايير الجودة البرمجية وتسهيل دمج اختبارات التتابع في المشاريع التحليلية واسعة النطاق، يُنصح ببناء صنف برمجي مخصص (Custom Class) يغلف جميع مراحل التحليل، بما في ذلك تنظيف البيانات، وحساب الإحصائيات، وإجراء التحقق من الشروط، وتوليد التقارير التلقائية. يوضح النموذج التالي تصميماً متقدماً لفئة فحص العشوائية:

class RandomnessAnalyzer:
    def __init__(self, data):
        self.data = pd.Series(data).dropna().to_numpy()
        
    def run_test(self, cutoff=’median’, alpha=0.05):
        if len(np.unique(self.data)) < 2:
            raise ValueError(“Data must contain at least two distinct values.”)
        z_stat, p_val = runstest_1samp(self.data, cutoff=cutoff, correction=True)
        is_random = p_val > alpha
        pattern = “Random” if is_random else (“Clustering/Trend” if z_stat < 0 else “Over-mixing”)
        return {
            “Z-statistic”: round(z_stat, 4),
            “P-value”: round(p_val, 4),
            “Decision”: “Fail to Reject H0” if is_random else “Reject H0”,
            “Inferred Pattern”: pattern
        }

يتيح هذا التصميم المعياري إعادة استخدام الكود بسهولة عبر مشاريع متعددة، وكتابة اختبارات الوحدة البرمجية (Unit Tests) للتحقق من سلامة الأداء، وتصدير النتائج مباشرة إلى جداول وقوالب جاهزة للنشر الأكاديمي، مما يضمن اتساق التحليلات وموثوقيتها في بيئات الإنتاج والبحث المتقدم.

خاتمة

يُمثل اختبار التتابع لفالد-وولفويتز أداة إحصائية لامعلمية متكاملة تكتسب أهمية متزايدة في عصر البيانات الكبيرة والتحليلات المعقدة، حيث يوفر آلية حاسمة للتحقق من افتراض العشوائية واستقلالية المشاهدات دون التورط في قيود التوزيعات البارامترية المشددة. من خلال قدرته الفريدة على تقييم التعاقب الزمني وترتيب الحالات، يتيح الاختبار فحص الهياكل الديناميكية الداخلية للسلاسل واكتشاف النزعات التجميعية أو التناوب المفرط الذي قد يعصف بدقة النماذج الرياضية.

يوفر توظيف لغة بايثون ومنظومة Statsmodels و Pandas مرونة فائقة وإمكانات متطورة لتنفيذ هذا الاختبار بكفاءة، مع إمكانية التحكم الدقيق في نقاط القطع، وتطبيق تصحيحات الاستمرارية، ومعالجة مختلف أنواع البيانات المتصلة والثنائية والفئوية. ويشكل الالتزام بالممارسات البرمجية الرصينة، والجمع بين التحليل الرقمي والتصور البياني التشخيصي، السبيل الأمثل لضمان أعلى درجات الدقة والموثوقية في اتخاذ القرارات الاستدلالية عبر شتى المجالات العلمية والتطبيقية.

References

  • Bradley, J. V. (1968). Distribution-free statistical tests. Prentice-Hall.
  • Gibbons, J. D., & Chakraborti, S. (2010). Nonparametric statistical inference (5th ed.). CRC Press. https://doi.org/10.1201/EBK1420077612
  • Mendenhall, W., Beaver, R. J., & Beaver, B. M. (2012). Introduction to probability and statistics (14th ed.). Cengage Learning.
  • NIST/SEMATECH. (2012). e-Handbook of statistical methods. National Institute of Standards and Technology. https://doi.org/10.18434/M32189
  • Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference (pp. 92–96). https://doi.org/10.25080/Majora-92bf1922-011
  • Siegel, S., & Castellan, N. J. (1988). Nonparametric statistics for the behavioral sciences (2nd ed.). McGraw-Hill.
  • Wald, A., & Wolfowitz, J. (1940). On a test whether two samples are from the same population. The Annals of Mathematical Statistics, 11(2), 147–162. https://doi.org/10.1214/aoms/1177731909

اقتباس هذا المقال

looti, M. (2026, أغسطس 27). كيفية إجراء اختبار التتابع في بايثون. عرب سايكلوجي. https://arabpsychology.com/statistics/how-to-perform-runs-test-in-python/
looti, Mohammed. “كيفية إجراء اختبار التتابع في بايثون.” عرب سايكلوجي, 27 أغسطس 2026, https://arabpsychology.com/statistics/how-to-perform-runs-test-in-python/.
looti, Mohammed. “كيفية إجراء اختبار التتابع في بايثون.” عرب سايكلوجي. أغسطس 27, 2026. https://arabpsychology.com/statistics/how-to-perform-runs-test-in-python/.