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


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

يوضح المثال التالي كيفية إجراء ANOVA ثلاثي الاتجاهات في Python.

مثال: تحليل التباين ثلاثي الاتجاه في بايثون

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

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

هدفه هو إجراء تحليل التباين ثلاثي الاتجاهات لتحديد كيفية تأثير برنامج التدريب والجنس والتقسيم على ارتفاع القفزة.

استخدم الخطوات التالية لإجراء ANOVA ثلاثي الاتجاهات في Python:

الخطوة 1: إنشاء البيانات

أولاً، لنقم بإنشاء إطار بيانات الباندا للاحتفاظ بالبيانات:

 import numpy as np
import pandas as pd

#createDataFrame
df = pd. DataFrame ({' program ': np.repeat ([1,2],20),
                   ' gender ': np. tile (np. repeat (['M', 'F'], 10), 2),
                   ' division ': np. tile (np. repeat ([1, 2], 5), 4),
                   ' height ': [7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
                              5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
                              6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
                              2, 2, 1, 4, 4, 2, 1, 1, 2, 1]})

#view first ten rows of DataFrame 
df[:10]

	program gender division height
0 1 M 1 7
1 1 M 1 7
2 1 M 1 8
3 1 M 1 8
4 1 M 1 7
5 1 M 2 6
6 1 M 2 6
7 1 M 2 5
8 1 M 2 6
9 1 M 2 5

الخطوة 2: إجراء تحليل التباين الثلاثي

بعد ذلك، يمكننا استخدام الدالة anova_lm() من مكتبة statsmodels لإجراء تحليل التباين الثلاثي:

 import statsmodels. api as sm
from statsmodels. formula . api import ols

#perform three-way ANOVA
model = ols("""height ~ C(program) + C(gender) + C(division) +
               C(program):C(gender) + C(program):C(division) + C(gender):C(division) +
               C(program):C(gender):C(division)""", data=df) .fit ()

sm. stats . anova_lm (model, typ= 2 )

	                          sum_sq df F PR(>F)
C(program) 3.610000e+01 1.0 6.563636e+01 2.983934e-09
C(gender) 6.760000e+01 1.0 1.229091e+02 1.714432e-12
C(division) 1.960000e+01 1.0 3.563636e+01 1.185218e-06
C(program):C(gender) 2.621672e-30 1.0 4.766677e-30 1.000000e+00
C(program):C(division) 4.000000e-01 1.0 7.272727e-01 4.001069e-01
C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
C(program):C(gender):C(division) 1.000000e-01 1.0 1.818182e-01 6.726702e-01
Residual 1.760000e+01 32.0 NaN NaN

الخطوة 3: تفسير النتائج

يعرض العمود Pr(>F) القيمة p لكل عامل على حدة والتفاعلات بين العوامل.

ومن النتائج يمكننا أن نرى أن أيا من التفاعلات بين العوامل الثلاثة لم تكن ذات دلالة إحصائية.

يمكننا أيضًا أن نرى أن كل عامل من العوامل الثلاثة (البرنامج والجنس والقسم) كان ذا دلالة إحصائية مع القيم الاحتمالية التالية:

  • قيمة البرنامج P: 0.00000000298
  • قيمة P للجنس : 0.00000000000171
  • قيمة القسمة P: 0.00000185

في الختام، يمكننا القول أن البرنامج التدريبي والجنس والتقسيم كلها مؤشرات هامة لزيادة ارتفاع القفز لدى اللاعبين.

ونود أن نقول أيضًا أنه لا توجد تأثيرات تفاعلية كبيرة بين هذه العوامل الثلاثة.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية ملاءمة نماذج ANOVA الأخرى في Python:

كيفية إجراء ANOVA أحادي الاتجاه في بايثون
كيفية إجراء ANOVA ثنائي الاتجاه في بايثون
كيفية تنفيذ التدابير المتكررة ANOVA في بيثون

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *