كيفية إجراء anova ثنائي الاتجاه في r


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

يشرح هذا البرنامج التعليمي كيفية إجراء ANOVA ثنائي الاتجاه في R.

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

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

يمكننا إجراء تحليل التباين (ANOVA) ثنائي الاتجاه لتحديد ما إذا كان التمرين والجنس يؤثران على فقدان الوزن ولتحديد ما إذا كان هناك تفاعل بين التمرين والجنس على فقدان الوزن.

نقوم بتجنيد 30 رجلاً و30 امرأة للمشاركة في تجربة نخصص فيها 10 من كل منهم بشكل عشوائي لمتابعة برنامج عدم ممارسة التمارين الرياضية أو التمارين الخفيفة أو برنامج التمارين المكثفة لمدة شهر.

الكود التالي ينشئ إطار البيانات الذي سنعمل معه:

 #make this example reproducible
set.seed(10)

#create data frame
data <- data.frame(gender = rep(c("Male", "Female"), each = 30),
                   exercise = rep(c("None", "Light", "Intense"), each = 10, times = 2),
                   weight_loss = c(runif(10, -3, 3), runif(10, 0, 5), runif(10, 5, 9),
                                   runif(10, -4, 2), runif(10, 0, 3), runif(10, 3, 8)))

#view first six rows of data frame
head(data)

# gender exercise weight_loss
#1 Male None 0.04486922
#2 Male None -1.15938896
#3 Male None -0.43855400
#4 Male None 1.15861249
#5 Male None -2.48918419
#6 Male None -1.64738030

#see how many participants are in each group
table(data$gender, data$exercise)

# Intense Light None
# Female 10 10 10
# Male 10 10 10

استكشف البيانات

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

 #load dplyr package
library(dplyr)

#find mean and standard deviation of weight loss for each treatment group
data %>%
  group_by (gender, exercise) %>%
  summarize (mean = mean(weight_loss),
            sd = sd(weight_loss))

# A tibble: 6 x 4
# Groups: gender [2]
# gender exercise means sd
#          
#1 Female Intense 5.31 1.02 
#2 Female Light 0.920 0.835
#3 Female None -0.501 1.77 
#4 Male Intense 7.37 0.928
#5 Male Light 2.13 1.22 
#6 Male None -0.698 1.12 

يمكننا أيضًا إنشاء مخطط مربع لكل مجموعة من مجموعات العلاج الست لتصور توزيع فقدان الوزن لكل مجموعة:

 #set margins so that axis labels on boxplot don't get cut off
by(mar=c(8, 4.1, 4.1, 2.1))

#create boxplots
boxplot(weight_loss ~ gender:exercise,
data = data,
main = "Weight Loss Distribution by Group",
xlab = "Group",
ylab = "Weight Loss",
col = "steelblue",
border = "black", 
las = 2 #make x-axis labels perpendicular
)

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

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

تركيب نموذج ANOVA ثنائي الاتجاه

بناء الجملة العام لتركيب نموذج ANOVA ثنائي الاتجاه في R هو:

aov (متغير الاستجابة ~predictor_variable1 *predictor_variable2، البيانات = مجموعة البيانات)

لاحظ أن * بين متغيري التوقع يشير إلى أننا نريد أيضًا اختبار تأثير التفاعل بين متغيري التوقع.

في مثالنا، يمكننا استخدام الكود التالي لملاءمة نموذج ANOVA ثنائي الاتجاه، باستخدام Weight_loss كمتغير الاستجابة والجنس والتمرين كمتغيرين متوقعين.

يمكننا بعد ذلك استخدام الدالة Summary() لعرض نتيجة نموذجنا:

 #fit the two-way ANOVA model
model <- aov(weight_loss ~ gender * exercise, data = data)

#view the model output
summary(model)

# Df Sum Sq Mean Sq F value Pr(>F)    
#gender 1 15.8 15.80 11.197 0.0015 ** 
#exercise 2 505.6 252.78 179.087 <2e-16 ***
#gender:exercise 2 13.0 6.51 4.615 0.0141 *  
#Residuals 54 76.2 1.41                   
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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

التحقق من افتراضات النموذج

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

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

2. الحالة الطبيعية – يجب أن يكون للمتغير التابع توزيع طبيعي تقريبًا لكل مجموعة من مجموعات العاملين.

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

 #define model residuals
reside <- model$residuals

#create histogram of residuals
hist(resid, main = "Histogram of Residuals", xlab = "Residuals", col = "steelblue")

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

3. التباين المتساوي – التباينات لكل مجموعة متساوية أو متساوية تقريبًا.

إحدى الطرق للتحقق من هذا الافتراض هي إجراء اختبار ليفين لمساواة التباينات باستخدام حزمة السيارة :

 #load car package
library(car)

#conduct Levene's Test for equality of variances
leveneTest(weight_loss ~ gender * exercise, data = data)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)
#group 5 1.8547 0.1177
#54  

نظرًا لأن القيمة p للاختبار أكبر من مستوى الأهمية لدينا وهو 0.05، يمكننا أن نفترض أن افتراضنا للمساواة في التباين بين المجموعات قد تم استيفاءه.

تحليل الاختلافات العلاجية

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

بالنسبة للاختبار اللاحق الخاص بنا، سنستخدم الدالة TukeyHSD() لإجراء اختبار Tukey لإجراء مقارنات متعددة:

 #perform Tukey's Test for multiple comparisons
TukeyHSD(model, conf.level=.95) 

#Tukey multiple comparisons of means
# 95% family-wise confidence level
#
#Fit: aov(formula = weight_loss ~ gender * exercise, data = data)
#
#$gender
# diff lwr upr p adj
#Male-Female 1.026456 0.4114451 1.641467 0.0014967
#
#$exercise
# diff lwr upr p adj
#Light-Intense -4.813064 -5.718493 -3.907635 0.0e+00
#None-Intense -6.938966 -7.844395 -6.033537 0.0e+00
#None-Light -2.125902 -3.031331 -1.220473 1.8e-06
#
#$`gender:exercise`
# diff lwr upr p adj
#Male:Intense-Female:Intense 2.0628297 0.4930588 3.63260067 0.0036746
#Female:Light-Female:Intense -4.3883563 -5.9581272 -2.81858535 0.0000000
#Male:Light-Female:Intense -3.1749419 -4.7447128 -1.60517092 0.0000027
#Female:None-Female:Intense -5.8091131 -7.3788841 -4.23934219 0.0000000
#Male:None-Female:Intense -6.0059891 -7.5757600 -4.43621813 0.0000000
#Female:Light-Male:Intense -6.4511860 -8.0209570 -4.88141508 0.0000000
#Male:Light-Male:Intense -5.2377716 -6.8075425 -3.66800066 0.0000000
#Female:None-Male:Intense -7.8719429 -9.4417138 -6.30217192 0.0000000
#Male:None-Male:Intense -8.0688188 -9.6385897 -6.49904786 0.0000000
#Male:Light-Female:Light 1.2134144 -0.3563565 2.78318536 0.2185439
#Female:None-Female:Light -1.4207568 -2.9905278 0.14901410 0.0974193
#Male:None-Female:Light -1.6176328 -3.1874037 -0.04786184 0.0398106
#Female:None-Male:Light -2.6341713 -4.2039422 -1.06440032 0.0001050
#Male:None-Male:Light -2.8310472 -4.4008181 -1.26127627 0.0000284
#Male:None-Female:None -0.1968759 -1.7666469 1.37289500 0.9990364

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

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

يمكننا أيضًا تصور فواصل الثقة 95% الناتجة عن اختبار Tukey باستخدام الدالة plot() في R:

 #set axis margins so labels don't get cut off
by(mar=c(4.1, 13, 4.1, 2.1))

#create confidence interval for each comparison
plot(TukeyHSD(model, conf.level=.95), las = 2)

الإبلاغ عن نتائج ANOVA ثنائية الاتجاه

وأخيراً يمكننا تقرير نتائج تحليل التباين الثنائي بطريقة تلخص النتائج:

تم إجراء ANOVA ثنائي الاتجاه لفحص آثار الجنس ( ذكر، أنثى) وبرنامج التمارين (لا شيء، خفيف، مكثف) على فقدان الوزن (يقاس بالجنيه). كان هناك تفاعل ذو دلالة إحصائية بين آثار الجنس وممارسة الرياضة على فقدان الوزن (F(2، 54) = 4.615، ع = 0.0141). تم إجراء اختبارات HSD الخاصة بـ Tukey.

بالنسبة للرجال، أدى برنامج التمارين المكثفة إلى فقدان الوزن بشكل أكبر بكثير من البرنامج الخفيف (P <0.0001) أو عدم وجود برنامج تمرين (P <0.0001). بالإضافة إلى ذلك، أدى اتباع نظام غذائي خفيف لدى الرجال إلى فقدان الوزن بشكل أكبر بكثير من عدم ممارسة أي نظام رياضي (P <0.0001).

بالنسبة للنساء، أدى برنامج التمارين المكثفة إلى فقدان الوزن بشكل أكبر بكثير من البرنامج الخفيف (P <0.0001) أو عدم وجود برنامج تمرين (P <0.0001).

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

Add a Comment

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