كيفية حساب الارتباط في بايثون


إحدى الطرق لقياس العلاقة بين متغيرين هي استخدام معامل ارتباط بيرسون ، وهو مقياس للارتباط الخطي بين متغيرين . يأخذ دائمًا قيمة بين -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

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في بايثون:

كيفية إنشاء مصفوفة الارتباط في بايثون
كيفية حساب ارتباط رتبة سبيرمان في بايثون
كيفية حساب الارتباط التلقائي في بايثون

Add a Comment

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