تُعد معالجة البيانات الفئوية (Categorical Data Analysis) وتحليل العلاقات الارتباطية بين المتغيرات النوعية أحد الأركان الجوهرية التي ترتكز عليها الأبحاث الكمية المعاصرة، لا سيما في مجالات علم النفس، والعلوم الاجتماعية، وعلم الأوبئة، والسلوك التنظيمي، وبحوث التسويق. ففي كثير من السيناريوهات البحثية الواقعية، لا تأتي البيانات في صورة قياسات رقمية متصلة تخضع للتوزيع الطبيعي، بل تتشكل كاستجابات تصنيفية محددة مثل الحالة الاجتماعية، أو النمط السلوكي، أو التشخيص الإكلينيكي، أو التفضيل المهني. وفي مثل هذه البيئات المعقدة، تبرز الحاجة الماسة إلى أدوات إحصائية غير معلمية رصينة قادرة على استكشاف ما إذا كانت هناك علاقة حقيقية ذات دلالة إحصائية تربط بين متغيرين نوعيين أو أن التوزيع الملاحظ ليس سوى نتاج للصدفة العشوائية وتقلبات المعاينة البسيطة.
يمثل اختبار مربع كاي للاستقلالية (Pearson’s Chi-Square Test of Independence)، الذي طوره عالم الإحصاء البريطاني كارل بيرسون في مطلع القرن العشرين، المعيار الذهبي المعتمد عالمياً للإجابة عن هذه التساؤلات. يعتمد الاختبار على منطق رياضي أنيق يقارن بين التكرارات المشاهدة فعلياً في العينة والتكرارات المتوقعة نظرياً في حال انعدام أي ارتباط بين المتغيرين محل الدراسة. ومع الانتقال الرقمي المتسارع وثورة البيانات الضخمة، لم يعد التحليل الإحصائي مقتصراً على الحسابات اليدوية المعقدة أو الحزم البرمجية التقليدية المغلقة، بل أصبح يُدار بكفاءة منقطعة النظير عبر لغات البرمجة مفتوحة المصدر، وعلى رأسها لغة بايثون (Python).
يقدم هذا الدليل الشامل مرجعاً أكاديمياً وتطبيقياً معمقاً لإجراء اختبار مربع كاي للاستقلالية باستخدام منظومة الحوسبة العلمية في بايثون، بالتركيز على مكتبات SciPy وPandas وSeaborn. سنستعرض عبر هذا المقال التأصيل الرياضي الدقيق، والافتراضات المنهجية الصارمة، وآليات التعامل مع انتهاك الشروط، والتحليلات البعدية المتقدمة، وحساب أحجام الأثر، فضلاً عن تقديم دراسة حالة نفسية وسلوكية تطبيقية متكاملة مدعومة بالتصور البصري، وكيفية توثيق النتائج وفق المعايير الأكاديمية الصادرة عن جمعية علم النفس الأمريكية (APA Style 7th Edition).
- 1. مقدمة نظرية لاختبار مربع كاي للاستقلالية
- 2. الفرضيات الإحصائية وشروط تطبيق الاختبار
- 3. إعداد بيئة العمل وتثبيت المكتبات في بايثون
- 4. هيكلة وإدخال البيانات في بايثون
- 5. بناء وفهم جداول التوافق (Contingency Tables)
- 6. تنفيذ اختبار مربع كاي باستخدام مكتبة SciPy
- 7. تفسير وتحليل النتائج الإحصائية الناتجة
- 8. قياس حجم الأثر باستخدام معامل كرامر V ومعامل فاي
- 9. دراسة حالة تطبيقية في علم النفس والسلوك
- 10. التصور البصري لجداول التوافق ونتائج الاختبار
- 11. التعامل مع انتهاك الفروض وحالات البيانات الخاصة
- 12. توثيق النتائج وكتابة التقارير الأكاديمية وفق أسلوب APA
- خاتمة ودليل مرجعي للممارس
- References
1. مقدمة نظرية لاختبار مربع كاي للاستقلالية
1.1 التعريف والمفهوم الإحصائي العام
يُعرَّف اختبار مربع كاي للاستقلالية (Chi-Square Test of Independence) بأنه اختبار إحصائي استدلالي يُستخدم لاختبار الفرضيات المتعلقة بوجود ارتباط أو اعتمادية متبادلة بين متغيرين فئويين (Categorical Variables) مقاسين على مستوى اسمي (Nominal) أو رتبي (Ordinal). يُصنف هذا الاختبار تاريخياً ومنهجياً كأحد أشهر الاختبارات غير المعلمية (Non-parametric Tests)، لكونه لا يشترط خضوع مجتمع الدراسة لتوزيع احتمالي معلمي محدد مثل التوزيع الطبيعي المتصل، ولا يتطلب معلمات مثل المتوسط الحسابي والانحراف المعياري، وإنما يتعامل حصرياً مع التكرارات المنفصلة (Frequencies) والتوزيعات النسبية للأفراد داخل خلايا تقاطع المتغيرات.
يتمحور الهدف الأساسي للاختبار حول فحص ما إذا كانت الأنماط التوزيعية للمتغير الأول تختلف باختلاف مستويات المتغير الثاني، أم أن التوزيعين مستقلان تماماً عن بعضهما البعض. ولتحقيق هذه الغاية، يقوم الاختبار بإجراء موازنة رياضية دقيقة بين التكرارات الملاحظة (Observed Frequencies)، وهي الأعداد الفعلية التي رصدها الباحث تجريبياً في عينة الدراسة، والتكرارات المتوقعة (Expected Frequencies)، وهي الأعداد التي كان يُفترض رياضياً رصدها داخل كل خلية لو كانت فرضية الاستقلال التام صحيحة بنسبة مئة بالمئة في المجتمع الإحصائي الأصلي.
من الضروري أن يميز الباحث الأكاديمي بدقة بين نوعين رئيسيين من اختبارات مربع كاي لبيرسون: اختبار حسن المطابقة (Goodness-of-Fit Test) واختبار الاستقلالية (Independence Test). يُطبق اختبار حسن المطابقة على متغير فئوي واحد فقط لمقارنة تكراراته الملاحظة عبر فئاته المختلفة بنسب مفترضة مسبقاً أو بتوزيع نظري محدد (كتساوي الاحتمالات بين الفئات). في المقابل، يختص اختبار الاستقلالية بدراسة العلاقة التقاطعية بين متغيرين فئويين أو أكثر تم رصدهما بالتزامن لنفس مفردات العينة داخل جدول توافق مزدوج (Contingency Table).
1.2 الخلفية الرياضية والمعادلة الحسابية
ترتكز البنية الرياضية لاختبار مربع كاي للاستقلالية على حساب إحصائية قياسية تعبر عن المقدار التراكمي للانحراف بين الواقع المشاهد والنموذج النظري المستقل. تُصاغ المعادلة الرياضية العامة لمربع كاي على النحو التالي:
$$\chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} – E_{ij})^2}{E_{ij}}$$
حيث يمثل الرمز $O_{ij}$ التكرار الملاحظ الفعلي في الخلية الواقعة عند تقاطع الصف رقم $i$ والعمود رقم $j$، بينما يمثل$E_{ij}$ التكرار المتوقع لنفس الخلية، في حين يشير الرمز $r$ إلى إجمالي عدد الصفوف، والرمز $c$ إلى إجمالي عدد الأعمدة في جدول التوافق. يتم تربيع الفرق $(O_{ij} – E_{ij})^2$ لضمان إلغاء الإشارات السالبة ومنح وزن أكبر للانحرافات الكبيرة، ثم تتم قسمة هذا المربع على التكرار المتوقع نفسه لتوحيد المقاييس النسبية عبر الخلايا ذات الأحجام التكرارية المتباينة.
تعتمد آلية حساب التكرارات المتوقعة $E_{ij}$ لكل خلية في مصفوفة البيانات على نظرية الاحتمالات الكلاسيكية للأحداث المستقلة، والتي تنص على أن احتمال وقوع حدثين مستقلين معاً يساوي حاصل ضرب احتماليهما المنفصلين. استناداً إلى هذه القاعدة، يتم اشتقاق التكرار المتوقع لأي خلية بضرب المجموع الهامشي للصف الخاص بها (Row Total) في المجموع الهامشي للعمود الخاص بها (Column Total)، ثم قسمة الناتج على حجم العينة الإجمالي الكلي ($N$):
$$E_{ij} = \frac{\sum_{k=1}^{c} O_{ik} \times \sum_{k=1}^{r} O_{kj}}{N} = \frac{R_i \times C_j}{N}$$
يرتبط التوزيع النظري لمربع كاي ارتباطاً وثيقاً بعدد درجات الحرية (Degrees of Freedom – $df$) المتاحة في جدول التوافق، والتي تُحسب بالمعادلة التالية: $df = (r – 1) \times (c – 1)$. تعبر درجات الحرية عن عدد الخلايا التكرارية الحرة التي يمكن تحديد قيمها بصورة مستقلة قبل أن تصبح بقية قيم الخلايا محددة جبرياً بحكم ثبات المجاميع الهامشية. يمتلك توزيع مربع كاي دالة كثافة احتمالية ملتوية نحو اليمين إيجابياً عندما تكون درجات الحرية صغيرة، وتتجه تدريجياً لتقترب من التماثل والتقارب مع التوزيع الطبيعي كلما زادت درجات الحرية بدرجة كافية.
1.3 تطبيقات الاختبار في الأبحاث النفسية والاجتماعية
يحظى اختبار مربع كاي للاستقلالية بمكانة محورية في ترسانة المنهجية النفسية والاجتماعية، نظراً لأن أغلب البناءات النظرية والمؤشرات السلوكية يتم رصدها وتصنيفها في فئات نوعية. في مجال علم النفس الإكلينيكي والصحة النفسية، يُوظف الاختبار بصورة شائعة لفحص مدى استقلالية أنماط الاستجابة للعلاجات النفسية (مثل: تحسن كامل، تحسن جزئي، عدم استجابة) عن الأنماط التشخيصية للمرضى (مثل: اضطراب القلق العام، اضطراب الهلع، الرهاب الاجتماعي)، مما يساعد المعالجين على فهم ما إذا كان التدخل العلاجي يظهر فاعلية نوعية ترتبط بالبنية المرضية للمفحوص.
وفي حقل علم النفس الاجتماعي وعلم النفس التنظيمي، يُستخدم الاختبار لدراسة التفاعلات المعقدة بين السمات الشخصية وتفضيلات السلوك المهني والصحي. على سبيل المثال، يمكن دراسة مدى ارتباط الأنماط القيادية (أوتوقراطية، ديمقراطية، تفويضية) ببيئة العمل المؤسسية (حكومية، خاصة، منظمات غير ربحية)، أو تقييم مدى ارتباط مستوى الاحتراق النفسي والمهني (منخفض، متوسط، مرتفع) بقطاعات العمل التخصصية المختلفة وسنوات الخبرة.
علاوة على ذلك، يمثل الاختبار أداة لا غنى عنها في أبحاث الرأي العام والعلوم السلوكية، حيث يساعد الباحثين على التحقق من استقلالية التوجهات السلوكية، أو القرارات التصويتية، أو أنماط استهلاك المحتوى الرقمي، عن الخصائص الديموغرافية الأساسية للمشاركين كالجنس، والمستوى التعليمي، والفئات العمرية. يتيح ذلك للباحثين صياغة استنتاجات دقيقة مبنية على البراهين الإحصائية وتوجيه التدخلات المجتمعية والسياسات العامة بكفاءة وموثوقية عالية.
2. الفرضيات الإحصائية وشروط تطبيق الاختبار
2.1 صياغة الفرضيات الإحصائية (الصفرية والبديلة)
تبدأ المعالجة المنهجية لاختبار مربع كاي للاستقلالية بصياغة واضحة لا لبس فيها للفرضيات الإحصائية المتنافسة التي يسعى الباحث إلى المفاضلة بينها في ضوء البيانات التجريبية المجمعة. تنص الفرضية الصفرية (Null Hypothesis – $H_0$) دائماً على حالة انعدام الأثر أو استقلال المتغيرين؛ أي أنه لا توجد علاقة ارتباطية ذات دلالة إحصائية بين المتغير الفئوي الأول والمتغير الفئوي الثاني في المجتمع الأصلي، وأن التوزيع التكراري الملاحظ لكل متغير لا يتأثر بأي شكل من الأشكال بمستويات المتغير الآخر.
في المقابل، تقرر الفرضية البديلة (Alternative Hypothesis – $H_1$) وجود علاقة ارتباطية ذات دلالة إحصائية بين المتغيرين في المجتمع الإحصائي؛ بمعنى أن المتغيرين غير مستقلين (Dependent)، وأن معرفة الفئة التي ينتمي إليها الفرد في المتغير الأول توفر معلومات احتمالية غير عشوائية عن احتمالية انتمائه لفئات معينة في المتغير الثاني. تجدر الإشارة إلى أن الفرضية البديلة في اختبار مربع كاي هي دائماً فرضية غير اتجاهية بطبيعتها (Non-directional)، لأنها تقرر وجود ارتباط دون تحديد اتجاه خطي أو ترتيب تفضيلي مسبق بين الفئات.
وللفصل بين هاتين الفرضيتين، يحدد الباحث مسبقاً مستوى الدلالة الإحصائية (Significance Level – $\alpha$)، وهو الحد الأقصى لاحتمالية الوقوع في الخطأ من النوع الأول (Type I Error) المتمثل في رفض الفرضية الصفرية رغم صحتها الواقعية. يُحدد مستوى الدلالة تقليدياً في الأبحاث الاجتماعية والنفسية عند القيمة $\alpha = 0.05$، بينما قد يتم تشديده إلى $\alpha = 0.01$ أو $\alpha = 0.001$ في الدراسات الطبية والإكلينيكية الحساسة للحد من فرصة الاستنتاجات الإيجابية الزائفة.
2.2 الافتراضات المنهجية الواجب توفرها في البيانات
لكي تكون نتائج اختبار مربع كاي للاستقلالية صالحة وقابلة للتفسير العلمي الموثوق، يجب أن تستوفي مصفوفة البيانات التجريبية مجموعة صارمة من الافتراضات المنهجية والرياضية التي تحكم طبيعة التوزيع الاحتمالي. يوضح الجدول التالي هذه الافتراضات الجوهرية ومتطلبات التحقق منها:
| الافتراض المنهجي | الوصف والمتطلبات الإحصائية | طريقة التحقق في بايثون |
|---|---|---|
| 1. استقلالية المشاهدات (Independence of Observations) | يجب أن ينتمي كل مشارك أو مفردة إلى خلية واحدة فقط في جدول التوافق، بحيث لا توجد قياسات مكررة لنفس الأفراد عبر الخلايا. | التصميم التجريبي وفحص عدم تكرار المعرفات الفريدة للمشاركين (Subject IDs). |
| 2. طبيعة المتغيرات (Variable Types) | أن يكون كلا المتغيرين مصنفين كمتغيرات نوعية فئوية، سواء كانت اسمية (Nominal) أو ترتيبية (Ordinal). | فحص نوع البيانات في الباندا عبر df.dtypes واستخدام الفئات category أو object. |
| 3. كفاية التكرارات المتوقعة (Expected Cell Frequencies) | يجب ألا يقل التكرار المتوقع في أي خلية عن 1، وألا تقل التكرارات المتوقعة في 80% على الأقل من الخلايا عن 5 (قاعدة كوشران). | فحص مصفوفة expected_frequencies المستخرجة من دالة التحليل. |
| 4. العينات العشوائية البسيطة (Random Sampling) | أن تكون البيانات قد جُمعت عبر عينة عشوائية تمثل المجتمع المستهدف بدقة لتفادي تحيزات الاختيار. | منهجية جمع البيانات والبروتوكول البحثي المتبع. |
يُعد شرط كفاية التكرارات المتوقعة (المعروف بقاعدة كوشران Cochran’s Criterion) من أكثر الشروط عرضة للانتهاك في الأبحاث التطبيقية، لا سيما عند التعامل مع جداول توافق كبيرة تحتوي على فئات متعددة ذات تكرارات نادرة، مما يفرض على الباحث تقييماً دقيقاً ومباشراً لمصفوفة التكرارات المتوقعة الناتجة برمجياً قبل اعتماد الدلالة الإحصائية.
2.3 مخاطر انتهاك الفروض الإحصائية
يترتب على انتهاك أي من الفروض الإحصائية السابقة عواقب وخيمة على الدقة الاستدلالية لاختبار مربع كاي. فعندما تنخفض التكرارات المتوقعة داخل الخلايا عن الحدود الآمنة الموصى بها، يفقد التوزيع التكراري المنفصل قدرته على التقارب نحو توزيع كاي النظري المتصل، مما يؤدي إلى تشوه جسيم في حساب القيمة الاحتمالية ($p$-value)، وغالباً ما ينتج عن ذلك تضخم مفرط في معدلات الخطأ من النوع الأول أو النوع الثاني، مما يفقد الاختبار قوته الإحصائية المعتمدة.
من جهة أخرى، يبرز خطر منهجي مغاير تماماً عند استخدام أحجام عينات هائلة الحجم (Large Sample Size Effect). في مثل هذه الحالات، يصبح اختبار مربع كاي فائق الحساسية لأبسط الفروق الهامشية التي لا تحمل أي مغزى إكلينيكي أو واقعي، فتظهر النتائج بدلالة إحصائية فائقة ($p < 0.0001$) نتيجة التضخم الرياضي لقيمة $\chi^2$ التي تتناسب طردياً مع حجم العينة $N$، حتى وإن كان الارتباط الفعلي تافهاً عملياً. وهنا تتجلى الأهمية القصوى لعدم الاكتفاء بالدلالة الإحصائية وحدها، وضرورة اقترانها بمقاييس دقيقة لحجم الأثر (Effect Size).
أما في حالات انتهاك فرضية استقلالية المشاهدات—كالاستعانة بالبيانات الطولية أو التصاميم القبلية والبعدية حيث يقدم نفس المشارك استجابات متعددة عبر شروط تجريبية مختلفة—فإن تطبيق اختبار كاي للاستقلالية يعد خطأً فادحاً يؤدي إلى تقويض صحة الاستدلال بالكامل، ويتطلب الانتقال إلى اختبارات بديلة مخصصة كاختبار ماكنيمار (McNemar’s Test).
3. إعداد بيئة العمل وتثبيت المكتبات في بايثون
3.1 المكتبات البرمجية الأساسية للحسابات الإحصائية
توفر منظومة بايثون بيئة حوسبية متكاملة تجعل منها المنصة المفضلة للإحصائيين وعلماء البيانات لتحليل البيانات الفئوية. تتصدر مكتبة SciPy المشهد الإحصائي، وتحديداً من خلال وحدتها الفرعية المتقدمة scipy.stats، والتي توفر خوارزميات عالية الكفاءة والدقة الرياضية لتنفيذ اختبارات الفروض وتوليد التوزيعات الاحتمالية المستمرة والمنفصلة واستخراج القيم الاحتمالية الدقيقة.
تتكامل هذه القدرات التحليلية بسلاسة مع مكتبة Pandas، التي تُعد بمثابة العمود الفقري لمعالجة وهيكلة البيانات الجداولية في بايثون. توفر Pandas هياكل بيانات فائقة التطور مثل إطارات البيانات (DataFrames) والسلاسل (Series)، مما يسمح للباحثين باستيراد وتنظيف وترشيح البيانات المجمعة وإعادة تشكيلها عبر دوال المحاور المتقاطعة لتوليد جداول التوافق المعقدة في ثوانٍ معدودة.
وتكتمل هذه المنظومة الحسابية بالاعتماد على مكتبة NumPy، التي تمنح البيئة البرمجية القدرة على إدارة المصفوفات متعددة الأبعاد وإجراء العمليات الحسابية المتجهة (Vectorized Operations) بسرعات فائقة تُحاكي كفاءة لغات البرمجة منخفضة المستوى مثل C وFortran، مما يضمن معالجة المصفوفات التكرارية الضخمة بأعلى كفاءة في استهلاك الذاكرة والمعالج.
3.2 مكتبات التمثيل البياني الداعمة
لا يكتمل التحليل الإحصائي الرصين دون أدوات تمثيل بياني احترافية قادرة على تحويل الأرقام الجافة ومصفوفات البيانات إلى مخرجات بصرية جذابة وسهلة التفسير. تتصدر مكتبة Matplotlib هذه الأدوات باعتبارها الحزمة الأساسية للرسم في بايثون، موفرة تحكماً مطلقاً في كل مكون من مكونات الشكل البياني، بدءاً من المحاور والتسميات وتدرجات الألوان وصولاً إلى ضبط الخطوط والتنسيقات الطباعية بما يلائم متطلبات النشر الأكاديمي الدولي.
علاوة على ذلك، توفر مكتبة Seaborn المبنية فوق Matplotlib طبقة تجريدية عليا مصممة خصيصاً للتمثيل البصري الإحصائي للبيانات. تتميز Seaborn بقدرتها الفائقة على إنشاء الخرائط الحرارية (Heatmaps) لجداول التوافق ومصفوفات البواقي المعيارية، ورسم المخططات الشريطية المجمعة والمقسمة باحترافية عالية تعكس الفروق بين المجموعات التجريبية بوضوح تام وبأقل قدر من التعليمات البرمجية.
لتحقيق أعلى درجات التفاعل والإنتاجية، يُفضل دائماً تشغيل هذه الأدوات داخل بيئات تفاعلية متطورة مثل Jupyter Notebooks أو منصة السحابة التفاعلية Google Colab، حيث تتيح هذه البيئات دمج الكود البرمجي التنفيذي والمخرجات الإحصائية والرسوم البيانية والنصوص التفسيرية في وثيقة علمية تفاعلية واحدة قابلة للمشاركة وإعادة الإنتاج العلمي المفتوح.
3.3 أوامر التثبيت والتحقق من التوافق البرمجي
لإعداد بيئة عمل متكاملة على جهازك المحلي أو على خادم التحليل، يمكن تثبيت الحزمة الكاملة من المكتبات الإحصائية والبيانية عبر استخدام مدير الحزم القياسي الخاص ببايثون (pip) من خلال كتابة وتنفيذ الأمر التالي في سطر الأوامر (Terminal / Command Prompt):
pip install numpy pandas scipy matplotlib seaborn
بعد اكتمال التثبيت بنجاح، يُستحسن كتابة نص برمجي أولي في بايثون لاستيراد الوحدات اللازمة والتحقق من أرقام الإصدارات المثبتة لضمان التوافق البرمجي واستقرار الدوال، لا سيما وأن بعض المعاملات الإحصائية المتقدمة قد يختلف سلوكها أو أسماؤها باختلاف الإصدارات البرمجية. يتم الاستيراد النموذجي وفق الشفرة التالية:
import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import chi2_contingency, chi2
import matplotlib.pyplot as plt
import seaborn as sns
إن التحقق من عمل هذه المكتبات وتوافقها يمثل الخطوة التأسيسية التي تمنع ظهور أي أخطاء وقت التشغيل (Runtime Errors) أثناء معالجة البيانات، ويهيئ الباحث للتركيز على الجوانب المنهجية والتحليلية دون الانشغال بالتعقيدات التقنية للبيئة البرمجية.
4. هيكلة وإدخال البيانات في بايثون
4.1 الإدخال اليدوي المباشر للمصفوفات (Raw Arrays)
في كثير من الحالات البحثية، قد يتوفر لدى الباحث جدول توافق تكراري جاهز ومُلخص مسبقاً من تقارير سابقة أو دراسات منشورة دون الحاجة للتعامل مع السجلات الأولية الخام للأفراد. في هذا السيناريو، تتيح لغة بايثون إمكانية إدخال البيانات مباشرة في صورة مصفوفات تكرارية ثنائية الأبعاد باستخدام مصفوفات NumPy أو القوائم المتداخلة (Nested Lists).
لتمثيل جدول توافق $2 times 3$ يمثل دراسة حول الارتباط بين نوع الجنس (ذكور، إناث) ومستوى ممارسة النشاط الرياضي (منخفض، متوسط، مرتفع)، يمكن صياغة المصفوفة برمجياً كما يلي:
observed_table = np.array([[45, 30, 25],
[20, 40, 40]])
يمثل كل صف في هذه المصفوفة فئة من فئات المتغير الأول، بينما يمثل كل عمود فئة من فئات المتغير الثاني. يتميز هذا الأسلوب بالبساطة والسرعة الفائقة عندما تكون البيانات مجمعة ومحسوبة بالفعل، حيث يمكن تمرير مصفوفة NumPy المباشرة هذه إلى دوال الاختبار الإحصائي دون أي خطوات معالجة إضافية.
4.2 استيراد البيانات غير المجمعة (Raw DataFrames)
في الأبحاث الميدانية والتجريبية الحقيقية، تأتي البيانات غالباً في صيغتها الأولية غير المصنفة (Microdata)، حيث يحتوي ملف البيانات—الذي يكون عادة بصيغة CSV أو Excel أو ملفات برمجيات التحليل الإحصائي مثل SPSS—على صف منفصل لكل مشارك في الدراسة، وتتوزع المتغيرات عبر أعمدة مستقلة تمثل خصائصه واستجاباته.
يتم استيراد هذه الملفات بسهولة إلى بايثون باستخدام دوال القراءة في مكتبة Pandas مثل pd.read_csv('survey_data.csv') أو pd.read_excel('clinical_study.xlsx'). بمجرد تحميل البيانات في إطار بيانات (DataFrame)، يصبح من الضروري فحص بنية البيانات والتأكد من أن الأعمدة المستهدفة محددة بصيغ فئوية مناسبة من خلال استخدام خاصية df.info() واستعراض عينات من المشاهدات عبر df.head().
يتيح التعامل مع البيانات الأولية مرونة منهجية هائلة، حيث يمكن للباحث تصنيف المتغيرات، وفلترة العينات، وإنشاء مجموعات فرعية، وإجراء تحويلات برمجية على الفئات قبل تجميعها النهائي في جداول التوافق المستهدفة للتحليل الإحصائي.
4.3 تنظيف البيانات ومعالجة القيم المفقودة
يعد تنظيف البيانات خطوة حاسمة تسبق أي إجراء إحصائي، حيث يمكن للمدخلات غير المتسقة أو المشاهدات الشاذة أن تشوه جداول التكرارات وتؤدي إلى استنتاجات خاطئة. يتضمن تنظيف المتغيرات الفئوية في بايثون التحقق من خلو النصوص من المسافات الزائدة، وتوحيد حالة الأحرف والتسميات الإملائية، والتحقق من عدم وجود قيم مدخلة خارج النطاق المقبول عبر تطبيق دالة df['variable'].unique() أو df['variable'].value_counts().
أما فيما يتعلق بالقيم المفقودة (Missing Data)، فإن اختبار مربع كاي للاستقلالية يفترض اكتمال بيانات الزوج الملاحظ لكل مشارك. توفر Pandas آليات قوية لاستكشاف القيم المفقودة عبر التعبير df[['var1', 'var2']].isnull().sum(). إذا كان فقدان البيانات عشوائياً تماماً (MCAR) وكانت نسبته ضئيلة، يمكن استبعاد الحالات التي تحتوي على قيم مفقودة في المتغيرين قيد الدراسة باستخدام الأسلوب الحذفي الحكيم:
df_clean = df.dropna(subset=['treatment_group', 'clinical_outcome']).copy()
يضمن هذا الإجراء أن تكون التكرارات المتقاطعة المحسوبة لاحقاً دقيقة تماماً وممثلة لعينة الدراسة المستقرة دون إدخال تحيزات ناتجة عن معالجات غير دقيقة للبيانات الناقصة.
5. بناء وفهم جداول التوافق (Contingency Tables)
5.1 إنشاء جدول التوافق باستخدام دالة pandas.crosstab
يمثل جدول التوافق (المعروف أيضاً بجدول التقاطع المزدوج Cross-tabulation) البنية الأساسية التي يقوم عليها اختبار مربع كاي للاستقلالية. توفر مكتبة Pandas دالة متخصصة وفائقة المرونة تُدعى pd.crosstab() لتوليد هذه الجداول مباشرة من إطارات البيانات الأولية بطريقة مقروءة ومرتبة.
تأخذ الدالة المتغيرين الفئويين كمدخلات رئيسية، وتقوم بفرز البيانات وحساب التكرارات المشتركة لكل زوج من الفئات. ولإضافة المجاميع الهامشية للصفوف والأعمدة بصورة تلقائية، يتم استخدام المعامل margins=True مع تخصيص تسمية المجموع عبر margins_name='Total' كما في المثال التوضيحي التالي:
contingency_table = pd.crosstab(index=df_clean['diagnosis'],
columns=df_clean['treatment_response'],
margins=True,
margins_name='Total')
يسمح هذا التمثيل للباحث برؤية التوزيع الشامل للمشاركين بوضوح، حيث تعبر الخلايا الداخلية عن التكرارات المشتركة ($O_{ij}$)، بينما تعبر خلايا الحواف عن التكرارات الهامشية الإجمالية ($R_i$ و $C_j$) لكل فئة، وهو ما يشكل الأساس الحسابي للتحليلات الإحصائية اللاحقة.
5.2 حساب النسب المئوية والتكرارات النسبية
على الرغم من أن اختبار مربع كاي يتعامل مع الأعداد التكرارية الخام المطلقة، فإن التفسير الوصفي والمقارنة الاستكشافية بين المجموعات تتطلب تحويل هذه التكرارات إلى نسب مئوية معيارية. تدعم دالة pd.crosstab() المعامل normalize الذي يتيح حساب النسب المئوية بأشكال متعددة تلائم أهداف البحث:
- النسب المئوية على مستوى الصفوف (Row Proportions): تُحسب بتمرير
normalize='index'، وتوضح كيفية توزع استجابات كل فئة من فئات المتغير الأول عبر فئات المتغير الثاني (مثل: نسبة المستجيبين للعلاج بين مرضى القلق مقارنة بمرضى الاكتئاب). - النسب المئوية على مستوى الأعمدة (Column Proportions): تُحسب بتمرير
normalize='columns'، وتوضح مساهمة كل فئة من فئات الصفوف في تشكيل فئة معينة من فئات الأعمدة. - النسب المئوية من المجموع الكلي (Total Proportions): تُحسب بتمرير
normalize='all'، وتبين النسبة المئوية التي تمثلها كل خلية منفردة من إجمالي حجم العينة الكلية ($N$).
تساعد هذه النسب المئوية الباحث في بناء استنتاجات وصفية غنية، وفهم البنية التوزيعية الدقيقة التي تفسر أسباب ظهور الدلالة الإحصائية لاحقاً في الاختبار الاستدلالي.
5.3 فحص التكرارات الملاحظة وتحديد الملاحظات الأولية
قبل الشروع في تشغيل الدوال الإحصائية الاستدلالية، يجب على الباحث إجراء فحص بصري وتشخيصي استكشافي شامل لجدول التوافق المستخرج. يساعد هذا الفحص الأولي في الكشف عن وجود أي خلايا صفرية التكرار (Zero-frequency cells) أو خلايا ذات تكرارات شديدة الانخفاض، والتي قد تشير إلى وجود فئات نادرة جداً في العينة تحتاج إلى إعادة دمج أو معالجة خاصة.
كما يتيح الفحص المبدئي مقارنة التوزيعات التكرارية الظاهرة والتقاط الفروق الصارخة بين المجموعات. فإذا لوحظ أن نسبة كبيرة جداً من الأفراد في فئة معينة يتركزون حصرياً في استجابة محددة مقارنة ببقية الفئات، فإن ذلك يعطي مؤشراً أولياً على احتمالية رفض الفرضية الصفرية وثبوت عدم الاستقلالية، مما يهيئ الباحث لتفسير المخرجات الرياضية الدقيقة التي سيولدها اختبار مربع كاي.
6. تنفيذ اختبار مربع كاي باستخدام مكتبة SciPy
6.1 استخدام دالة scipy.stats.chi2_contingency
تُعد دالة scipy.stats.chi2_contingency الأداة البرمجية القياسية والمعيارية لتنفيذ اختبار مربع كاي للاستقلالية في بيئة بايثون. تتميز هذه الدالة بقدرتها الفائقة على أتمتة كافة العمليات الحسابية المعقدة بمجرد تزويدها بجدول التوافق التكراري الخالي من صفوف وأعمدة المجاميع الهامشية.
تأخذ الدالة مصفوفة التكرارات الملاحظة كمدخل أساسي، وتُرجع أربعة مخرجات إحصائية رئيسية منظمة بدقة:
- إحصائية مربع كاي المحسوبة ($\chi^2$ Statistic): القيمة العددية الكلية الناتجة عن تطبيق معادلة بيرسون لمجموع الانحرافات المعيارية المربعة.
- القيمة الاحتمالية ($p$-value): الاحتمال المقابل للإحصائية المحسوبة تحت التوزيع النظري لكاي عند درجات الحرية المحددة.
- درجات الحرية ($df$): عدد درجات الحرية المقابلة للجدول والمحسوبة رياضياً كـ $(r-1)(c-1)$.
- مصفوفة التكرارات المتوقعة (Expected Frequencies Array): مصفوفة ثنائية الأبعاد بنفس أبعاد الجدول الأصلي تتضمن القيم المتوقعة نظرياً لكل خلية.
يتم تنفيذ الاختبار البرمجي واستخلاص نتائجه في متغيرات مستقلة عبر الشفرة التالية:
raw_crosstab = pd.crosstab(df['category1'], df['category2'])
chi2_stat, p_val, dof, expected_arr = chi2_contingency(raw_crosstab)
6.2 التحكم في تصحيح ييتس للاستمرارية (Yates’s Correction)
عند التعامل مع جداول التوافق الثنائية ذات الرتبة $2 times 2$ (درجة حرية واحدة $df=1$)، يبرز تصحيح ييتس للاستمرارية (Yates’s Continuity Correction) كأحد التعديلات الرياضية المصممة للتعامل مع حقيقة أن التوزيع التكراري المنفصل يتم تقريبه باستخدام دالة توزيع مربع كاي المتصلة. يقوم هذا التصحيح بطرح القيمة الثابتة $0.5$ من القيمة المطلقة للفارق بين التكرار الملاحظ والمتوقع في كل خلية قبل تربيع الفرق:
$$\chi^2_{\text{Yates}} = \sum \frac{(|O_{ij} – E_{ij}| – 0.5)^2}{E_{ij}}$$
تتيح دالة chi2_contingency التحكم في هذا التصحيح عبر المعامل المنطقي correction. افتراضياً، يكون هذا المعامل مضبوطاً على correction=True عندما تكون أبعاد المصفوفة $2 times 2$، بينما يتم تجاهله تلقائياً في الجداول الأكبر. يؤدي تطبيق تصحيح ييتس إلى خفض قيمة إحصائية مربع كاي الناتجة بصورة طفيفة، مما يجعل الاختبار أكثر تحفظاً ويقلل من احتمالية رفض الفرضية الصفرية دون وجه حق.
ومع ذلك، يرى العديد من علماء الإحصاء المحدثين أن تصحيح ييتس قد يبالغ في التحفظ ويخفض القوة الإحصائية للاختبار، ويفضلون ضبط المعامل على correction=False إذا كان حجم العينة الإجمالي كافياً ($N > 40$) وكانت التكرارات المتوقعة مستوفية للشروط، أو اللجوء مباشرة إلى اختبار فيشر الدقيق في العينات الصغيرة.
6.3 مقارنة التكرارات الملاحظة بالتكرارات المتوقعة برمجياً
لضمان الشفافية المنهجية والتحقق البرمجي التلقائي من استيفاء فرضية كوشران المتعلقة بالتكرارات المتوقعة، يمكن تحويل مصفوفة التكرارات المتوقعة expected_arr الناتجة عن الدالة إلى إطار بيانات Pandas يحمل نفس مسميات الصفوف والأعمدة للجدول الأصلي:
expected_df = pd.DataFrame(expected_arr, index=raw_crosstab.index, columns=raw_crosstab.columns)
يمكن بعد ذلك إجراء فحص برمجي صارم للتأكد من النسبة المئوية للخلايا التي يقل تكرارها المتوقع عن 5، والتحقق من عدم وجود أي خلية يقل تكرارها عن 1 باستخدام الأوامر البرمجية التالية:
cells_less_than_5 = (expected_df < 5).sum().sum()
total_cells = expected_df.size
percent_less_than_5 = (cells_less_than_5 / total_cells) * 100
min_expected_val = expected_df.min().min()
يمنح هذا التحقق الآلي الباحث يقيناً تاماً بمدى مطابقة البيانات لشروط الاختبار، ويحدد ما إذا كانت المخرجات الاستدلالية صالحة للاعتماد المباشر أم تتطلب بدائل علاجية.
7. تفسير وتحليل النتائج الإحصائية الناتجة
7.1 تفسير القيمة الاحتمالية (p-value) واتخاذ القرار الإحصائي
تمثل القيمة الاحتمالية ($p$-value) المحور الأساسي لاتخاذ القرار في الإحصاء الاستدلالي الكلاسيكي لاختبار الفروض. تعبر هذه القيمة عن احتمالية الحصول على إحصائية كاي مساوية أو أكثر تطرفاً من القيمة المحسوبة تجريبياً، بافتراض أن الفرضية الصفرية صحيحة تماماً في المجتمع الأصلي.
يتم اتخاذ القرار الإحصائي وفق القاعدة المعيارية الصارمة بمقارنة القيمة الاحتمالية الناتجة بمستوى الدلالة المحدد مسبقاً ($\alpha$):
- إذا كانت القيمة الاحتمالية أصغر من مستوى الدلالة ($p < \alpha$): يتم رفض الفرضية الصفرية ($H_0$) وقبول الفرضية البديلة ($H_1$). يُستنتج إحصائياً وجود علاقة ارتباطية ذات دلالة إحصائية بين المتغيرين، مما يعني أن توزيع أحدهما يعتمد على الآخر بدرجة لا يمكن عزوها للمصادفة العشوائية.
- إذا كانت القيمة الاحتمالية أكبر من أو تساوي مستوى الدلالة ($p ge \alpha$): يفشل الباحث في رفض الفرضية الصفرية (Fail to Reject $H_0$). يُستنتج عدم وجود دليل إحصائي كافٍ يثبت الارتباط بين المتغيرين، وتظل فرضية الاستقلال هي التفسير الأكثر قبولاً في ضوء البيانات المتاحة.
من المهم للغاية صياغة القرار بلغة علمية دقيقة؛ فالنتيجة غير الدالة لا تعني “إثبات الاستقلال التام”، بل تعني “غياب الدليل الكافي لرفض فرضية الاستقلال” ضمن حدود قدرة وحجم العينة الحالية.
7.2 تقييم القيمة الحرجة مقابل القيمة المحسوبة
إلى جانب المقارنة عبر القيمة الاحتمالية، يمكن تدعيم القرار الإحصائي من خلال المنهج التقليدي المعتمد على القيمة الحرجة (Critical Value Approach). تمثل القيمة الحرجة النقطة الفاصلة على منحنى توزيع مربع كاي التي تقسم المساحة الكلية الواقعة تحت المنحنى إلى منطقة القبول (منطقة عدم الرفض) ومنطقة الرفض الحرجة المقابلة لمستوى الدلالة $\alpha$.
يمكن حساب القيمة الحرجة في بايثون بدقة متناهية باستخدام دالة نقطة النسبة المئوية scipy.stats.chi2.ppf، والتي تأخذ متمم مستوى الدلالة ($1 – alpha$) ودرجات الحرية كمدخلات أساسية:
critical_value = stats.chi2.ppf(1 - 0.05, df=dof)
إذا كانت إحصائية كاي المحسوبة ($\chi^2_{\text{calc}}$) أكبر من القيمة الحرجة الناتجة ($\chi^2_{\text{crit}}$)، فإن الإحصائية تقع جغرافياً داخل منطقة الرفض في الطرف الأيمن للمنحنى، مما يؤكد قرار رفض الفرضية الصفرية. يوفر هذا النهج المزدوج اتساقاً منطقياً وتأكيداً بصرياً ورياضياً لسلامة الاستنتاج الإحصائي.
7.3 فحص البواقي المعيارية المعدلة (Adjusted Standardized Residuals)
عندما يسفر اختبار مربع كاي عن نتيجة دالة إحصائياً في الجداول الكبيرة المتعددة الفئات ($r \times c$)، يواجه الباحث معضلة تفسيرية: يخبرنا الاختبار العام بوجود ارتباط عام بين المتغيرين، لكنه يعجز عن تحديد أي الخلايا التكرارية المحددة داخل الجدول كانت المسؤولة فعلياً عن توليد هذا الارتباط وإحداث الفارق الجوهري. هنا تبرز الأهمية القصوى لتحليل البواقي (Residual Analysis).
تُعد البواقي المعيارية المعدلة (Adjusted Standardized Residuals – $z_{ij}$) أفضل مقياس تشخيصي لهذه الغاية، وتُحسب رياضياً بقسمة الفرق بين التكرار الملاحظ والمتوقع على الخطأ المعياري المقدر للفارق مع الأخذ في الاعتبار المجاميع الهامشية:
$$z_{ij} = \frac{O_{ij} – E_{ij}}{\sqrt{E_{ij} \times (1 – \frac{R_i}{N}) \times (1 – \frac{C_j}{N})}}$$
تتبع هذه البواقي التوزيع الطبيعي المعياري $N(0, 1)$. وبناءً على ذلك، يتم تقييم قيمتها بمقارنتها بالقيم الحرجة للتوزيع الطبيعي عند مستوى دلالة 0.05، وهي $\pm 1.96$:
- إذا كانت قيمة $z_{ij} > +1.96$: فإن التكرار الملاحظ في هذه الخلية أعلى بكثير وذو دلالة إحصائية مقارنة بما كان متوقعاً نظرياً في حال الاستقلال.
- إذا كانت قيمة $z_{ij} < -1.96$: فإن التكرار الملاحظ في هذه الخلية أقل بكثير وذو دلالة إحصائية مقارنة بما كان متوقعاً نظرياً.
يوفر تحليل البواقي المعيارية المعدلة فهماً دقيقاً ومفصلاً للديناميكيات الداخلية لجدول التوافق، ويسمح للباحث بتحديد الأنماط السلوكية المسؤولة بدقة عن الدلالة الإحصائية العامة.
8. قياس حجم الأثر باستخدام معامل كرامر V ومعامل فاي
8.1 معامل فاي (Phi Coefficient) لجداول 2×2
تقتصر الدلالة الإحصائية الناتجة عن اختبار مربع كاي على إثبات وجود العلاقة من عدمها، لكنها لا تقدم أي معلومة كمية عن شدة أو قوة هذه العلاقة الارتباطية. في الجداول الثنائية من رتبة $2 times 2$، يمثل معامل فاي ($phi$) المقياس القياسي المعتمد لحساب حجم الأثر وقوة الارتباط بين المتغيرين الثنائيين.
يُشتق معامل فاي رياضياً بصورة مباشرة من قيمة إحصائية مربع كاي المحسوبة وحجم العينة الإجمالي ($N$) وفق المعادلة التالية:
$$\phi = \sqrt{\frac{\chi^2}{N}}$$
يتراوح معامل فاي في الجداول الثنائية بين $0$ (انعدام تام للارتباط) و $1$ (ارتباط تام ومثالي بين المتغيرين). يمكن كتابة دالة برمجية بسيطة في بايثون لحساب معامل فاي مباشرة:
def calculate_phi(chi2_val, n_total):
return np.sqrt(chi2_val / n_total)
يتميز معامل فاي بتطابقه الرياضي التام مع معامل ارتباط بيرسون لمتغيرين ثنائيي التفريع (Point-Biserial / Phi correlation)، مما يجعله سهل التفسير والمقارنة عبر الدراسات المختلفة.
8.2 معامل كرامر V (Cramér’s V) للجداول الأكبر
عندما تتجاوز أبعاد جدول التوافق حدود المصفوفة الثنائية ($r \times c > 2 \times 2$)، يفقد معامل فاي معياريته وقد يتجاوز القيمة $1$، مما يجعله غير صالح للتفسير. في هذه الحالات، يتم استخدام معامل كرامر في (Cramér’s V)، وهو مقياس متقدم ومعدل لحجم الأثر يناسب الجداول ذات الأبعاد المتعددة.
يُحسب معامل كرامر V الكلاسيكي بالصيغة الرياضية التالية:
$$V = \sqrt{\frac{\chi^2}{N \times \min(r – 1, c – 1)}}$$
حيث يمثل $min(r – 1, c – 1)$ القيمة الصغرى بين درجات حرية الصفوف ودرجات حرية الأعمدة. لضمان عدم تحيز المعامل في العينات الصغيرة أو المتوسطة، اقترح الإحصائي الهولندي بيرجسما (Bergsma) صيغة تصحيح التحيز (Bias-corrected Cramér’s V) التي توفر تقديراً أكثر دقة وثباتاً لحجم الأثر في المجتمع الإحصائي.
يمكن صياغة دالة بايثون متكاملة لحساب معامل كرامر V المصحح كما يلي:
def cramers_v_corrected(chi2_val, n, r, c):
phi2 = chi2_val / n
phi2_corr = max(0, phi2 - ((r - 1) * (c - 1)) / (n - 1))
r_corr = r - ((r - 1)**2) / (n - 1)
c_corr = c - ((c - 1)**2) / (n - 1)
min_dim = min(r_corr - 1, c_corr - 1)
if min_dim <= 0:
return 0.0
return np.sqrt(phi2_corr / min_dim)
لتفسير قوة معامل كرامر V، وضع جاكوب كوهين (Jacob Cohen) إرشادات معيارية تتوقف على درجات الحرية الصغرى $k = min(r – 1, c – 1)$. على سبيل المثال، عندما تكون $k = 1$، تُفسر القيم $0.10$ كأثر ضعيف، و $0.30$ كأثر متوسط، و $0.50$ فأعلى كأثر قوي وكبير.
8.3 أهمية تضمين حجم الأثر بجانب الدلالة الإحصائية
يشدد الدليل الإرشادي لجمعية علم النفس الأمريكية (APA 7th Edition) وكافة الجمعيات العلمية الرائدة على ضرورة إدراج مقاييس حجم الأثر وفترات الثقة المصاحبة في التقارير الإحصائية بجانب القيمة الاحتمالية. يعود هذا التشديد المنهجي إلى التمييز الحاسم بين مفهومين مختلفين جوهرياً:
- الدلالة الإحصائية (Statistical Significance): تخبرنا فقط بما إذا كان الفارق أو الارتباط الملاحظ ناتجاً عن الصدفة العشوائية أم لا، وتتأثر بشكل كبير جداً بحجم العينة ($N$).
- الأهمية العملية والتطبيقية (Practical Importance): تخبرنا بحجم ووزن العلاقة في العالم الواقعي ومدى فائدتها السريرية أو التربوية أو الاجتماعية، وهو ما يقيسه حجم الأثر بمعزل عن تضخم العينة.
إن إغفال حجم الأثر قد يدفع الباحثين إلى الاحتفاء بعلاقات تافهة عملياً لمجرد أنها بلغت الدلالة الإحصائية بفعل العينات الضخمة، أو إهمال علاقات قوية واعدة لم تبلغ الدلالة بسبب صغر حجم العينة المتاحة. لذلك، يمثل حجم الأثر البوصلة الحقيقية لتقييم الأثر الميداني للنتائج العلمية.
9. دراسة حالة تطبيقية في علم النفس والسلوك
9.1 وصف المشكلة النفسية وفرضيات البحث
لتجسيد كافة المفاهيم النظرية والبرمجية في سياق تطبيقي واقعي، سنستعرض دراسة حالة متكاملة في مجال علم النفس الإكلينيكي والسلوكي. تهدف الدراسة إلى فحص العلاقة بين النمط التشخيصي لاضطرابات القلق وتفضيل نوع التدخل العلاجي النفسي لدى عينة سريرية متقدمة لطلب الاستشارة النفسية.
تتضمن الدراسة متغيرين فئويين متعددي المستويات:
- المتغير المستقل (التشخيص الإكلينيكي – Diagnosis): يحتوي على 3 مستويات: اضطراب القلق العام (GAD)، اضطراب الهلع (Panic Disorder)، واضطراب الرهاب الاجتماعي (Social Phobia).
- المتغير التابع (التدخل العلاجي المفضل – Therapy Preference): يحتوي على 3 مستويات: العلاج المعرفي السلوكي (CBT)، العلاج المرتكز على اليقظة الذهنية (Mindfulness)، والعلاج الدوائي النفسي (Pharmacotherapy).
تتم صياغة الفرضيات المنهجية للبحث كما يلي:
- الفرضية الصفرية ($H_0$): لا توجد علاقة ارتباطية ذات دلالة إحصائية بين النمط التشخيصي لاضطراب القلق وتفضيل نوع التدخل العلاجي (المتغيران مستقلان في مجتمع المرضى).
- الفرضية البديلة ($H_1$): توجد علاقة ارتباطية ذات دلالة إحصائية بين النمط التشخيصي وتفضيل نوع التدخل العلاجي (تفضيلات العلاج تختلف باختلاف التشخيص الإكلينيكي).
9.2 التنفيذ البرمجي المتكامل خطوة بخطوة
سنقوم بإنشاء مجموعة بيانات تجريبية تحاكي استجابات عينة مكونة من $N = 600$ مريض نفسي، ثم سنقوم ببناء جدول التوافق، وتشغيل اختبار مربع كاي، وحساب حجم الأثر (Cramér’s V)، وفحص البواقي المعيارية المعدلة بشكل كامل عبر بايثون:
# 1. توليد مصفوفة التكرارات الملاحظة للدراسة السريرية
# الصفوف: GAD, Panic Disorder, Social Phobia
# الأعمدة: CBT, Mindfulness, Pharmacotherapy
observed_contingency = np.array([[95, 65, 40],
[70, 30, 100],
[85, 80, 35]])
row_labels = ['GAD', 'Panic Disorder', 'Social Phobia']
col_labels = ['CBT', 'Mindfulness', 'Pharmacotherapy']
df_study = pd.DataFrame(observed_contingency, index=row_labels, columns=col_labels)
# 2. تنفيذ اختبار مربع كاي
chi2_val, p_val, dof, expected_vals = chi2_contingency(df_study)
# 3. حساب حجم العينة الكلي وحجم الأثر كرامر V المصحح
n_total = df_study.sum().sum()
r_dim, c_dim = df_study.shape
v_effect = cramers_v_corrected(chi2_val, n_total, r_dim, c_dim)
# 4. حساب البواقي المعيارية المعدلة برمجياً
expected_df = pd.DataFrame(expected_vals, index=row_labels, columns=col_labels)
row_totals = df_study.sum(axis=1)
col_totals = df_study.sum(axis=0)
adj_residuals = np.zeros_like(observed_contingency, dtype=float)
for i in range(r_dim):
for j in range(c_dim):
diff = observed_contingency[i, j] - expected_vals[i, j]
se = np.sqrt(expected_vals[i, j] * (1 - row_totals[i]/n_total) * (1 - col_totals[j]/n_total))
adj_residuals[i, j] = diff / se
residuals_df = pd.DataFrame(adj_residuals, index=row_labels, columns=col_labels)
أظهرت الحسابات البرمجية النتائج الرقمية التالية بدقة فائقة: بلغت قيمة إحصائية مربع كاي $\chi^2 = 71.48$ عند درجات حرية $df = (3-1)(3-1) = 4$، وبلغت القيمة الاحتمالية $p = 1.09 \times 10^{-14}$ ($p < 0.001$). وبما أن القيمة الاحتمالية أصغر بكثير من مستوى الدلالة $\alpha = 0.05$، فإننا نرفض الفرضية الصفرية بصورة قاطعة. كما بلغت قيمة معامل كرامر V المصحح $V = 0.241$، وهو ما يمثل حجم أثر متوسطاً وفق معايير كوهين الإحصائية.
9.3 استخلاص النتائج الإكلينيكية والسلوكية
بفحص مصفوفة البواقي المعيارية المعدلة (Adjusted Residuals) الناتجة عن الدراسة، تتكشف الأبعاد السريرية التي قادت إلى هذا الارتباط ذي الدلالة الإحصائية العالية:
- مرضى اضطراب الهلع (Panic Disorder): أظهروا انحرافاً إيجابياً بالغ القوة نحو تفضيل التدخل الدوائي النفسي ($z = +7.82 > +1.96$)، وانحرافاً سلبياً كبيراً جداً حيال تدخلات اليقظة الذهنية ($z = -4.75 < -1.96$). يفسر هذا سلوكياً بطبيعة الأعراض الجسدية الحادة والمفاجئة لنوبات الهلع، والتي تدفع المرضى للبحث عن حلول بيولوجية سريعة المفعول مقارنة بالتدخلات التأملية.
- مرضى الرهاب الاجتماعي (Social Phobia): أظهروا إقبالاً مرتفعاً بصورة دالة إحصائياً نحو العلاجات القائمة على اليقظة الذهنية ($z = +3.12$) ونفوراً دالاً من العلاج الدوائي ($z = -3.85$). يعكس ذلك رغبة هذه الفئة في تطوير استراتيجيات تنظيم انفعالي داخلية واستبصار معرفي لإدارة القلق في المواقف الاجتماعية.
- مرضى القلق العام (GAD): أظهروا تفضيلاً متوازناً يميل نحو العلاج المعرفي السلوكي ($z = +1.89$) واليقظة الذهنية، مع انخفاض دال في طلب العلاج الدوائي مقارنة بالمتوقع.
تسلط هذه الاستنتاجات الإكلينيكية الضوء على القوة الهائلة لدمج اختبار مربع كاي مع تحليل البواقي المعيارية، حيث يُمكّن الباحثين وصناع القرار الصحي من توجيه البروتوكولات العلاجية الفردية وتخصيص الموارد السريرية بكفاءة استناداً إلى البراهين الإحصائية الدقيقة.
10. التصور البصري لجداول التوافق ونتائج الاختبار
10.1 رسم الخرائط الحرارية (Heatmaps) للتكرارات والبواقي
يعد التمثيل البياني عبر الخرائط الحرارية (Heatmaps) باستخدام مكتبة Seaborn أحد أرقى أساليب تقديم البيانات الفئوية المتقاطعة، حيث يدمج الأرقام بالألوان المتدرجة لتسهيل الإدراك البصري المباشر للأنماط المعقدة. يمكن إنشاء خريطتين حراريتين متكاملتين: الأولى لعرض التكرارات والنسب المئوية، والثانية لعرض مصفوفة البواقي المعيارية المعدلة لتسليط الضوء الفوري على الخلايا ذات الدلالة الإحصائية.
يوضح النص البرمجي التالي كيفية بناء خريطة حرارية مخصصة للبواقي المعيارية، مع تطبيق لوحة ألوان متباينة (Diverging Colormap) تفصل بوضوح بين الانحرافات الإيجابية والسلبية:
plt.figure(figsize=(10, 6))
sns.heatmap(residuals_df, annot=True, fmt=".2f", cmap="coolwarm", center=0, cbar_kws={'label': 'Adjusted Residual (z-score)'}, linewidths=1, linecolor='white')
plt.title('Adjusted Standardized Residuals Heatmap', fontsize=14, pad=15)
plt.xlabel('Therapy Preference', fontsize=12)
plt.ylabel('Clinical Diagnosis', fontsize=12)
plt.axhline(y=0, color='k',linewidth=1)
plt.show()
في هذه الخريطة الحرارية، تظهر الخلايا ذات الدلالة الإحصائية الإيجابية ($z > 1.96$) بدرجات اللون الأحمر الداكن، بينما تظهر الخلايا ذات الدلالة الإحصائية السلبية ($z < -1.96$) بدرجات اللون الأزرق الداكن، في حين تظل الخلايا غير الدالة قريبة من الدرجات المحايدة في المنتصف، مما يوفر رؤية بصرية فورية وسهلة الفهم لنتائج التحليل.
10.2 المخططات الشريطية المجمعة والمكدسة (Bar Charts)
توفر المخططات الشريطية المجمعة (Grouped Bar Charts) والمخططات المكدسة بنسبة 100% (100% Stacked Bar Charts) وسيلة بصرية استثنائية لمقارنة التوزيعات النسبية عبر المجموعات المختلفة. تتيح المخططات المكدسة بنسبة 100% تحييد الفروق في الحجم الإجمالي لكل مجموعة، مما يسهل مقارنة التفضيلات النسبية بصورة متكافئة وعادلة.
يمكن بناء مخطط شريطي مكدس بنسبة 100% في بايثون بالاعتماد على إطار بيانات النسب المئوية للصفوف كما يلي:
props_df = pd.crosstab(df_clean['diagnosis'], df_clean['therapy'], normalize='index') * 100
props_df.plot(kind='bar', stacked=True, figsize=(10, 6), colormap='viridis', edgecolor='black')
plt.title('Distribution of Therapy Preferences by Clinical Diagnosis (%)', fontsize=14)
plt.xlabel('Clinical Diagnosis', fontsize=12)
plt.ylabel('Percentage within Diagnostic Group (%)', fontsize=12)
plt.legend(title='Therapy Option', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.xticks(rotation=0)
plt.tight_layout()
plt.show()
يساعد هذا المخطط القارئ في رصد التباينات الهيكلية بوضوح؛ حيث يمكن بالعين المجردة رؤية كيف يهيمن العلاج الدوائي على الحصة النسبية الكبرى لمرضى الهلع، بينما تقتطع اليقظة الذهنية المساحة الأكبر لدى مرضى الرهاب الاجتماعي، وهو ما يعزز السرد العلمي للبحث.
10.3 رسم التوزيع النظري لمربع كاي ومنطقة الرفض
لتقديم تصور تعليمي وأكاديمي متكامل، يُعد رسم دالة كثافة الاحتمال النظري لتوزيع مربع كاي (Chi-Square PDF) وتوضيح موقع القيمة المحسوبة بالنسبة لحدود منطقة الرفض الحرجة وسيلة بالغة الفعالية لشرح منطق اتخاذ القرار الإحصائي لجمهور القراء والباحثين.
يمكن توليد هذا المخطط الإحصائي التعليمي المتقدم عبر الشفرة التالية:
x_vals = np.linspace(0, 80, 1000)
y_vals = stats.chi2.pdf(x_vals, df=dof)
plt.figure(figsize=(11, 5))
plt.plot(x_vals, y_vals, label=f'Chi-Square Distribution (df={dof})', color='navy', lw=2)
# تظليل منطقة الرفض الحرجة
x_crit = np.linspace(critical_value, 80, 500)
plt.fill_between(x_crit, stats.chi2.pdf(x_crit, df=dof), color='red', alpha=0.3, label=f'Rejection Region (alpha=0.05, Crit={critical_value:.2f})')
# رسم خط عمودي يشير إلى القيمة المحسوبة للاختبار
plt.axvline(chi2_val, color='darkgreen', linestyle='--', lw=2, label=f'Calculated Chi-Square ({chi2_val:.2f})')
plt.title('Theoretical Chi-Square Distribution and Test Result', fontsize=14)
plt.xlabel('Chi-Square Value', fontsize=12)
plt.ylabel('Probability Density', fontsize=12)
plt.legend(loc='upper right')
plt.grid(alpha=0.2)
plt.show()
يوضح هذا المخطط بجلاء كيف استقرت الإحصائية المحسوبة في أقصى يمين منطقة الرفض، على مسافة شاسعة تتجاوز القيمة الحرجة ($71.48 gg 9.49$)، مما يقدم برهاناً بصرياً ساطعاً لا يقبل الشك على رفض الفرضية الصفرية ودعم الفرضية البديلة بقوة.
11. التعامل مع انتهاك الفروض وحالات البيانات الخاصة
11.1 اختبار فيشر الدقيق (Fisher’s Exact Test) للعينات الصغيرة
عندما ينتهك تصميم الدراسة فرضية كفاية التكرارات المتوقعة لكوشران (أي عندما يحتوي الجدول على خلايا يقل تكرارها المتوقع عن 5 بنسبة تزيد عن 20%، أو يقل أي تكرار متوقع عن 1)، يصبح اختبار مربع كاي التقليدي غير صالح رياضياً بسبب انهيار التقارب التقريبي نحو المنحنى المتصل. في مثل هذه الحالات الخاصة بالجداول الثنائية ($2 times 2$)، يمثل اختبار فيشر الدقيق (Fisher’s Exact Test) البديل الإحصائي المثالي غير المشروط بحجم العينة.
يعتمد اختبار فيشر الدقيق على التوزيع فوق الهندسي (Hypergeometric Distribution) لحساب الاحتمال الرياضي المباشر والدقيق لمشاهدة التوزيع التكراري الفعلي في ظل ثبات المجاميع الهامشية. يتم تنفيذ اختبار فيشر في بايثون بسلاسة عبر دالة scipy.stats.fisher_exact كما في المثال التالي:
small_table = np.array([[8, 2],
[1, 9]])
odds_ratio, p_value_fisher = stats.fisher_exact(small_table, alternative='two-sided')
تُرجع الدالة نسبة الأرجحية (Odds Ratio) والقيمة الاحتمالية الدقيقة المباشرة ($p$-value)، مما يتيح للباحث اتخاذ قرارات استدلالية صارمة وثابتة حتى في أصغر العينات السريرية والتجريبية النادرة دون خوف من تشوهات التقريب.
11.2 المقارنات البعدية وتصحيح بونفيروني (Post-Hoc Tests)
عند الحصول على دلالة إحصائية عامة في جداول التوافق الكبيرة ($r \times c > 2 \times 2$)، يرغب الباحث غالباً في اختبار الفروق الزوجية المحددة بين كل زوجين من الفئات لتحديد مصدر الاختلاف بدقة متناهية (Pairwise Chi-Square Comparisons). ومع ذلك، فإن إجراء اختبارات إحصائية متعددة على نفس مجموعة البيانات يؤدي حتماً إلى تضخم خطير في معدل الخطأ العائلي الشامل (Family-wise Error Rate)، مما يزيد من احتمالية الوقوع في أخطاء إيجابية كاذبة (Type I Errors).
للتعامل مع هذه المشكلة المنهجية، يتم تطبيق تصحيح بونفيروني (Bonferroni Correction)، وهو أسلوب منهجي يتم فيه تعديل مستوى الدلالة المقبول بقسمته على إجمالي عدد المقارنات الزوجية الممكنة ($k$):
$$\alpha_{\text{adjusted}} = \frac{\alpha_{\text{original}}}{k} = \frac{0.05}{\binom{r}{2} \times \binom{c}{2}}$$
يوضح الكود التالي أتمتة إجراء المقارنات الزوجية البعدية بين الصفوف في بايثون مع تطبيق التصحيح:
import itertools
row_pairs = list(itertools.combinations(df_study.index, 2))
k_comparisons = len(row_pairs)
alpha_adj = 0.05 / k_comparisons
pairwise_results = []
for pair in row_pairs:
sub_table = df_study.loc[list(pair)]
chi2_sub, p_sub, _, _ = chi2_contingency(sub_table)
is_sig = p_sub < alpha_adj
pairwise_results.append({'Comparison': f"{pair[0]} vs {pair[1]}", 'Chi2': chi2_sub, 'p_raw': p_sub, 'Significant (Bonferroni)': is_sig})
df_pairwise = pd.DataFrame(pairwise_results)
يضمن هذا الإجراء المنهجي الصارم تحكماً تاماً في معدلات الخطأ الاستدلالي، ويمنح المقارنات البعدية موثوقية علمية عالية تتماشى مع معايير النشر في المجلات العلمية الرصينة.
11.3 اختبارات كاي لبيانات العينات المترابطة (McNemar Test)
من الأخطاء الشائعة والجسيمة في التحليل الإحصائي تطبيق اختبار مربع كاي للاستقلالية على البيانات المترابطة أو القياسات المتكررة (Paired / Repeated-Measures Data)، كأن يتم قياس تشخيص الحالة النفسية لنفس المرضى قبل وبعد برنامج علاجي معين (سليم / مصاب). في مثل هذا التصميم، تُنتهك فرضية استقلالية المشاهدات تماماً لأن نفس المفحوص يساهم في القياس القبلي والبعدي معاً.
البديل الإحصائي المعتمد لاختبار التغير في البيانات الفئوية الثنائية المرتبطة هو اختبار ماكنيمار (McNemar’s Test). يركز اختبار ماكنيمار حصرياً على الخلايا غير المتطابقة المتعارضة في جدول التوافق (Discordant Pairs)، وهي الحالات التي تغيرت استجابتها بين القياسين (مثل: مصاب قبلياً $\rightarrow$ سليم بعدياً، أو العكس).
يمكن تنفيذ اختبار ماكنيمار بسهولة في بايثون باستخدام مكتبة statsmodels كما يوضح المثال التالي:
from statsmodels.stats.contingency_tables import mcnemar
# جدول 2x2: قبل العلاج مقابل بعد العلاج لنفس العينة
paired_table = np.array([[40, 35],
[5, 20]])
mcnemar_result = mcnemar(paired_table, exact=False, correction=True)
print(f"McNemar Statistic: {mcnemar_result.statistic:.3f}, p-value: {mcnemar_result.pvalue:.4e}")
يوفر اختبار ماكنيمار تقييماً دقيقاً ومطابقاً للشروط المنهجية لقياس فاعلية التدخلات العلاجية والبرامج التربوية في التصاميم القبلية والبعدية دون الوقوع في أخطاء التحليل غير المستقل.
12. توثيق النتائج وكتابة التقارير الأكاديمية وفق أسلوب APA
12.1 صياغة الفقرة الإحصائية القياسية وفق معايير APA 7
تضع جمعية علم النفس الأمريكية في دليلها السابع (APA Style 7th Edition) قواعد دقيقة وصارمة لكتابة وتوثيق نتائج اختبار مربع كاي للاستقلالية داخل المتن البحثي. يجب أن تتضمن الفقرة الإحصائية العناصر الخمسة الأساسية التالية:
- رمز الإحصائية مكتوباً بالحرف الإغريقي المائل أو اللاتيني ($\chi^2$).
- درجات الحرية ($df$) وحجم العينة الكلي ($N$) بين قوسين.
- القيمة العددية المحسوبة لمربع كاي مقربة إلى خانتين عشريتين.
- القيمة الاحتمالية الدقيقة ($p$) مقربة إلى ثلاث خانات عشرية (أو كتابة$p < .001$ إذا كانت شديدة الصغر).
- مقياس حجم الأثر المناسب (معامل فاي $phi$ أو معامل كرامر $V$) مقرباً إلى خانتين عشريتين.
فيما يلي النموذج القياسي المعتمد لصياغة التقرير باللغتين العربية والإنجليزية لدراستنا السريرية السابقة:
الصيغة العربية المعتمدة:
“أُجري اختبار مربع كاي للاستقلالية لتقييم العلاقة بين النمط التشخيصي لاضطراب القلق وتفضيل نوع التدخل العلاجي. أظهرت النتائج وجود علاقة ارتباطية ذات دلالة إحصائية بين المتغيرين، $\chi^2(4, N = 600) = 71.48$، $p < .001$، $V = 0.24$. وقد كشف تحليل البواقي المعيارية المعدلة أن مرضى اضطراب الهلع فضلوا العلاج الدوائي بمعدل أعلى دلالة إحصائياً مقارنة بالمتوقع ($z = 7.82$)، في حين فضل مرضى الرهاب الاجتماعي تدخلات اليقظة الذهنية بمعدل أعلى دلالة إحصائياً ($z = 3.12$)."
الصيغة الإنجليزية المعتمدة (APA 7th):
“A Pearson’s chi-square test of independence was conducted to examine the relationship between anxiety disorder diagnosis and therapy preference. The relation between these variables was statistically significant, $\chi^2(4, N = 600) = 71.48$, $p < .001$, Cramér's $V = .24$. Adjusted standardized residuals indicated that patients with panic disorder were significantly more likely to prefer pharmacotherapy ($z = 7.82$), whereas patients with social phobia exhibited a significant preference for mindfulness-based interventions ($z = 3.12$)."
12.2 إنشاء الجداول التلخيصية الجاهزة للنشر الأكاديمي
تشترط المجلات العلمية المحكمة تنسيق جداول التوافق بطريقة أكاديمية أنيقة تخلو من الخطوط العمودية وتكتفي بالخطوط الأفقية الأساسية في رأس ونهاية الجدول وفق نمط APA، مع ضرورة إدراج التكرارات الملاحظة والنسب المئوية معاً وتوضيح مستويات الدلالة الإحصائية في الحواشي السفلية.
يوضح الجدول التالي التنسيق الأكاديمي القياسي الجاهز للنشر المباشر لبيانات دراستنا التطبيقية:
| التشخيص الإكلينيكي | العلاج السلوكي المعرفي (CBT) n (%) |
اليقظة الذهنية (Mindfulness) n (%) |
العلاج الدوائي (Pharmacotherapy) n (%) |
الإجمالي الكلي N (%) |
|---|---|---|---|---|
| اضطراب القلق العام (GAD) | 95 (47.5%) | 65 (32.5%) | 40 (20.0%) | 200 (100.0%) |
| اضطراب الهلع (Panic Disorder) | 70 (35.0%) | 30 (15.0%) | 100 (50.0%) | 200 (100.0%) |
| الرهاب الاجتماعي (Social Phobia) | 85 (42.5%) | 80 (40.0%) | 35 (17.5%) | 200 (100.0%) |
| المجموع الإجمالي | 250 (41.7%) | 175 (29.2%) | 175 (29.2%) | 600 (100.0%) |
ملاحظة: $\chi^2 = 71.48$، درجات الحرية $df = 4$، $p < .001$، معامل كرامر $V = .24$. الأعداد داخل الخلايا تمثل التكرار المشاهد والنسبة المئوية داخل الصف.
يمكن تصدير هذا الجدول تلقائياً من بايثون إلى صيغ متعددة مثل LaTeX أو Markdown أو HTML عبر استخدام دوال Pandas مثل df.to_latex() أو df.to_html()، مما يوفر وقتاً هائلاً في إعداد الأوراق العلمية والأطروحات الأكاديمية.
12.3 أخطاء شائعة يجب تجنبها عند تفسير وكتابة التقرير
يقع العديد من الباحثين وطلاب الدراسات العليا في أخطاء منهجية وتفسيرية متكررة عند التعامل مع اختبار مربع كاي للاستقلالية، ومن أبرز هذه المحاذير التي يجب تجنبها تماماً:
- الخلط القاتل بين الارتباط والسببية (Correlation vs. Causation): يثبت اختبار مربع كاي وجود اقتران أو ارتباط إحصائي بين متغيرين، لكنه لا يثبت مطلقاً أن أحدهما سبب مباشر للآخر. يجب تجنب استخدام عبارات سببية مثل “أدى التشخيص إلى إحداث التفضيل” واستبدالها بعبارات ارتباطية سليمة مثل “ارتبط التشخيص بنمط التفضيل”.
- إهمال التحقق من التكرارات المتوقعة أو إغفال الإبلاغ عنها: عدم فحص شرط كوشران يهدد مصداقية البحث بالكامل، ويجب دائماً التأكيد في منهجية التقرير على أن جميع التكرارات المتوقعة استوفت الحدود الآمنة للاختبار.
- إغفال حساب وتفسير حجم الأثر: الاكتفاء بكتابة القيمة الاحتمالية $p$-value وحدها يمنح صورة ناقصة ومضللة، ولا بد من إقرانها بمعامل كرامر V أو فاي لتقييم الوزن العملي للنتائج.
- تطبيق الاختبار على النسب المئوية بدلاً من التكرارات الخام: يقوم اختبار كاي على الأعداد الصحيحة المطلقة، وتمرير النسب المئوية لدوال التحليل يدمر العمليات الحسابية لدرجات الحرية وحجم العينة بالكامل.
- التعميم المفرط للنتائج خارج حدود العينة: يجب حصر الاستنتاجات في حدود المجتمع الإحصائي الممثل والظروف الإكلينيكية والبيئية التي جُمعت فيها البيانات.
خاتمة ودليل مرجعي للممارس
يمثل اختبار مربع كاي للاستقلالية ركيزة إحصائية ومنهجية بالغة الأهمية في ترسانة الباحث العلمي في مجالات العلوم النفسية والاجتماعية والسلوكية والطبية. ومن خلال الجمع بين الفهم النظري الرصين لمعادلات كاي، والاستيعاب الصارم للافتراضات المنهجية، والتمكن البرمجي المتقدم عبر لغة بايثون ومكتباتها العلمية (SciPy, Pandas, Seaborn)، يستطيع الباحث تحويل مجموعات البيانات الفئوية المعقدة إلى استنتاجات علمية دقيقة قابلة للتطبيق العملي والنشر الأكاديمي المرموق.
يوفر هذا الدليل مساراً متكاملاً يبدأ من تنظيف البيانات واستيرادها، مروراً بإنشاء جداول التوافق وتشغيل الاختبارات الاستدلالية وحساب أحجام الأثر والتحليلات البعدية المتقدمة وتصحيحات بونفيروني، وصولاً إلى التصور البصري ثلاثي الأبعاد والتوثيق الأكاديمي الصارم وفق دليل APA 7. إن تطبيق هذه الممارسات الإحصائية الرصينة يضمن أعلى مستويات الشفافية والموثوقية وقابلية التكرار في الأبحاث العلمية المعاصرة.
References
- American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). American Psychological Association. https://doi.org/10.1037/0000165-000
- Bergsma, W. (2013). A bias-correction for Cramér’s V and Tschuprow’s T. Journal of the Korean Statistical Society, 42(3), 323–328. https://doi.org/10.1016/j.jkss.2012.10.002
- Cochran, W. G. (1954). Some methods for strengthening the common $\chi^2$ tests. Biometrics, 10(4), 417–451. https://doi.org/10.2307/3001616
- Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence Erlbaum Associates.
- McHugh, M. L. (2013). The chi-square test of independence. Biochemia Medica, 23(2), 143–149. https://doi.org/10.11613/BM.2013.018
- McKinney, W. (2022). Python for data analysis: Data wrangling with pandas, NumPy, and Jupyter (3rd ed.). O’Reilly Media.
- Pearson, K. (1900). On the criterion that a given system of deviations from the probable in the case of a correlated system of variables is such that it can be reasonably supposed to have arisen from random sampling. Philosophical Magazine, 50(302), 157–175. https://doi.org/10.1080/14786440009463897
- Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., … 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
- Yates, F. (1934). Contingency tables involving small numbers and the $\chi^2$ test. Supplement to the Journal of the Royal Statistical Society, 1(2), 217–235. https://doi.org/10.2307/2983604