لماذا تحليل التباين لا كومة من اختبارات t
يقارن اختبار t متوسطين. ومع ثلاث مجموعات أو أكثر، تكون الحركة المغرية إجراء اختبار t لكل زوج، وهذه هي المصيدة بالضبط. فكل اختبار يُجرى عند مستوى 0.05 يحمل خطر إيجابية كاذبة بنسبة 5%، والمخاطر تتراكم: فمع 4 مجموعات لدينا 6 اختبارات زوجية واحتمال يقارب 26% لظهور نتيجة "معنوية" زائفة واحدة على الأقل، ومع 5 مجموعات (10 اختبارات) يقارب 40%. فتصنع اكتشافات من محض ضوضاء.
ويحل تحليل التباين (ANOVA، أي تحليل التباين) هذه المشكلة بطرح سؤال واحد بقيمة p واحدة: هل كل متوسطات المجموعات متساوية أم أن واحدًا منها على الأقل يختلف؟ ورغم الاسم فإنه يقارن المتوسطات، لكنه يفعل ذلك بتحليل التباين: فإذا كانت متوسطات المجموعات أكثر تباعدًا مما تستطيع الضوضاء داخل المجموعات تفسيره، فثمة شيء حقيقي يجري.
تحليل التباين الأحادي بـ aov()
مجموعة PlantGrowth مصنوعة لهذا: أوزان نباتات في ظل حالة ضابطة وحالتَي معالجة. عاير بـ aov() ثم اطبع الجدول بـ summary()، وهذه خطوة مهمة:
اقرأ الصيغة "هل يعتمد weight على group؟" ويجب أن يكون متغير التجميع عاملًا، وPlantGrowth$group كذلك أصلًا، لكن إذا كانت مجموعاتك مرمّزة أرقامًا (جرعات، أو معرّفات دفعات) فغلّفها: aov(y ~ factor(dose), ...). وإلا فإن aov() تعاير بصمت خط انحدار عبر رموز المجموعات بدل مقارنة متوسطاتها، فيكون النموذج خاطئًا بلا أي رسالة خطأ.
قراءة جدول تحليل التباين
الجدول صفان، أحدهما للعامل والآخر للبواقي، وخمسة أعمدة. وخلية خلية:
Df Sum Sq Mean Sq F value Pr(>F)
group 2 3.766 1.8832 4.846 0.0159
Residuals 27 10.492 0.3886
- Df: درجات الحرية. يحصل صف العامل على عدد المجموعات − 1 (3 مجموعات ← 2)، ويحصل صف البواقي على عدد الملاحظات − عدد المجموعات (30 − 3 = 27). وهو فحص سلامة سريع للتأكد من أن R رأى التصميم الذي قصدته.
- Sum Sq: التباين مقسومًا إلى كومتين. فصف
groupهو كومة ما بين المجموعات: كم تبعد متوسطات المجموعات عن المتوسط العام. وصفResidualsهو كومة ما داخل المجموعات: كم تتباين النباتات حول متوسط مجموعتها هي. ومجموعهما هو التباين الكلي في البيانات. - Mean Sq: كل Sum Sq مقسومًا على Df الخاص به، فتتحول كومات التباين إلى معدلات قابلة للمقارنة لكل درجة حرية. وMean Sq للبواقي (0.389) هو مستوى الضوضاء.
- قيمة F: النسبة، أي Mean Sq لـ
groupعلى Mean Sq لـResiduals(1.8832 / 0.3886 ≈ 4.85). ولو كانت كل متوسطات المجموعات متساوية حقًا لحامت هذه النسبة حول 1. وكلما كبرت F تجاوزت الفروق بين المجموعات ما تستطيع الضوضاء تفسيره. - Pr(>F): قيمة p، أي احتمال ظهور F بهذا الكبر لو كانت المتوسطات الحقيقية الثلاثة متطابقة. وهي هنا 0.016، وهي صغيرة بما يكفي عند المستوى المعتاد 0.05 لرفض "الكل متساوٍ". وكالعادة، ليست هي احتمال صحة فرضية العدم، ولا تقول شيئًا عن أي المجموعات تختلف ولا بأي مقدار.
وتلك النقطة الأخيرة هي القيد الجوهري: قيمة F المعنوية تقول "ثمة فرق ما في مكان ما". لا أكثر.
أي المجموعات تختلف؟ TukeyHSD()
يحتاج السؤال التالي إلى اختبار بعدي. ويختبر فرق تيوكي المعنوي الصادق كل زوج مع إبقاء معدل الخطأ العائلي عند 5% عبر كل المقارنات مجتمعة:
صف لكل زوج، وأربعة أرقام لكل صف:
- diff: الفرق المقدَّر في المتوسطات (المجموعة الثانية المذكورة ناقص الأولى).
- lwr وupr: فترة الثقة العائلية 95% لذلك الفرق.
- p adj: قيمة p، وهي معدَّلة أصلًا لإجراء ثلاث مقارنات.
وبالنسبة إلى PlantGrowth: يُظهر الزوج trt2-trt1 فرقًا يبلغ نحو 0.87 بقيمة p adj ≈ 0.012 وفترة خالية من الصفر، فالمعالجة الثانية تتفوق في النمو على المعالجة الأولى. أما صفا المعالجة مقابل الضابط (trt1-ctrl وtrt2-ctrl) فلهما فترتان تحيطان بالصفر وقيمتا p adj أعلى بكثير من 0.05، فلا يمكن تمييز أي من المعالجتين عن الضابط في هذه العينة. والقاعدة العملية تعكس ما هو معتاد في فترات الثقة في كل مكان: استبعاد الفترة للصفر يكافئ p adj أقل من 0.05.
ولاحظ كيف قالت F الشاملة "يوجد فرق" بينما حدد تيوكي موقعه في زوج واحد بالضبط، فبنية الخطوتين هي التصميم كله: اختبار شامل صادق واحد، ثم عمل تحرٍّ زوجي مصحَّح كما ينبغي.
تحليل التباين الثنائي: عاملان وتفاعلهما
مع متغيرَي تجميع، يختبر استدعاء واحد كليهما، إضافةً إلى ما إذا كانا يتفاعلان. وتتقاطع في ToothGrowth نوعية المكمّل (supp) مع الجرعة (0.5 و1 و2 ملغ، وهي عددية فتحتاج إلى factor()):
وتتوسع supp * factor(dose) إلى ثلاثة تأثيرات، لكل منها صف في الجدول:
- supp: بمتوسط عبر الجرعات، هل تهم نوعية المكمّل؟ (نعم: p ≈ 0.0002.)
- factor(dose): بمتوسط عبر المكمّلات، هل تهم الجرعة؟ (بشدة: قيمة p ضئيلة جدًا.)
- supp:factor(dose): التفاعل، أي هل يتغير أثر المكمّل باختلاف الجرعة؟ وهنا p ≈ 0.022، فنعم يتغير. إذ يتفوق عصير البرتقال على حمض الأسكوربيك عند الجرعات المنخفضة، لكن الفجوة تُغلَق عند جرعة 2 ملغ.
والتفاعل المعنوي بطاقة تحذير على التأثيرات الرئيسية: فعبارة "نوعية المكمّل تهم" صحيحة في المتوسط فقط، والمتوسط يخفي قصة تعتمد على الجرعة. وحين يكون التفاعل معنويًا، صف التركيبات (عبر TukeyHSD(fit2, "supp:factor(dose)") أو جدول متوسطات المجموعات من خلال الملخصات المجمّعة) بدل الاكتفاء بالتقرير عن التأثيرات الرئيسية. ولا تستخدم + بدل * إلا حين تريد عمدًا نموذجًا بلا تفاعل.
الافتراضات والبديل القائم على الرتب
تستند رياضيات تحليل التباين إلى ثلاثة افتراضات، مرتبة تنازليًا حسب قابليتها للتفاوض:
- الاستقلال: ألا تؤثر الملاحظات بعضها في بعض. ولا شيء يصلح خرق هذا الافتراض لاحقًا، فهو خاصية في تصميم الدراسة.
- تساوي التباينات عبر المجموعات: فـ Mean Sq للبواقي تقدير ضوضاء مجمّع واحد، لذا ينبغي أن تكون المجموعات متقاربة في مستوى الضوضاء. والفحص سطر واحد:
bartlett.test(weight ~ group, data = PlantGrowth)(وقيمة p الكبيرة تعني عدم وجود دليل على تباينات غير متساوية). - بواقٍ طبيعية تقريبًا: وهو الأقل أهمية مع التصاميم المتوازنة وأحجام المجموعات المعقولة، فألقِ نظرة على مدرج تكراري أو مخطط صندوق للبواقي عبر
residuals(fit).
وحين تكون البيانات شديدة الالتواء أو ترتيبية أو مليئة بالقيم الشاذة، يكون البديل القائم على الرتب لتحليل التباين الأحادي هو kruskal.test(weight ~ group, data = PlantGrowth)، وهو شقيق wilcox.test() للمجموعات المتعددة. وهو سطر واحد يقايض بعض القوة الإحصائية بالمتانة.
الخلاصة
- يطرح تحليل التباين سؤالًا واحدًا عن متوسطات 3 مجموعات فأكثر بقيمة p واحدة، وهو علاج تعدد اختبارات t.
- الصيغة
fit <- aov(y ~ group, data = df); summary(fit)، ويجب أن يكون متغير التجميع عاملًا. - قيمة F هي إشارة ما بين المجموعات على ضوضاء ما داخلها، وصغر
Pr(>F)يعني "ثمة فرق ما في مكان ما" لا أكثر. - تجد
TukeyHSD(fit)أي الأزواج يختلف، مع تصحيح المقارنات المتعددة مدمجًا فيها. - تعاير
a * bعاملين مع تفاعلهما، والتفاعل المعنوي يعني أن التأثيرات الرئيسية لا تروي القصة وحدها. - افحص تساوي التباينات (
bartlett.test) وطبيعية البواقي، وkruskal.test()هو البديل القائم على الرتب.
في المستند التالي: الانتقال من مقارنة متوسطات المجموعات إلى نمذجة علاقة، أي الانحدار الخطي بدالة lm().
الأسئلة الشائعة
كيف تجري تحليل تباين في R؟
عاير النموذج بـ aov() باستخدام صيغة، ثم اطبع الجدول بـ summary(): fit <- aov(weight ~ group, data = PlantGrowth); summary(fit). ويجب أن يكون متغير التجميع عاملًا، فإذا كان مخزَّنًا أرقامًا فغلّفه بـ factor() داخل الصيغة.
كيف تفسّر جدول تحليل التباين في R؟
قيمة F هي نسبة التباين بين المجموعات (Mean Sq للعامل) إلى التباين داخل المجموعات (Mean Sq للبواقي). وPr(>F) هي قيمة p: فإذا كانت صغيرة فإن متوسط مجموعة واحدة على الأقل يختلف عن البقية، لكن الجدول لا يقول أيها. شغّل TukeyHSD(fit) لمعرفة ذلك.
ماذا يفعل اختبار Tukey HSD في R؟
يختبر TukeyHSD(fit) كل زوج من المجموعات مع تصحيح لكونك تجري مقارنات كثيرة. ويعطي كل صف الفرق المقدَّر (diff) وفترة ثقة عائلية (lwr وupr) وقيمة p معدَّلة (p adj). والأزواج التي تستبعد فترتها الصفر تختلف اختلافًا معنويًا.
لماذا لا نجري عدة اختبارات t بدل تحليل التباين؟
لأن لكل اختبار t خطر إيجابية كاذبة خاصًا به، والمخاطر تتراكم. فمع 5 مجموعات ستحتاج إلى 10 اختبارات t زوجية، وعند عتبة 0.05 لكل منها يرتفع احتمال ظهور إيجابية كاذبة واحدة على الأقل إلى نحو 40%. أما تحليل التباين فيطرح سؤالًا شاملًا واحدًا أولًا، ثم يجري اختبار Tukey HSD المقارنات الزوجية مع ضبط معدل الخطأ ضبطًا سليمًا.