كيفية إجراء تحليل التباين (ancova) في r


يقدم هذا البرنامج التعليمي مثالاً لكيفية إجراء تحليل التباين (ANCOVA) في R.

مثال: تحليل التباين (ANCOVA) في R

سنقوم بإجراء تحليل التباين (ANCOVA) لاختبار ما إذا كان أسلوب الدراسة له تأثير على نتائج الامتحان أم لا باستخدام المتغيرات التالية:

  • الدراسة الفنية : المتغير المستقل الذي نرغب في تحليله
  • درجة الطالب الحالية : المتغير المشترك الذي نرغب في أخذه بعين الاعتبار
  • نقاط المراجعة : متغيرات الاستجابة التي نريد تحليلها

تحتوي مجموعة البيانات التالية على معلومات عن 90 طالبًا مقسمين عشوائيًا إلى ثلاث مجموعات مكونة من 30 طالبًا.

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

 #make this example reproducible
set.seed(10)

#create dataset
data <- data.frame(technique = rep(c("A", "B", "C"), each = 30),
                   current_grade = runif(90, 65, 95),
                   exam = c(runif(30, 80, 95), runif(30, 70, 95), runif(30, 70, 90)))

#view first six lines of dataset
head(data)

# technical current_grade exam
#1 A 80.22435 87.32759
#2 A 74.20306 90.67114
#3 A 77.80723 88.87902
#4 A 85.79306 87.75735
#5 A 67.55408 85.72442
#6 A 71.76310 92.52167

الخطوة 1: استكشاف البيانات

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

أولاً، يمكننا عرض ملخص لكل متغير في مجموعة البيانات:

 summary(data)

# technical current_grade exam      
#A:30 Min. :65.43 Min. :71.17  
# B:30 1st Qu.:71.79 1st Qu.:77.27  
# C:30 Median:77.84 Median:84.69  
# Mean:78.15 Mean:83.38  
# 3rd Qu.:83.65 3rd Qu.:89.22  
# Max. :93.84 Max. :94.76  

يمكننا أن نرى أن كل قيمة تقنية الدراسة ( أ، ب ، ج) تظهر 30 مرة في البيانات.

يمكننا أيضًا أن نرى كيف تم توزيع درجات الطلاب الحالية في بداية الدراسة. وكان الحد الأدنى للدرجات في الفصل 65.43، والحد الأقصى 93.84، والمعدل 78.15.

وبالمثل، يمكننا أن نرى أن الحد الأدنى من الدرجات التي تم الحصول عليها في الامتحان كان 71.17، وكان الحد الأقصى للدرجات 94.76 وكان المتوسط 83.38.

ثم يمكننا استخدام حزمة dplyr للعثور بسهولة على المتوسط والانحراف المعياري للدرجات الحالية ونتائج الامتحانات لكل أسلوب دراسة:

 #load dplyr
library(dplyr)

data %>%
  group_by (technical) %>%
  summarize (mean_grade = mean(current_grade),
            sd_grade = sd(current_grade),
            mean_exam = mean(exam),
            sd_exam = sd(exam))

# A tibble: 3 x 5
# technique mean_grade sd_grade mean_exam sd_exam                      
#1 A 79.0 7.00 88.5 3.88
#2 B 78.5 8.33 81.8 7.62
#3 C 76.9 8.24 79.9 5.71

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

يمكننا أيضًا أن نرى أن متوسط درجات الامتحان أعلى بكثير للطلاب الذين استخدموا أسلوب الدراسة (أ) مقارنةً بالتقنيات (ب) و (ج) .

يمكننا أيضًا تصور توزيع نتائج الامتحانات بناءً على تقنية الدراسة باستخدام boxplots :

 boxplot(exam ~ technique,
data = data,
main = "Exam Score by Studying Technique",
xlab = "Studying Technique",
ylab = "Exam Score",
col = "steelblue",
border = "black"
)

وبالمثل، يمكننا أيضًا استخدام boxplots لتصور توزيع الدرجات الحالية بناءً على تقنية الدراسة:

 boxplot(current_grade ~ technical,
data = data,
main = "Current Grade by Studying Technique",
xlab = "Studying Technique",
ylab = "Current Grade",
col = "steelblue",
border = "black"
)

الخطوة 2: التحقق من افتراضات النموذج

