الإحصاء النفسيتحليل البيانات ببايثون

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

دليل أكاديمي شامل يشرح كيفية إجراء اختبار ليفين لتجانس التباين في لغة بايثون باستخدام مكتبة SciPy وتفسير النتائج في البحوث النفسية والإحصائية.

تاريخ النشر

تُعد النمذجة الإحصائية والاستدلال المعلمي (Parametric Inference) الركيزة الأساسية التي تستند إليها البحوث التجريبية والارتباطية في العلوم السلوكية، وعلم النفس، والعلوم الاجتماعية والطبية الحيوية. تعتمد أغلب الاختبارات الاستدلالية الكلاسيكية، مثل تحليل التباين (ANOVA) واختبارات “ت” للعينات المستقلة (Independent Samples t-test)، على حزمة من الافتراضات الرياضية الصارمة لضمان صحة الاستنتاجات ودقة مستويات الدلالة المحسوبة. يأتي في مقدمة هذه الافتراضات شرط تجانس التباين (Homoscedasticity)، والذي يقتضي تساوي تباينات المجتمعات الإحصائية التي سُحبت منها العينات عبر مختلف مستويات المتغير المستقل أو المجموعات التجريبية المقارنة.

عندما يتعرض هذا الفرض للانتهاك دون تصحيح منهجي أو نمذجة واعية، تفقد اختبارات الدلالة الإحصائية التقليدية موثوقيتها الرياضية، مما يؤدي إلى تشوه احتمالية ارتكاب الخطأ من النوع الأول (Type I Error) أو انخفاض القوة الإحصائية (Statistical Power) للدراسة بصورة حرجة. هنا تبرز الأهمية الاستثنائية لاختبار ليفين (Levene’s Test) كأحد أكثر الأدوات الاستدلالية انتشاراً ومتانة لتقييم فرضية تجانس التباين عبر المجموعات المتعددة، متفوقاً بمرونته وتماسكه الرياضي على الاختبارات الكلاسيكية السابقة كاختبار بارتليت، خاصة في ظل البيانات الحقيقية التي نادراً ما تحقق شروط التوزيع الطبيعي المثالي بنقاء تام.

يقدم هذا الدليل الشامل والمفصل تحليلاً أكاديمياً وتطبيقياً معمقاً لكيفية إجراء وفهم وتفسير اختبار ليفين باستخدام لغة بايثون (Python)، مستعرضاً الأسس النظرية والمصفوفات الرياضية المتحكمة في حساب إحصائية الاختبار، وديناميكيات تطبيقها داخل المنظومة البرمجية العلمية عبر مكتبات SciPy وPandas وNumPy وPingouin. كما يغطي المقال بالتفصيل كيفية تشخيص الانتهاكات، واختيار معايير النزعة المركزية المناسبة، وإعداد التقارير المنهجية وفق معايير جمعية علم النفس الأمريكية (APA Style)، بالإضافة إلى استراتيجيات المعالجة المتقدمة للبيانات النفسية والسلوكية المعقدة.

1. مقدمة إلى اختبار ليفين ومفهوم تجانس التباين

1.1 تعريف اختبار ليفين وأصوله التاريخية

يُعرَّف اختبار ليفين إحصائياً بأنه أداة استدلالية صُممت لتقييم الفرضية الصفرية القائلة بأن التباينات لمجموعتين إحصائيتين أو أكثر متساوية، وهو ما يُعرف في الأدبيات المنهجية بتجانس تباين الأخطاء أو تساوي التشتت عبر المعالجات. طور هذا الاختبار عالم الإحصاء الأمريكي هاوارد ليفين (Howard Levene) عام 1960 ونشره في ورقته البحثية البارزة بعنوان “مساهمات في الاحتمال والإحصاء: مقالات تكريماً لهارولد هوتلينج”، استجابة للحاجة الملحة لبديل أكثر قوة ومقاومة للعيوب الهيكلية التي تعاني منها اختبارات التجانس التقليدية السابقة.

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

في الممارسات البحثية المعاصرة، يُعد اختبار ليفين الخطوة التشخيصية الأساسية (Pre-testing diagnostic) التي تحدد المسار الاستدلالي الذي سيسلكه المحلل الإحصائي. فبناءً على مخرجات هذا الاختبار، يتقرر ما إذا كان الباحث سيعتمد اختبارات “ت” وتحليل التباين الكلاسيكية بافتراض تساوي التباين، أو سيتجه نحو تطبيق تصحيحات ويلش (Welch’s correction)، أو اللجوء إلى التحويلات الرياضية غير الخطية، أو الانتقال الكلي إلى الاختبارات اللامعلمية الحديثة.

1.2 مفهوم تجانس التباين (Homoscedasticity) في التحليل الإحصائي

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

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

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

1.3 موقع اختبار ليفين ضمن الاختبارات القبلية للنماذج المعلمية

تحتل الاختبارات القبلية (Assumption Checking Tests) مكانة محورية في حوكمة التحليل الإحصائي؛ إذ لا يجوز الشروع في استنتاج الدلالات الإحصائية للنماذج المعلمية دون التأكد من استيفاء الفروض الأساسية وهي: الاستقلالية، والاعتدالية التوزيعية، وتجانس التباين. يمثل اختبار ليفين الحارس المنهجي المباشر لافتراض التجانس المطلوب لإجراء تحليل التباين الأحادي (One-Way ANOVA)، وتحليل التباين متعدد المتغيرات (MANOVA)، واختبار “ت” للعينات المستقلة، ونماذج الانحدار الخطي المتعدد.

في سياق تحليل التباين الأحادي، يُفترض أن مجموع المربعات داخل المجموعات ناتج عن مجتمع يمتلك توزيعاً طبيعياً بتباين ثابت؛ وإذا ثبت فشل اختبار ليفين (أي دلالة إحصائية تشير لاختلاف التباينات)، فإن اختبار F الكلاسيكي يفقد معايرته الدقيقة، وتصبح القيم الاحتمالية غير موثوقة. وبالمثل، في اختبارات “ت” لعينتين مستقلتين، يحدد اختبار ليفين خيار الحساب في الخوارزميات البرمجية بين تجميع التباين (Pooled Variance) أو حساب درجات الحرية المعدلة وفق صيغة ويلش-ساترثويت (Welch-Satterthwaite equation).

