كيفية العثور على قيمة p لمعامل الارتباط في الباندا


يمكن استخدام معامل ارتباط بيرسون لقياس الارتباط الخطي بين متغيرين.

يأخذ معامل الارتباط هذا دائمًا قيمة تتراوح بين -1 و 1 حيث:

  • -1 : الارتباط الخطي السلبي التام بين متغيرين.
  • 0 : لا يوجد ارتباط خطي بين متغيرين.
  • 1: الارتباط الخطي الإيجابي التام بين متغيرين.

لتحديد ما إذا كان معامل الارتباط ذو دلالة إحصائية، يمكنك حساب درجة t والقيمة p المقابلة.

صيغة حساب درجة t لمعامل الارتباط (r) هي:

ر = ص√ ن-2 / √ 1-ص 2

يتم حساب القيمة p باعتبارها القيمة p المقابلة ثنائية الطرف لتوزيع t مع درجات الحرية n-2.

لحساب القيمة p لمعامل ارتباط بيرسون في الباندا، يمكنك استخدام الدالة pearsonr() من مكتبة SciPy :

 from scipy. stats import pearsonr

pearsonr(df[' column1 '], df[' column2 '])

ستعيد هذه الدالة معامل ارتباط بيرسون بين العمودين column1 و column2 بالإضافة إلى القيمة p المقابلة التي تخبرنا ما إذا كان معامل الارتباط ذو دلالة إحصائية أم لا.

إذا كنت تريد حساب القيمة p لمعامل ارتباط بيرسون لكل مجموعة زوجية محتملة من الأعمدة في DataFrame، فيمكنك استخدام الدالة المخصصة التالية للقيام بذلك:

 def r_pvalues(df):
    cols = pd. DataFrame (columns= df.columns )
    p = cols. transpose (). join (cols, how=' outer ')
    for r in df. columns :
        for c in df. columns :
            tmp = df[df[r]. notnull () & df[c]. notnull ()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

توضح الأمثلة التالية كيفية حساب القيم الاحتمالية لمعاملات الارتباط عمليًا مع الباندا DataFrame التالية:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x ': [4, 5, 5, 7, 8, 10, 12, 13, 14, 15],
                   ' y ': [10, 12, 14, 18, np.nan, 19, 13, 20, 14, np.nan],
                   ' z ': [20, 24, 24, 23, 19, 15, 18, 14, 10, 12]})

#view DataFrame
print (df)

    X Y Z
0 4 10.0 20
1 5 12.0 24
2 5 14.0 24
3 7 18.0 23
4 8 NaN 19
5 10 19.0 15
6 12 13.0 18
7 13 20.0 14
8 14 14.0 10
9 15 NaN 12

مثال 1: حساب قيمة P لمعامل الارتباط بين عمودين في Pandas

يوضح التعليمة البرمجية التالية كيفية حساب معامل ارتباط بيرسون والقيمة p المقابلة لأعمدة x و y في DataFrame:

 from scipy. stats import pearsonr

#drop all rows with NaN values
df_new = df. dropna ()

#calculation correlation coefficient and p-value between x and y
pearsonr(df_new[' x '], df_new[' y '])

PearsonRResult(statistic=0.4791621985883838, pvalue=0.22961622926360523)

ومن النتيجة يمكننا أن نرى:

  • معامل ارتباط بيرسون هو 0.4792 .
  • القيمة p المقابلة هي 0.2296 .

وبما أن معامل الارتباط موجب، فهذا يشير إلى وجود علاقة خطية موجبة بين المتغيرين.

ومع ذلك، بما أن القيمة p لمعامل الارتباط لا تقل عن 0.05، فإن الارتباط ليس ذا دلالة إحصائية.

لاحظ أنه يمكننا أيضًا استخدام الصيغة التالية لاستخراج القيمة p من معامل الارتباط:

 #extract p-value of correlation coefficient
pearsonr(df_new[' x '], df_new[' y '])[1]

0.22961622926360523

القيمة p لمعامل الارتباط هي 0.2296 .

وهذا يطابق القيمة p من الإخراج السابق.

مثال 2: حساب قيمة P لمعامل الارتباط بين جميع الأعمدة في Pandas

يوضح التعليمة البرمجية التالية كيفية حساب معامل ارتباط بيرسون والقيمة p المقابلة لكل مجموعة زوجية من الأعمدة في pandas DataFrame:

 #create function to calculate p-values for each pairwise correlation coefficient
def r_pvalues(df):
    cols = pd. DataFrame (columns= df.columns )
    p = cols. transpose (). join (cols, how=' outer ')
    for r in df. columns :
        for c in df. columns :
            tmp = df[df[r]. notnull () & df[c]. notnull ()]
            p[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)
    return p

#use custom function to calculate p-values
r_pvalues(df)

             X Y Z
x 0.0 0.2296 0.0005
y 0.2296 0.0 0.4238
z 0.0005 0.4238 0.0

ومن النتيجة يمكننا أن نرى:

  • القيمة p لمعامل الارتباط بين x و y هي 0.2296 .
  • القيمة p لمعامل الارتباط بين x و z هي 0.0005 .
  • القيمة p لمعامل الارتباط بين y و z هي 0.4238 .

لاحظ أننا قمنا بتقريب القيم الاحتمالية إلى أربع منازل عشرية في وظيفتنا المخصصة.

لا تتردد في استبدال الرقم 4 الموجود في السطر الأخير من الدالة برقم مختلف لتقريبه إلى عدد مختلف من المنازل العشرية.

ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة SciPy pearsonr() هنا .

مصادر إضافية

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

كيفية حساب الارتباط حسب المجموعة في الباندا
كيفية حساب الارتباط المنزلق في الباندا
كيفية حساب ارتباط رتبة سبيرمان في الباندا

Add a Comment

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