بمجرد قيامنا ببعض استكشاف البيانات الأساسية والتعرف على البيانات، نحتاج إلى التحقق من استيفاء الافتراضات التالية لتحليل التباين (ANCOVA):

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

للتحقق من أن المتغير المشترك والعلاج مستقلان، يمكننا إجراء تحليل التباين (ANOVA) باستخدام الدرجة الحالية كمتغير الاستجابة وتقنية الدراسة كمتغير متوقع:

 #fit anova model
anova_model <- aov(current_grade ~ technique, data = data)
#view summary of anova model
summary(anova_model)

# Df Sum Sq Mean Sq F value Pr(>F)
#technical 2 74 37.21 0.599 0.552
#Residuals 87 5406 62.14    

القيمة p أكبر من 0.05، وبالتالي فإن المتغير المشترك ( الدرجة الحالية) والعلاج ( تقنية الدراسة ) يبدوان مستقلين.

ومن ثم، للتأكد من وجود تجانس التباين بين المجموعات، يمكننا إجراء اختبار ليفين:

 #load car library to conduct Levene's Test
libary(car)

#conduct Levene's Test
leveneTest(technical exam, data = data)

#Levene's Test for Homogeneity of Variance (center = median)
# Df F value Pr(>F)    
#group 2 9.4324 0.0001961 ***
#87   

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

الخطوة 3: ضبط نموذج تحليل التباين (ANCOVA).

بعد ذلك، سوف نلائم نموذج تحليل التباين المشترك (ANCOVA) باستخدام درجة الامتحان كمتغير الاستجابة، وتقنية الدراسة كمتغير متنبئ (أو “علاج”)، والدرجة الحالية كمتغير مشترك.

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

 #load car library
library(car)

#fit ANCOVA model
ancova_model <- aov(exam ~ technique + current_grade, data = data)

#view summary of model
Anova(ancova_model, type="III") 

#Answer: exam
# Sum Sq Df F value Pr(>F)    
#(Intercept) 7161.2 1 201.4621 < 2.2e-16 ***
#technical 1242.9 2 17.4830 4.255e-07 ***
#current_grade 12.3 1 0.3467 0.5576    
#Residuals 3057.0 86         

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

الخطوة 4: اختبار ما بعد المخصص

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

للقيام بذلك، يمكننا استخدام الدالة glht()‎ في حزمة multicomp في R لإجراء اختبار Tukey لإجراء مقارنات متعددة:

 #load the multcomp library
library(multicomp)

#fit the ANCOVA model
ancova_model <- aov(exam ~ technique + current_grade, data = data)

#define the post hoc comparisons to make
postHocs <- glht(ancova_model, linfct = mcp(technique = "Tukey"))

#view a summary of the post hoc comparisons
summary(postHocs)

#Multiple Comparisons of Means: Tukey Contrasts
#
#Fit: aov(formula = exam ~ technique + current_grade, data = data)
#
#Linear Assumptions:
#Estimate Std. Error t value Pr(>|t|)    
#B - A == 0 -6.711 1.540 -4.358 0.000109 ***
#C - A == 0 -8.736 1.549 -5.640 < 1e-04 ***
#C - B == 0 -2.025 1.545 -1.311 0.393089    

#view the confidence intervals associated with the multiple comparisons
confint(postHocs)

# Simultaneous Confidence Intervals
#
#Multiple Comparisons of Means: Tukey Contrasts
#
#Fit: aov(formula = exam ~ technique + current_grade, data = data)
#
#Quantile = 2.3845
#95% family-wise confidence level
#
#Linear Assumptions:
# Estimate lwr upr     
#B - A == 0 -6.7112 -10.3832 -3.0392
#C - A == 0 -8.7364 -12.4302 -5.0426
#C - B == 0 -2.0252 -5.7091 1.6588

ومن النتيجة يمكننا أن نرى أن هناك فرق ذو دلالة إحصائية (عند α = 0.05) في نتائج الامتحان بين دراسة التقنية أ ودراسة التقنية ب (القيمة الاحتمالية: 0,000109) وكذلك بين التقنية أ والتقنية ج (قيمة p: <1e-04).

يمكننا أيضًا أن نرى أنه لا يوجد فرق ذو دلالة إحصائية (عند α = 0.05) بين التقنيات B و C. كما تدعم فترات الثقة بين التقنيات هذه النتائج.

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

Add a Comment

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