علاوة على ذلك، يمتد دور فحص التجانس باختبار ليفين إلى النمذجة الخطية العامة (General Linear Model) وتحليل الانحدار، حيث يتم فحص تجانس تباين البواقي (Residuals) عبر المستويات التنبؤية المختلفة للتأكد من أن الأخطاء موزعة بصورة هوموسكيداتية متسقة، وتفادي وقوع مقدرات المربعات الصغرى العادية (OLS) في فخ عدم الكفاءة الإحصائية وتضخم فترات الثقة.

2. الأسس النظرية والرياضية لاختبار ليفين

2.1 صياغة الفرضيات الإحصائية للاختبار

يعتمد اختبار ليفين على بناء منطقي صارم يستند إلى صياغة زوج من الفرضيات الإحصائية المتعارضة الشاملة لجميع احتمالات تشتت المجتمعات المستهدفة بالدراسة. تُصاغ الفرضية الصفرية (Null Hypothesis, H0) بافتراض التكافؤ التام بين تباينات المجتمعات الأصلية لجميع المجموعات المدروسة، والتي يُعبر عنها بالرمز الإحصائي التالي: تباين المجتمع الأول = تباين المجتمع الثاني = … = تباين المجتمع k، حيث يمثل k عدد المجموعات المقارنة المستقلة.

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

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

2.2 المعادلة الرياضية وطريقة حساب إحصائية الاختبار (W)

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

تُحسب إحصائية ليفين، والتي يُرمز لها عادة بالرمز W أو F، وفق المعادلة الرياضية لنسبة تحليل التباين الكلاسيكية المطبقة على الانحرافات المطلقة:

W = [ (N – k) / (k – 1) ] * [ Sum_i(N_i * (Z_i. – Z_..)^2) / Sum_i(Sum_j((Z_ij – Z_i.)^2)) ]

حيث تُمثل الرموز ما يلي:

  • k: عدد المجموعات الإجمالي في التصميم التجريبي.
  • N: الحجم الكلي للعينة عبر جميع المجموعات (مجموع أحجام العينات الفرعية).
  • N_i: حجم العينة في المجموعة رقم i.
  • Z_ij: الانحراف المطلق للمشاهدة رقم j في المجموعة رقم i، ويُحسب بطرح مقياس النزعة المركزية للمجموعة (المتوسط الحسابي في صيغة ليفين الأصلية) من القيمة الأصلية للمشاهدة، وأخذ القيمة المطلقة للناتج.
  • Z_i.: متوسط الانحرافات المطلقة داخل المجموعة رقم i.
  • Z_..: المتوسط العام لجميع الانحرافات المطلقة عبر العينة الكلية بأكملها.

تتبع إحصائية ليفين المحسوبة W توزيع F الإحصائي بدرجات حرية بين المجموعات تساوي (k – 1) ودرجات حرية داخل المجموعات تساوي (N – k). وبذلك، فإن بسط المعادلة يمثل التباين المفسر بين انحرافات المجموعات، بينما يمثل المقام متوسط مربعات الخطأ الداخلي لتلك الانحرافات.

2.3 قوة الاختبار ومتانته ضد عدم اعتدالية البيانات

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

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

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

3. أهمية اختبار ليفين في البحوث النفسية والسلوكية

3.1 طبيعة البيانات النفسية وتباين استجابات الأفراد

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

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

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

3.2 تطبيقات شائعة في علم النفس التجريبي والعيادي

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

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

كذلك يبرز دور اختبار ليفين في دراسات القياسات التتبعية والسلوكية المتكررة (Longitudinal behavioral tracking) والتصاميم شبه التجريبية في الفصول الدراسية وبيئات العمل؛ حيث يتعين على الباحث تقييم استقرار تباين درجات التحصيل أو الرضا الوظيفي عبر المجموعات المختلفة لضمان عدم تأثر النتائج بتفاعلات سياقية داخلية للمجموعات تقوض صدق المقارنة الاستدلالية.

3.3 عواقب إهمال فحص تجانس التباين في النشر الأكاديمي

إن التغاضي عن فحص تجانس التباين أو الاكتفاء بالافتراض الضمني لتحققه دون اختبار منهجي يُعد خطأً جسيماً يهدد الرصانة الأكاديمية للدراسات المنشورة. يؤدي انتهاك هذا الفرض في ظل تطبيق اختبارات “ت” أو ANOVA الكلاسيكية إلى انحراف القيمة الاحتمالية المحسوبة عن قيمتها الواقعية؛ مما ينتج عنه نشر نتائج قائمة على أخطاء من النوع الأول بنسب تتجاوز كثيراً سقف 5% المقبول علمياً، أو الوقوع في الخطأ من النوع الثاني (Type II Error) بإهدار اكتشافات علمية حقيقية.

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

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

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

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

تُعد لغة بايثون اليوم المنصة البرمجية الأكثر شمولاً وتطوراً لتنفيذ التحليلات الإحصائية وعلوم البيانات المتقدمة بفضل منظومتها الغنية بالمكتبات مفتوحة المصدر المصممة خصيصاً للحوسبة العلمية. لإجراء اختبار ليفين وكافة التحليلات المرتبطة بتجانس التباين، يحتاج الباحث إلى تجهيز بيئة العمل بالاعتماد على أدوات إدارة الحزم مثل pip أو conda لتثبيت الحزم الأساسية التالية: مكتبة SciPy، ومكتبة NumPy، ومكتبة Pandas، بالإضافة إلى مكتبات التمثيل البصري والتحليل المتقدم مثل Matplotlib وSeaborn وPingouin.

يمكن تثبيت المنظومة الكاملة عبر سطر الأوامر باستخدام أداة التثبيت القياسية pip بتمرير الأمر الشامل التالي لتنزيل أحدث الإصدارات المستقرة المتوافقة مع بعضها البعض:

pip install numpy pandas scipy statsmodels seaborn matplotlib pingouin

بعد اكتمال عملية التثبيت بنجاح، يتم استيراد الوحدات البرمجية داخل بيئة التطوير الخاصة بالباحث، مع التركيز على استدعاء الوحدة الفرعية stats من مكتبة SciPy والتي تحتوي على دالة اختبار ليفين الأساسية scipy.stats.levene، واستدعاء Pandas لإدارة هياكل البيانات، وNumPy لإجراء العمليات المصفوفية السريعة:

import numpy as np
import pandas as pd
import scipy.stats as stats
import seaborn as sns
import matplotlib.pyplot as plt
import pingouin as pg

4.2 إدارة البيئات الافتراضية والنسخ الموصى بها

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

يمكن إنشاء بيئة عمل افتراضية وتفعيلها بسهولة عبر استخدام أداة venv المدمجة في بايثون أو من خلال بيئة Anaconda عبر كتابة الأوامر المنظمة التالية في الطرفية:

python -m venv stats_env
source stats_env/bin/activate # في أنظمة Linux و macOS
stats_envScriptsactivate # في بيئة أنظمة Windows

من الناحية المنهجية والتوثيقية، يُفضل استخدام دفاتر جوبيتر (Jupyter Notebooks) أو واجهة JupyterLab كمنصة تفاعلية لتنفيذ الأكواد الإحصائية؛ حيث تتيح هذه البيئات الجمع بين الأكواد البرمجية، والمخرجات الإحصائية الفورية، والرسوم البيانية التوضيحية، والنصوص السردية الأكاديمية المصاغة بأسلوب Markdown، مما يحقق أعلى معايير الشفافية وقابلية التدقيق العلمي المفتوح (Open Science Practices).

5. هياكل البيانات وتجهيز المدخلات في بايثون

5.1 تمثيل البيانات باستخدام قوائم ومصفوفات NumPy

يقبل المحرك البرمجي لدوال الاختبارات الإحصائية في مكتبة SciPy المدخلات الرقمية في صور متعددة، ويأتي في مقدمتها مصفوفات NumPy أحادية الأبعاد والقوائم الرقمية المعيارية (Python Lists). عندما تكون البيانات التجريبية مجمعة بشكل مسبق كمتجهات منفصلة تمثل كل مجموعة تجريبية مستقلة، يمكن تعريفها وتمريرها مباشرة كمتغيرات مصفوفية.

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

group_control = np.array([23.4, 25.1, 22.8, 26.5, 24.0, 23.9, 25.7, 24.8])
group_cbt = np.array([18.2, 29.5, 14.8, 31.2, 22.1, 16.5, 33.0, 19.4])
group_mindfulness = np.array([20.1, 22.3, 21.5, 19.8, 20.9, 21.8, 22.0, 20.5])

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

5.2 إعادة هيكلة البيانات عبر Pandas DataFrames

في معظم التطبيقات البحثية الواقعية، تُخزن البيانات المجمعة من الاستبيانات والتجارب الميدانية في جداول بيانات منظمة داخل كائنات DataFrames من مكتبة Pandas، وتأتي عادة بأحد تنسيقين رئيسيين: التنسيق العريض (Wide Format) أو التنسيق الطويل القياسي (Long/Tidy Format). في التنسيق الطويل، يمثل كل سطر مشاركاً واحداً أو رصدة مفردة، ويحتوي الجدول على عمود يحدد الفئة أو المجموعة التجريبية (المتغير المستقل) وعمود آخر يحتوي على الدرجة أو الاستجابة المقاسة (المتغير التابع).

للتعامل مع التنسيق الطويل واستخراج المجموعات المستقلة لتغذية دالة اختبار ليفين، توفر مكتبة Pandas أدوات تجميع قوية ومباشرة؛ حيث يمكن استخدام الدالة groupby لفصل وتجميع سلاسل القيم الرقمية الخاصة بكل فئة على حدة، واستخراج قائمة بمصفوفات المجموعات باستخدام الفهم القائم على القوائم (List Comprehension):

df = pd.DataFrame({
    'Treatment': ['Control']*8 + ['CBT']*8 + ['Mindfulness']*8,
    'Anxiety_Score': [23.4, 25.1, 22.8, 26.5, 24.0, 23.9, 25.7, 24.8,
                      18.2, 29.5, 14.8, 31.2, 22.1, 16.5, 33.0, 19.4,
                      20.1, 22.3, 21.5, 19.8, 20.9, 21.8, 22.0, 20.5]
})
grouped_samples = [group['Anxiety_Score'].values for name, group in df.groupby('Treatment')]

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

5.3 التعامل مع القيم المفقودة والمتطرفة

تتطلب موثوقية اختبار ليفين معالجة منهجية دقيقة للقيم المفقودة (Missing Values) والبيانات الشاذة والمتطرفة (Outliers) قبل حساب الفروق التباينية؛ فالقيم المفقودة التي تأخذ الصيغة np.nan قد تتسبب في إرجاع نتائج غير معرفة nan من دوال SciPy إذا لم يتم ضبط معاملات التعامل مع المفقودات مسبقاً، ويتم التعامل معها إما بحذف الحالات غير المكتملة عبر dropna() أو باستخدام طرق التعويض الإحصائي المعتمدة كـ Multiple Imputation.

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

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

6. التطبيق العملي لاختبار ليفين باستخدام مكتبة SciPy

6.1 الاستدعاء الأساسي للدالة scipy.stats.levene

تُعد الدالة scipy.stats.levene التطبيق البرمجي المعياري والرسمي لإجراء اختبار ليفين وتعديلاته في لغة بايثون. تتميز هذه الدالة بتصميم برمجي مرن يعتمد على استقبال عدد غير محدود من العينات المستقلة من خلال آلية تمرير الوسائط المتغيرة (*args)، متبوعة بمعاملات اختيارية تتيح التحكم الدقيق في السلوك الرياضي للاختبار.

تأخذ الدالة البنية التركيبية العامة التالية:

scipy.stats.levene(*samples, center='median', proportiontocut=0.05, nan_policy='propagate')

ترجع الدالة كائناً إحصائياً يحمل النتيجة (LeveneResult) ويتكون من خاصيتين أساسيتين:

  • statistic: القيمة الرقمية لإحصائية الاختبار المحسوبة (W أو F).
  • pvalue: القيمة الاحتمالية الدقيقة المقابلة للإحصائية المحسوبة تحت درجات الحرية المعنية.

كما يتيح المعامل nan_policy التحكم في كيفية معالجة القيم المفقودة؛ حيث يأخذ القيم: ‘propagate’ (إرجاع nan في حال وجود مفقودات)، أو ‘raise’ (إطلاق استثناء برمجي لتنبيه المستخدم)، أو ‘omit’ (تجاهل القيم المفقودة وإجراء الاختبار على البيانات المكتملة فقط).

6.2 مثال عملي تطبيقي خطوة بخطوة

لتوضيح التطبيق البرمجي الدقيق، نفترض سيناريو بحثياً في علم النفس العيادي يهدف إلى مقارنة تباين مستويات التوتر بعد تطبيق ثلاثة بروتوكولات علاجية نفسية مختلفة على ثلاث مجموعات من المرضى: مجموعة العلاج المعرفي السلوكي (CBT)، ومجموعة العلاج باليقظة الذهنية (Mindfulness)، ومجموعة قائمة الانتظار الضابطة (Control).

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

import numpy as np
import scipy.stats as stats

