در این درس در خصوص ضریب تعیین و ضریب تعیین تعدیل شده صحبت خواهیم نمود.

ضریب تعیین (R-Squared)

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

مقدار ضریب تعیین همواره بین ۰ و ۱ است (%0 تا %100). اما ضریب تعیین را بشکل زیر برای خود تفسیر می‌نمائیم:

  • یک ضریب تعیین بالا به این معنی است که داده‌های زیادی از دیتاست ما نزدیک به خط تابع رگرسیون هستند
  • یک ضریب تعیین پائین، به این معنی است گه خط رگرسیون بخوبی روی داده‌ها فیت نشده است

مثال تصویری از یک ضریب تعیین کوچک

مدل رگرسیون ما ضریب تعیین صفر (0.000) را نمایش می‌دهد که به معنی خوب فیت نشدن خط رگرسیون با داده‌هاست. این رویداد را می‌توانیم با رسم خط رگرسیون از بین نقاط متوسط ضربان قلب و مصرف کالری (در صفحه‌ی دوبعدی) نشان دهیم. بشکل زیر دقت کنید:

مثالی از یک ضریب تعیین کوچک

مثال تصویری از یک ضریب تعیین بزرگ (0.79)

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

مثالی از یک ضریب تعیین بالا

در مثال زیر کد پایتون شکل فوق را می‌بینیم.

مثال:

import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

full_health_data = pd.read_csv("data.csv", header=0, sep=",")

x = full_health_data["Duration"]
y = full_health_data ["Calorie_Burnage"]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
 return slope * x + intercept

mymodel = list(map(myfunc, x))

print(mymodel)

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Duration")
plt.ylabel ("Calorie_Burnage")

plt.show()

خلاصه: پیش‌بینی مصرف کالری با توجه به متوسط ضربان قلب

چگونه می‌توانیم عملکرد تابع رگرسیون را با «متوسط ضربان قلب» بعنوان متغییر توصیفی، خلاصه نمائیم؟ در فهرست زیر سه مورد بسیار مهم که با توجه به جدول فوق بدست می‌آید را بطور خلاصه، تحلیل می‌کنیم.

  • ضریب 0.3296 نشان می‌دهد که متوسط ضربان قلب تاثیر بسیار کمی روی مصرف کالری دارد
  • p-مقدار بالا (0.824) به این معنی است که ما نمی‌توانیم نتیجه بگیریم ارتباطی بین متوسط ضربان قلب و مصرف کالری وجود دارد
  • ضریب تعیین صفر به این معنی است که رگرسیون خطی بخوبی روی داده‌ها فیت نمی‌شود