كيفية حساب الارتباط الجزئي في بايثون
في الإحصاء، نستخدم غالبًا معامل ارتباط بيرسون لقياس العلاقة الخطية بين متغيرين. ومع ذلك، في بعض الأحيان نريد أن نفهم العلاقة بين متغيرين مع التحكم في متغير ثالث .
على سبيل المثال، لنفترض أننا نريد قياس الارتباط بين عدد ساعات الدراسة للطالب ودرجة الاختبار النهائي، مع التحكم في الدرجة الحالية للطالب في الفصل الدراسي. وفي هذه الحالة يمكننا استخدام الارتباط الجزئي لقياس العلاقة بين ساعات الدراسة ودرجة الامتحان النهائي.
يشرح هذا البرنامج التعليمي كيفية حساب الارتباط الجزئي في بايثون.
مثال: الارتباط الجزئي في بايثون
لنفترض أن لدينا Pandas DataFrame التالي الذي يعرض الدرجة الحالية وإجمالي ساعات الدراسة ودرجة الاختبار النهائي لـ 10 طلاب:
import numpy as np import panda as pd data = {'currentGrade': [82, 88, 75, 74, 93, 97, 83, 90, 90, 80], 'hours': [4, 3, 6, 5, 4, 5, 8, 7, 4, 6], 'examScore': [88, 85, 76, 70, 92, 94, 89, 85, 90, 93], } df = pd.DataFrame(data, columns = ['currentGrade','hours', 'examScore']) df currentGrade hours examScore 0 82 4 88 1 88 3 85 2 75 6 76 3 74 5 70 4 93 4 92 5 97 5 94 6 83 8 89 7 90 7 85 8 90 4 90 9 80 6 93
لحساب الارتباط الجزئي بين الساعات و exampleScore أثناء التحكم في currentGrade ، يمكننا استخدام الدالة Partial_corr() من حزمة penguin ، والتي تستخدم الصيغة التالية:
جزئي_كور (بيانات، x، y، covar)
ذهب:
- البيانات: اسم إطار البيانات
- x، y: أسماء الأعمدة في إطار البيانات
- covar: اسم العمود المتغير في إطار البيانات (على سبيل المثال المتغير الذي تتحكم فيه)
إليك كيفية استخدام هذه الوظيفة في هذا المثال تحديدًا:
#install and import penguin package pip install penguin import penguin as pg #find partial correlation between hours and exam score while controlling for grade pg.partial_corr(data=df, x='hours', y='examScore', covar='currentGrade') n r CI95% r2 adj_r2 p-val BF10 power pearson 10 0.191 [-0.5, 0.73] 0.036 -0.238 0.598 0.438 0.082
ونلاحظ أن الارتباط الجزئي بين ساعات الدراسة ودرجة الامتحان النهائي هو 0.191 ، وهو ارتباط موجب صغير. ومع زيادة عدد ساعات الدراسة، تميل درجات الامتحانات أيضًا إلى الارتفاع، على افتراض أن الدرجة الحالية تظل ثابتة.
لحساب الارتباط الجزئي بين عدة متغيرات في وقت واحد، يمكننا استخدام الدالة .pcorr() :
#calculate all pairwise partial correlations, rounded to three decimal places
df.pcorr().round(3)
currentGrade hours examScore
currentGrade 1.000 -0.311 0.736
hours -0.311 1.000 0.191
examScore 0.736 0.191 1.000
وطريقة تفسير النتيجة هي كما يلي:
- الارتباط الجزئي بين الصف الحالي وساعات الدراسة هو -0.311 .
- العلاقة الجزئية بين الصف الحالي ودرجة الامتحان 0.736 .
- الارتباط الجزئي بين ساعات الدراسة ودرجة الامتحان 0.191 .