# 1. إدخال بيانات المجموعات التجريبية الثلاث
cbt_group = np.array([14, 15, 18, 20, 22, 25, 12, 19, 21, 16])
mindfulness_group = np.array([19, 20, 21, 18, 22, 20, 19, 21, 20, 18])
control_group = np.array([22, 28, 15, 33, 12, 35, 18, 30, 25, 14])

# 2. تنفيذ اختبار ليفين التقليدي المعتمد على المتوسط الحسابي
stat_levene, p_val_levene = stats.levene(cbt_group, mindfulness_group, control_group, center='mean')

# 3. عرض النتائج بتنسيق أكاديمي منظم
print("=== نتائج اختبار ليفين لتجانس التباين ===")
print(f"قيمة إحصائية ليفين (W): {stat_levene:.4f}")
print(f"القيمة الاحتمالية (p-value): {p_val_levene:.4e}")

# 4. اتخاذ القرار الإحصائي التلقائي
alpha = 0.05
if p_val_levene > alpha:
    print("القرار: فشل في رفض الفرضية الصفرية؛ فرضية تجانس التباين متحققة.")
else:
    print("القرار: رفض الفرضية الصفرية؛ التباينات غير متجانسة بين المجموعات بشكل دال إحصائياً.")

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

6.3 أتمتة الاختبار عبر مجموعات متعددة

في قواعد البيانات الضخمة التي تحتوي على مئات المتغيرات والمقاييس النفسية المقارنة عبر عدة عوامل تصنيفية، يصبح استدعاء الدوال يدوياً لكل متغير عملية غير عملية وعرضة للأخطاء البشرية. يمكن للباحث بناء دوال برمجية مخصصة تستخدم تقنية تفكيك الوسائط التلقائي (* unpacking) عبر كائنات Pandas DataFrames لأتمتة فحص التجانس لجميع المتغيرات التابعة بضغطة زر واحدة.

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

def automated_levene_screening(data, group_col, numeric_cols, center_metric='median'):
    results = []
    for col in numeric_cols:
        samples = [group[col].dropna().values for _, group in data.groupby(group_col)]
        stat, p_val = stats.levene(*samples, center=center_metric)
        results.append({
            'Variable': col,
            'Levene_Statistic': round(stat, 4),
            'p_value': round(p_val, 5),
            'Equal_Variance_Assumed': p_val > 0.05
        })
    return pd.DataFrame(results)

# مثال على الاستخدام:
# summary_table = automated_levene_screening(df_psych, 'Intervention_Type', ['Anxiety', 'Depression', 'Stress'])

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

7. استكشاف معاملات دالة ليفين وخيارات النزعة المركزية

7.1 المعامل center وتأثيره على نموذج ليفين

يُمثل المعامل center في دالة scipy.stats.levene النواة المنهجية التي تحدد الطريقة الإحصائية المستخدمة لحساب الانحرافات المطلقة. على الرغم من أن ليفين اقترح في ورقته الأصلية عام 1960 استخدام المتوسط الحسابي (Mean) كمعيار للنزعة المركزية (center=’mean’)، إلا أن الأبحاث الإحصائية اللاحقة كشفت أن هذا الخيار يفقد متانته عندما تبتعد البيانات عن التوزيع الطبيعي المتماثل.

في عام 1974، قدم العالمان مورتون براون (Morton Brown) وآلان فورسايث (Alan Forsythe) تعديلاً جوهرياً لاختبار ليفين اقترحا فيه استخدام وسيط المجموعة (Median) أو المتوسط المشذب (Trimmed Mean) بدلاً من المتوسط الحسابي البسيط. أثبتت الدراسات التجريبية المحاكية أن تعديل براون-فورسايث يوفر حماية فائقة ضد التضخم في الخطأ من النوع الأول عند التعامل مع التوزيعات الملتوية أو ذات الذيول الثقيلة.

توفر مكتبة SciPy ثلاثة خيارات رئيسية لمعامل center:

  • ‘median’: وهو الخيار الافتراضي في SciPy، ويطبق عملياً اختبار براون-فورسايث الموصى به لمعظم البيانات الملتوية غير المتماثلة.
  • ‘mean’: يطبق صيغة ليفين الأصلية، ويُنصح باستخدامه حصرياً عندما تكون البيانات متماثلة وموزعة توزيعاً طبيعياً معتدلاً.
  • ‘trimmed’: يطبق اختبار ليفين المعدل باستخدام المتوسط المشذب، وهو الخيار الأمثل عند التعامل مع توزيعات تتبع ذيولاً ثقيلة مثل توزيع كوشي أو توزيعات t ذات درجات الحرية المنخفضة.

7.2 استخدام الوسيط (center=’median’) للبيانات الملتوية

يُعد اختيار الوسيط (center=’median’) المعيار الذهبي الإحصائي في تحليل البيانات السلوكية والنفسية الواقعية؛ نظراً لأن الاستجابات النفسية كثيراً ما تتميز بالالتواء الإيجابي أو السلبي الناتج عن حدود السقف والقاع (Ceiling and Floor Effects) في مقاييس القياس النفسي.

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

لتطبيق اختبار براون-فورسايث في بايثون بدقة، يكفي ضبط المعامل البرمجي أو تركه على القيمة الافتراضية كما يلي:

# تنفيذ اختبار براون-فورسايث عبر وسيط المجموعات
bf_stat, bf_pvalue = stats.levene(sample_a, sample_b, sample_c, center='median')

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

7.3 استخدام المتوسط المشذب (center=’trimmed’) للذيول الثقيلة

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

تتيح مكتبة SciPy ضبط نسبة التشذيب عبر المعامل الإضافي proportiontocut، والذي يحدد النسبة المقتطعة من كل طرف من طرفي العينة (القيمة الافتراضية هي 0.05، أي اقتطاع 5% من القيم الصغرى و5% من القيم العظمى بإجمالي 10% من البيانات المحذوفة في حساب المقياس المركزي):

# تنفيذ اختبار ليفين باستخدام المتوسط المشذب بنسبة 10% من كل طرف
trimmed_stat, trimmed_pvalue = stats.levene(sample_a, sample_b, sample_c, center='trimmed', proportiontocut=0.10)

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

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

8.1 تفسير القيمة الاحتمالية (p-value)

يتطلب اتخاذ القرار الاستدلالي السليم بناءً على مخرجات دالة اختبار ليفين فهماً إحصائياً واضحاً لمعنى القيمة الاحتمالية (p-value). تعبر القيمة الاحتمالية عن احتمالية الحصول على إحصائية اختبار W مساوية أو أكثر تطرفاً من القيمة المحسوبة بالفعل من العينة، بافتراض أن الفرضية الصفرية القائلة بتساوي تباينات المجتمعات صحيحة تماماً.

