همبستگی (Correlation) رابطه بین دو متغیر را اندازه می‌گیرد. گفتیم که یک تابع قصد پیش‌بینی یک مقدار را با تبدیل مقدار ورودی (متغیر x) به مقدار خروجی (f(x)) دارد. همچنین می‌توانیم این را اینگونه بازگو کنیم که تابع از رابطه‌ی موجود بین دو متغیر استفاده می‌کند تا پیش‌بینی را انجام دهد.

ضریب همبستگی

ضریب همبستگی (Correlation Coefficient) رابطه بین دو متغیر را اندازه‌گیری می‌نماید. ضریب همبستگی هرگز نمی‌تواند کمتر از 1- و یا 1 باشد.

  • اگر ضریب همبستگی 1 باشد؛ یک رابطه‌ی کامل خطی بین متغیرها وجود دارد (مثل متوسط ضربان قلب در برابر مصرف کالری)
  • اگر ضریب همبستگی 0 باشد؛ هیچ رابطه‌ی خطی مابین متغیرها وجود ندارد
  • اگر ضریب همبستگی 1- باشد؛ یک رابطه‌ی کامل منفی (معکوس) بین متغیرها وجود دارد (بعنوان مثال ساعت کاری کمتر منجر به مصرف کالری بیشتر در طول یک جلسه تمرینی خواهد شد. در ادامه بیشتر در رابطه با این موضوع صحبت خواهیم کرد)

مثالی از یک رابطه‌ی کامل خطی (ضریب همبستگی 1 است)

در ادامه از پراکنش‌نگار (Scatterplot) به منظور نشان دادن رابطه بین دو متغیر متوسط ضربان قلب و مصرف کالری خواهیم پرداخت (در اینجا از دیتاست سلامت که تنها 10 مشاهده دارد استفاده کرده‌ایم). از کد زیر قبلن یکبار استفاده کرده‌ایم. تنها تفاوت در اینجا تغییر نوع از خطی به پراکنده (scatter) هست.

مثال:

import matplotlib.pyplot as plt

health_data.plot(x ='Average_Pulse', y='Calorie_Burnage', kind='scatter')
plt.show()

خروجی کد فوق برابر است با:

همان‌گونه که در دروس قبل نیز مشاهده کردیم، یک رابطه‌ی خطی بین دو متغیر متوسط ضربان قلب و مصرف کالری موجود است.

مثالی از یک رابطه‌ی کامل منفی (ضریب همبستگی 1- است)

کار را با اجرای کد زیر و سپس تحلیل نمودار حاصل آغاز می‌کنیم.

مثال:

import pandas as pd
import matplotlib.pyplot as plt

#we make a dictionary first
negative_corr = {'Hours_Work_Before_Training': [10,9,8,7,6,5,4,3,2,1], 'Calorie_Burnage': [220,240,260,280,300,320,340,360,380,400]}

#turn our dictionary into a Pandas DataFrame
negative_corr = pd.DataFrame(data=negative_corr)
negative_corr.plot(x ='Hours_Work_Before_Training', y='Calorie_Burnage', kind='scatter')
plt.show()

نتیجه اجرای کد فوق، نمودار زیر می‌باشد:

ما در این مثال اقدام به رسم یک دیتاست ساختگی کردیم. محور x نشان دهنده‌ی میزان ساعات کاری در شغل ما قبل از جلسه‌ی تمرینی است و محور y، میزان مصرف کالری را نشان می‌دهد. اگر ما ساعات بیشتری را کار کنیم، میزان مصرف کالری در طول تمرین کمتر خواهد شد، چون ما قبل از شروع تمرین کاملن خسته شده‌ایم و دیگر رمقی برای انجام درست تمرینات ورزشی نداریم. در این مثال ضریب همبستگی -1 است، یعنی دو متغیر کاملن در جهت عکس هم تغییر می‌کنند. به بیانی دیگر اگر یکی از آنها کم شود، دیگری بالا خواهد رفت.

مثالی که نشان دهنده‌ی هیچ‌گونه رابطه‌ی خطی نیست (ضریب همبستگی 0 است)

مثال:

import matplotlib.pyplot as plt

full_health_data.plot(x ='Duration', y='Max_Pulse', kind='scatter')
plt.show()

نتیجه‌ی اجرای کد فوق شکل زیر خواهد بود:

در این مثال ما ماکسیمم ضربان را در برابر طول تمرین (Duration) از دیتاست کامل سلامت رسم کردیم. همان‌گونه که در شکل مشاهده می‌نمائید، هیچ رابطه‌ی خطی بین دو متغیر وجود ندارد. نتیجه می‌گیریم که ساعات تمرینی بیشتر منجر به بیشتر شدن ماکسیمم ضربان قلب نخواهد شد. یعنی اگر مقدار متغیر Duration، بالا رود لزومی ندارد که مقدار Max_Pulse نیز بالا و یا حتی پائین بیاید.