كيفية حساب الارتباط في بايثون
إحدى الطرق لقياس العلاقة بين متغيرين هي استخدام معامل ارتباط بيرسون ، وهو مقياس للارتباط الخطي بين متغيرين . يأخذ دائمًا قيمة بين -1 و1 حيث:
- يشير -1 إلى وجود علاقة خطية سلبية تمامًا بين متغيرين
- يشير 0 إلى عدم وجود علاقة خطية بين متغيرين
- يشير الشكل 1 إلى وجود علاقة خطية إيجابية تمامًا بين متغيرين
وكلما زاد معامل الارتباط عن الصفر، كلما كانت العلاقة بين المتغيرين أقوى.
يشرح هذا البرنامج التعليمي كيفية حساب الارتباط بين المتغيرات في بايثون.
كيفية حساب الارتباط في بايثون
لحساب الارتباط بين متغيرين في بايثون، يمكننا استخدام الدالة Numpy corrcoef() .
import numpy as np np.random.seed(100) #create array of 50 random integers between 0 and 10 var1 = np.random.randint(0, 10, 50) #create a positively correlated array with some random noise var2 = var1 + np.random.normal(0, 10, 50) #calculate the correlation between the two arrays np.corrcoef(var1, var2) [[ 1. 0.335] [ 0.335 1. ]]
ويمكن ملاحظة أن معامل الارتباط بين هذين المتغيرين هو 0.335 وهو ارتباط موجب.
بشكل افتراضي، تنتج هذه الدالة مصفوفة من معاملات الارتباط. إذا أردنا فقط إرجاع معامل الارتباط بين المتغيرين، فيمكننا استخدام الصيغة التالية:
np.corrcoef(var1, var2)[0,1] 0.335
لاختبار ما إذا كان هذا الارتباط ذو دلالة إحصائية، يمكننا حساب القيمة p المرتبطة بمعامل ارتباط بيرسون باستخدام الدالة Scipy pearsonr() ، التي ترجع معامل ارتباط بيرسون بالإضافة إلى القيمة p ثنائية الطرف.
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
معامل الارتباط هو 0.335 والقيمة p ثنائية الطرف هي 0.017 . وبما أن هذه القيمة p أقل من 0.05، فإننا نستنتج أن هناك علاقة ذات دلالة إحصائية بين المتغيرين.
إذا كنت تريد حساب الارتباط بين متغيرات متعددة في Pandas DataFrame، فيمكنك ببساطة استخدام الدالة .corr() .
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8 #calculate correlation coefficients for all pairwise combinations data.corr() ABC A 1.000000 -0.775567 -0.493769 B -0.775567 1.000000 0.000000 C -0.493769 0.000000 1.000000
وإذا كنت تريد فقط حساب الارتباط بين متغيرين محددين في DataFrame، فيمكنك تحديد المتغيرات:
data['A'].corr(data['B']) -0.775567
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في بايثون:
كيفية إنشاء مصفوفة الارتباط في بايثون
كيفية حساب ارتباط رتبة سبيرمان في بايثون
كيفية حساب الارتباط التلقائي في بايثون