تتفرع قرارات التحليل وفق قاعدتين استدلاليتين رئيسيتين:

  • الحالة الأولى (p > 0.05): عندما تكون القيمة الاحتمالية أكبر من مستوى ألفا الاسمي المختار، يفشل الباحث في رفض الفرضية الصفرية. ويُفسر ذلك إحصائياً بأنه لا يوجد دليل تجريبي كافٍ يشير إلى اختلاف التباينات بين المجموعات؛ وبالتالي يُعتبر فرض تجانس التباين مستوفياً، ويحق للباحث المضي قدماً في تطبيق النماذج المعلمية القياسية مثل تحليل التباين الكلاسيكي (ANOVA) أو اختبار “ت” للعينات المستقلة المجمع.
  • الحالة الثانية (p ≤ 0.05): عندما تكون القيمة الاحتمالية أصغر من أو تساوي مستوى الدلالة، تُرفض الفرضية الصفرية وتُقبل الفرضية البديلة. يُشير هذا القرار إلى وجود تفاوت دال إحصائياً في تباين مجموعة واحدة على الأقل؛ مما يستوجب التوقف عن استخدام الاختبارات المعلمية القياسية والتحول الفوري نحو البدائل الإحصائية المصححة لعدم التجانس.

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

8.2 صياغة التقرير الإحصائي بأسلوب الجمعية الأمريكية لعلم النفس (APA)

تفرض المعايير الصارمة لتوثيق النتائج الإحصائية في الإصدار السابع من دليل النشر التابع لجمعية علم النفس الأمريكية (APA 7th Edition) توثيقاً دقيقاً لنتائج الفحوصات الاستدلالية القبلية. يجب أن يتضمن تقرير اختبار ليفين رمز الإحصائي المستخدم (F أو W)، ودرجات الحرية بين المجموعات وداخل المجموعات بين قوسين، والقيمة الرقمية المحسوبة للإحصائي مقربة لرقمين أو ثلاثة أرقام عشرية، متبوعة بالقيمة الاحتمالية الدقيقة p-value.

فيما يلي نماذج توثيقية نصية معتمدة للحالتين المنهجيتين:

نموذج (1): في حال تحقق فرض تجانس التباين:
“أظهر اختبار ليفين لتجانس التباين استيفاء فرض تساوي التباينات عبر المجموعات العلاجية الثلاث بشكل مُرضٍ، F(2, 87) = 1.14, p = .324. وبناءً عليه، تم تطبيق تحليل التباين الأحادي القياسي (One-Way ANOVA) لاختبار الفروق بين المتوسطات.”

نموذج (2): في حال انتهاك فرض تجانس التباين:
“أشارت نتائج اختبار براون-فورسايث (ليفين المعتمد على الوسيط) إلى انتهاك واضح لفرضية تجانس التباين عبر الشروط التجريبية، F(3, 116) = 6.82, p < .001. واستجابة لعدم تجانس التشتت، تم استبدال تحليل التباين الكلاسيكي باختبار ويلش المعدل لتحليل التباين (Welch’s ANOVA) لحساب دلالة الفروق بين المتوسطات.”

يُفضل دائماً وضع هذه التقارير ضمن فقرة “التحليلات الأولية” (Preliminary Analyses) في قسم النتائج بالورقة البحثية لتوفير الشفافية المنهجية الكاملة للقارئ والمحكم الأكاديمي.

8.3 التمثيل البصري للتباينات لتأكيد نتائج ليفين

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

يوضح الكود التالي كيفية توليد رسم بياني احترافي يجمع بين المخطط الصندوقي ونقاط البيانات الفردية (Strip Plot) لإبراز التباين داخل المجموعات بشكل جلي:

import seaborn as sns
import matplotlib.pyplot as plt

# ضبط النمط الجمالي الأكاديمي للرسم
sns.set_theme(style="whitegrid", palette="muted")
plt.figure(figsize=(9, 6))

# رسم المخطط الصندوقي لعرض المدى الربيعي والوسيط
ax = sns.boxplot(x='Treatment', y='Anxiety_Score', data=df, boxprops=dict(alpha=0.7), showmeans=True)

# إضافة نقاط التوزيع الفردية فوق الصناديق لتوضيح الكثافة
sns.stripplot(x='Treatment', y='Anxiety_Score', data=df, size=6, color='black', alpha=0.6, jitter=0.2)

# تخصيص العناوين والمحاور
plt.title("توزيع تشتت درجات القلق عبر المجموعات العلاجية (فحص التجانس البصري)", fontsize=14, pad=15)
plt.xlabel("المجموعة التجريبية", fontsize=12)
plt.ylabel("درجة القلق المقاسة", fontsize=12)
plt.tight_layout()
plt.show()

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

9. التعامل مع انتهاك فرضية تجانس التباين

9.1 البدائل البارامترية المصححة (Welch’s ANOVA و Welch’s t-test)

عندما تُظهر نتائج اختبار ليفين رفضاً قاطعاً للفرضية الصفرية (p ≤ 0.05)، فإن الإجراء المنهجي الأول والأنسب في النماذج المعلمية ليس التخلي عن دراسة المتوسطات، بل التحول المباشر إلى البدائل المعلمية المعدلة التي لا تفترض تساوي التباينات؛ ويأتي في صدارتها اختبار ويلش لتحليل التباين (Welch’s ANOVA) واختبار “ت” لويلش (Welch’s t-test).

يتميز اختبار ويلش بتعديل المقام الحسابي لنسبة F وتعديل درجات الحرية الفعلية بناءً على الأوزان التباينية النسبية لكل مجموعة، مما يجعله يحافظ بدقة استثنائية على معدل الخطأ من النوع الأول حتى في وجود تباينات شديدة التفاوت وأحجام عينات غير متكافئة. لتنفيذ اختبار “ت” لويلش في مكتبة SciPy، يتم ببساطة تمرير المعامل equal_var=False إلى الدالة scipy.stats.ttest_ind:

# تنفيذ اختبار ت لويلش للعينات غير المتجانسة التباين
welch_t_stat, welch_p_val = stats.ttest_ind(group_a, group_b, equal_var=False)

أما لإجراء تحليل التباين لويلش للمجموعات المتعددة، توفر مكتبة Pingouin الإحصائية المتطورة دالة مدمجة فائقة السهولة والدقة تُرجع النتائج بجدول أكاديمي متكامل:

import pingouin as pg
# تنفيذ Welch's ANOVA مباشرة عبر Pingouin
welch_anova_results = pg.welch_anova(dv='Anxiety_Score', between='Treatment', data=df)
print(welch_anova_results)

أصبح استخدام Welch’s ANOVA الخيار الموصى به عالمياً من قبل كبار الإحصائيين المعاصرين كبديل افتراضي حتى دون الحاجة للتحقق المسبق من التجانس نظراً لمتانته الرياضية الشاملة.

9.2 التحويلات الرياضية للبيانات (Data Transformations)

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

تشمل التحويلات الأكثر شيوعاً ما يلي:

  • التحويل اللوغاريتمي (Log Transformation): يتم بتطبيق اللوغاريتم الطبيعي np.log(y) أو np.log1p(y)، وهو ممتاز للبيانات ذات الالتواء الموجب الشديد والتباينات التي تتزايد طردياً مع المتوسط.
  • تحويل الجذر التربيعي (Square Root Transformation): يتم بحساب np.sqrt(y)، ويُستخدم تقليدياً مع بيانات العد والتكرارات التي تتبع توزيع بواسون.
  • تحويل بوكس-كوكس (Box-Cox Transformation): وهو تحويل أُسي استمثالي يبحث خوارزمياً عن المعامل الأفضل (Lambda) لتحويل البيانات نحو الاعتدالية واستقرار التباين، والمتوفر في SciPy عبر scipy.stats.boxcox.

يوضح الكود التالي كيفية تطبيق تحويل بوكس-كوكس وإعادة تطبيق اختبار ليفين للتأكد من نجاح التحويل في استعادة التجانس:

# تطبيق تحويل بوكس-كوكس على المتغير التابع الإيجابي
transformed_scores, best_lambda = stats.boxcox(df['Anxiety_Score'])
df['Transformed_Score'] = transformed_scores

# إعادة فحص التجانس للبيانات المحولة عبر المجموعات
trans_samples = [group['Transformed_Score'].values for _, group in df.groupby('Treatment')]
stat_after, p_val_after = stats.levene(*trans_samples, center='median')
print(f"قيمة p لاختبار ليفين بعد التحويل: {p_val_after:.4f}")

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

9.3 الانتقال إلى الاختبارات اللامعلمية والأساليب الحديثة

عندما يفشل الباحث في تحقيق تجانس التباين عبر التحويلات، أو عندما تكون طبيعة المقاييس السيكومترية ترتيبية رتبية (Ordinal) لا ترقى لمستوى القياس الفتري، يصبح الانتقال إلى الاختبارات اللامعلمية (Non-parametric Tests) هو الخيار الإحصائي السليم. يُعد اختبار كروسكال-واليس (Kruskal-Wallis H-test) البديل اللامعلمي المباشر لتحليل التباين الأحادي لمقارنة وسائط وتوزيعات المجموعات المستقلة دون افتراض تساوي التباين أو اعتدالية التوزيع.

يمكن تنفيذ اختبار كروسكال-واليس بسهولة عبر الدالة scipy.stats.kruskal كالتالي:

# تنفيذ اختبار كروسكال-واليس اللامعلمي
kw_stat, kw_pvalue = stats.kruskal(group_control, group_cbt, group_mindfulness)

بالإضافة إلى الاختبارات اللامعلمية التقليدية، توفر بايثون أدوات متقدمة لتطبيق أساليب إعادة التشكيل وإعادة العينات (Bootstrapping) لحساب فترات الثقة للمتوسطات وفروقها بصورة مباشرة وتكرارية دون بناء أي فروض حول شكل التوزيع وتجانس التباين عبر الدالة scipy.stats.bootstrap.

كما تتيح النماذج الخطية المعممة (Generalized Linear Models – GLM) ونماذج التباين غير المتجانس الصريح المتوفرة في حزمة Statsmodels نمذجة التباين كدالة صريحة ترتبط بالمتغيرات التفسيرية، مما يحول عدم التجانس من مشكلة إحصائية معرقلة إلى ظاهرة تفسيرية قابلة للفهم والاستنتاج العلمي المعمق.

10. مقارنة اختبار ليفين باختبارات التجانس الأخرى في بايثون

10.1 اختبار بارتليت (Bartlett’s Test)

يُعد اختبار بارتليت أحد أقدم الاختبارات الاستدلالية المخصصة لتقييم تجانس التباين، ويعتمد في بنيته الرياضية على افتراض صارم وحاسم بأن جميع المجموعات المدروسة تتبع توزيعات طبيعية اعتدالية نقية. يتم تنفيذ اختبار بارتليت في بايثون عبر الدالة scipy.stats.bartlett(*samples).

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

10.2 اختبار فليجنر-كيلين (Fligner-Killeen Test)

يُعتبر اختبار فليجنر-كيلين (Fligner-Killeen Test) اختباراً لامعلمياً بالكامل لتقييم تجانس التباين يعتمد على رتب البيانات المحولة وفق درجات معيارية معينة. يتوفر هذا الاختبار في بايثون عبر الدالة scipy.stats.fligner(*samples, center='median').

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

10.3 دليل اتخاذ القرار لاختيار اختبار التجانس المناسب

لتسهيل عملية اتخاذ القرار المنهجي للباحثين والمحللين الإحصائيين، يوضح الجدول المقارن التالي الفروق الجوهرية والخصائص المعيارية لكل اختبار من اختبارات التجانس المتاحة في منظومة بايثون الإحصائية:

الاختبار الإحصائي الدالة في بايثون الافتراض التوزيعي المتانة ضد الالتواء المتانة ضد القيم الشاذة الاستخدام الموصى به
اختبار بارتليت (Bartlett) scipy.stats.bartlett توزيع طبيعي صارم جداً ضعيفة للغاية (حساس جداً) ضعيفة جداً البيانات الموزعة طبيعياً بشكل مؤكد فقط
ليفين التقليدي (Levene – Mean) scipy.stats.levene(center='mean') توزيع متماثل قريب من الطبيعي متوسطة متوسطة البيانات المتماثلة مع غياب القيم المتطرفة
براون-فورسايث (Levene – Median) scipy.stats.levene(center='median') لا يشترط التوزيع الطبيعي عالية جداً (ممتازة) عالية ومقاومة الخيار الافتراضي الأمثل للبيانات السلوكية والنفسية
ليفين المشذب (Levene – Trimmed) scipy.stats.levene(center='trimmed') توزيعات ذات ذيول ثقيلة عالية عالية جداً للذيول البعيدة بيانات زمن الرجع والبيانات ذات التفلطح الحاد
فليجنر-كيلين (Fligner-Killeen) scipy.stats.fligner لا معلمي بالكامل (رتب) فائقة المتانة فائقة ضد الشذوذ الحاد البيانات شديدة التلوث بالقيم الشاذة والعينات الصغيرة

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

11. حالات دراسية تطبيقية وسيناريوهات برمجية متقدمة

11.1 دراسة حالة: قياس فاعلية ثلاثة برامج تدريب نفسي

نستعرض في هذه الحالة الدراسية الكاملة تجربة ميدانية شملت 90 مشاركاً تم توزيعهم عشوائياً على ثلاثة برامج تدريبية لتعزيز المرونة النفسية (Psychological Resilience): برنامج العلاج بالقبول والالتزام (ACT)، وبرنامج الحد من التوتر القائم على اليقظة (MBSR)، ومجموعة التثقيف النفسي التقليدي (Psychoeducation). الهدف هو فحص تجانس التباين بدقة قبل تقرير مسار تحليل الفروق في درجات المرونة النفسية بعد التدريب.

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

import numpy as np
import pandas as pd
import scipy.stats as stats

# ضبط البذرة العشوائية لتكرار النتائج بدقة
np.random.seed(42)

# توليد درجات المرونة النفسية للمجموعات الثلاث (مع تباينات متفاوتة مقصودة)
act_scores = np.random.normal(loc=78, scale=6.5, size=30)
mbsr_scores = np.random.normal(loc=75, scale=12.0, size=30) # تشتت وتباين مضاعف
psychoed_scores = np.random.normal(loc=68, scale=7.0, size=30)

# 1. فحص اعتدالية المجموعات باستخدام اختبار شابيرو-ويلك (Shapiro-Wilk)
norm_act = stats.shapiro(act_scores).pvalue
norm_mbsr = stats.shapiro(mbsr_scores).pvalue
norm_psy = stats.shapiro(psychoed_scores).pvalue
print(f"قيم p لاعتدالية المجموعات: ACT={norm_act:.3f}, MBSR={norm_mbsr:.3f}, PsyEd={norm_psy:.3f}")

# 2. إجراء اختبار براون-فورسايث (ليفين بالوسيط)
lev_stat, lev_p = stats.levene(act_scores, mbsr_scores, psychoed_scores, center='median')
print(f"nنتائج اختبار براون-فورسايث: W = {lev_stat:.3f}, p-value = {lev_p:.5f}")

# 3. توجيه المسار التحليلي بناءً على النتائج
if lev_p < 0.05:
    print("nالتوجيه المنهجي: تم انتهاك فرض تجانس التباين؛ الانتقال لتطبيق Welch's ANOVA.")
    df_study = pd.DataFrame({
        'Score': np.concatenate([act_scores, mbsr_scores, psychoed_scores]),
        'Group': ['ACT']*30 + ['MBSR']*30 + ['Psychoeducation']*30
    })
    import pingouin as pg
    print(pg.welch_anova(dv='Score', between='Group', data=df_study))
else:
    print("nالتوجيه المنهجي: فرض التجانس مستوفى؛ المضي قدماً في تطبيق One-Way ANOVA القياسي.")
    print(stats.f_oneway(act_scores, mbsr_scores, psychoed_scores))

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

11.2 إجراء اختبار ليفين في التصاميم العاملية (Factorial Designs)

في التصاميم التجريبية العاملية المتقدمة مثل تحليل التباين ثنائي الاتجاه (Two-Way ANOVA 2×2 أو 3×2)، لا يقتصر فرض تجانس التباين على مستويات كل متغير مستقل على حدة، بل يمتد ليشترط تجانس التباين عبر جميع “الخلايا التجريبية المشتركة” (Treatment Cells) الناتجة عن التفاعل بين المتغيرات المستقلة.

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

# إنشاء بيانات تصميم عاملي (نوع العلاج X الجنس)
np.random.seed(101)
df_factorial = pd.DataFrame({
    'Therapy': np.random.choice(['CBT', 'Psychodynamic'], size=120),
    'Gender': np.random.choice(['Male', 'Female'], size=120),
    'Wellbeing': np.random.normal(loc=50, scale=10, size=120)
})

# إنشاء عمود الخلية المشتركة
df_factorial['Cell'] = df_factorial['Therapy'] + "_" + df_factorial['Gender']

# استخراج مصفوفات الخلايا المشتركة الأربع
cell_samples = [group['Wellbeing'].values for _, group in df_factorial.groupby('Cell')]

# تطبيق اختبار ليفين عبر الخلايا التفاعلية
fact_stat, fact_p = stats.levene(*cell_samples, center='median')
print(f"اختبار ليفين للتصميم العاملي: W = {fact_stat:.3f}, p = {fact_p:.4f}")

إذا أظهر الاختبار عدم تجانس عبر الخلايا، فإن ذلك يشير إلى أن التباين يتأثر بتفاعل المتغيرين المستقلين معاً، مما يستلزم استخدام نماذج خطية عامة مصححة للتغاير أو تطبيق مصفوفات الخطأ المعياري المقاوم للتباين غير المتجانس (Heteroscedasticity-Consistent Standard Errors – HC3).

11.3 بناء دالة شاملة للتحقق التلقائي من الافتراضات

يمثل بناء خطوط التحليل المؤتمتة (Automated Statistical Pipelines) قمة الكفاءة البرمجية للمحلل الإحصائي؛ حيث تدمج الدالة الشاملة فحص الاعتدالية وفحص التجانس وتقديم تقرير نصي وقرار منهجي فوري. يوضح الكود المتقدم التالي بناء دالة متكاملة تفحص كافة الافتراضات وتوجه الباحث بذكاء نحو الاختبار المناسب:

def comprehensive_assumption_pipeline(dataframe, group_var, value_var):
    groups = dataframe[group_var].unique()
    samples = [dataframe[dataframe[group_var] == g][value_var].dropna().values for g in groups]
    
    # 1. فحص التوزيع الطبيعي لكل مجموعة
    normality_passed = True
    norm_details = {}
    for g, s in zip(groups, samples):
        if len(s) >= 3:
            p_norm = stats.shapiro(s).pvalue
            norm_details[g] = p_norm
            if p_norm <= 0.05:
                normality_passed = False
    
    # 2. اختيار مقياس ليفين بناءً على الاعتدالية
    center_used = 'mean' if normality_passed else 'median'
    lev_stat, lev_pval = stats.levene(*samples, center=center_used)
    homoscedasticity_passed = lev_pval > 0.05
    
    # 3. التوصية بالمسار التحليلي الأنسب
    if normality_passed and homoscedasticity_passed:
        recommendation = "استخدام تحليل التباين الكلاسيكي القياسي (Standard One-Way ANOVA)."
    elif normality_passed and not homoscedasticity_passed:
        recommendation = "استخدام تحليل التباين لويلش (Welch's ANOVA) لعدم تجانس التباين."
    else:
        recommendation = "استخدام اختبار كروسكال-واليس اللامعلمي (Kruskal-Wallis) أو التحويلات غير الخطية."
    
    return {
        'Normality_All_Groups_Passed': normality_passed,
        'Normality_p_values': norm_details,
        'Levene_Center_Metric': center_used,
        'Levene_Statistic': round(lev_stat, 4),
        'Levene_p_value': round(lev_pval, 5),
        'Homoscedasticity_Passed': homoscedasticity_passed,
        'Recommended_Analysis': recommendation
    }

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

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

12.1 أخطاء برمجية شائعة في بايثون وكيفية حلها

أثناء التطبيق العملي لاختبار ليفين في بيئة بايثون، يواجه المحللون عدداً من الأخطاء البرمجية المتكررة الناتجة عن عدم توافق بنية البيانات المدخلة؛ ومن أبرزها خطأ تمرير مصفوفات ثنائية الأبعاد بدلاً من المتجهات الأحادية، أو تمرير مصفوفة مدمجة واحدة دون تفكيك وسائط المجموعات عبر رمز النجمة (*)، مما يولد استثناءات برمجية مثل ValueError: All input arrays must have the same number of dimensions.

كذلك تبرز مشكلة شائعة عند وجود قيم نصية أو قيم مفقودة np.nan داخل السلاسل الممرضة للدالة، مما ينتج عنه مخرجات تأخذ القيمة nan لكل من الإحصائي والقيمة الاحتمالية دون إظهار رسالة خطأ واضحة. يتم معالجة ذلك بضبط المعامل nan_policy='omit' أو تنظيف السلاسل مسبقاً باستخدام الدالة dropna().

كما يجب الحذر من تمرير متغيرات تحتوي على نصوص بدلاً من الأرقام (مثل أرقام تم استيرادها كنصوص ‘23.4’)؛ ويتم التغلب على هذا الخطأ عبر التحويل الصريح للأنواع الرقمية باستخدام pd.to_numeric() قبل استدعاء الاختبار لضمان سلاسة الحساب الرياضي.

12.2 محاذير إحصائية ومنهجية عند تطبيق الاختبار

إلى جانب الأخطاء التقنية، هناك محاذير إحصائية جوهرية يجب على الباحث إدراكها؛ يأتي في مقدمتها ما يُعرف بـ “معضلة العينات الضخمة” (Large Sample Size Paradox). فعندما يكون حجم العينة الإجمالي كبيراً جداً (مثلاً آلاف المشاركين)، تصبح القوة الإحصائية لاختبار ليفين مفرطة وحساسة لأدنى تفاوت تافه رياضياً في التباينات لا يمثل أي أهمية عملية أو تأثير حقيقي على أداء نموذج ANOVA، مما يؤدي إلى رفض تجانس التباين زيفاً.

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

لذلك، تشدد التوصيات المنهجية الحديثة على عدم اتخاذ القرارات التحليلية بناءً على القيمة الاحتمالية لاختبار ليفين بمعزل عن التقييم الوصفي والبصري؛ حيث يجب دائماً حساب نسبة التباين الأكبر إلى التباين الأصغر (Variance Ratio: Max Var / Min Var)، فإذا كانت النسبة أقل من 1.5 إلى 2 في ظل عينات متساوية الأحجام، فإن تحليل التباين الكلاسيكي يظل متماسكاً حتى لو كانت قيمة ليفين ذات دلالة إحصائية طفيفة.

12.3 خلاصة الدليل ومراجع إضافية للتوسع

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

تلخص النقاط التالية أهم الإرشادات التنفيذية للمحلل الإحصائي:

  • الاعتماد الافتراضي على اختبار براون-فورسايث (center='median') في كافة البيانات النفسية والسلوكية الملتوية.
  • استخدام المتوسط المشذب (center='trimmed') كخيار أول عند التعامل مع بيانات أزمنة الرجع والتوزيعات ذات الذيول الثقيلة.
  • التحول الفوري لتطبيق تحليل التباين لويلش (Welch’s ANOVA) عبر Pingouin كبديل معلمي قوي فور ثبوت عدم تجانس التباين.
  • الدمج المستمر بين المخرجات الرقمية لاختبار ليفين والمخططات البصرية التوضيحية لضمان قراءة سياقية عميقة للتشتت.
  • التوثيق الأكاديمي الشفاف للنتائج وفق معايير APA لتعزيز مصداقية البحث وقابليته للتكرار والتحقق العلمي.

خاتمة

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

References

  • American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). American Psychological Association. https://doi.org/10.1037/0000165-000
  • Brown, M. B., & Forsythe, A. B. (1974). Robust tests for the equality of variances. Journal of the American Statistical Association, 69(346), 364–367. https://doi.org/10.1080/01621459.1974.10482955
  • Field, A. (2018). Discovering statistics using IBM SPSS statistics (5th ed.). SAGE Publications.
  • Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., … & Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357–362. https://doi.org/10.1038/s41586-020-2649-2
  • Levene, H. (1960). Robust tests for equality of variances. In I. Olkin, S. G. Ghurye, W. Hoeffding, W. G. Madow, & H. B. Mann (Eds.), Contributions to probability and statistics: Essays in honor of Harold Hotelling (pp. 278–292). Stanford University Press.
  • McKinney, W. (2010). Data structures for statistical computing in Python. In Proceedings of the 9th Python in Science Conference (Vol. 445, pp. 51–56). https://doi.org/10.25080/Majora-92bf1924-003
  • Vallat, R. (2018). Pingouin: statistics in Python. Journal of Open Source Software, 3(31), 1026. https://doi.org/10.21105/joss.01026
  • Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., … & SciPy 1.0 Contributors. (2020). SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature Methods, 17(3), 261–272. https://doi.org/10.1038/s41592-019-0686-2
  • Waskom, M. L. (2021). Seaborn: statistical data visualization. Journal of Open Source Software, 6(60), 3021. https://doi.org/10.21105/joss.03021
  • Welch, B. L. (1951). On the comparison of several mean values: An alternative approach. Biometrika, 38(3/4), 330–336. https://doi.org/10.2307/2332579

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

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