วิธีการคำนวณ r-squared ที่ปรับแล้วใน python


R-squared ซึ่งมักเขียน ว่า R2 คือสัดส่วนของความแปรปรวนใน ตัวแปรตอบสนอง ที่สามารถอธิบายได้ด้วยตัวแปรทำนายใน แบบจำลองการถดถอยเชิงเส้น

ค่าของ R กำลังสองสามารถอยู่ในช่วงตั้งแต่ 0 ถึง 1 ค่า 0 บ่งชี้ว่าตัวแปรตอบสนองไม่สามารถอธิบายได้ด้วยตัวแปรทำนายเลย ในขณะที่ค่า 1 บ่งชี้ว่าตัวแปรตอบสนองสามารถอธิบายได้ด้วยตัวแปรทำนาย ผู้ทำนายอธิบายได้ครบถ้วนไม่มีข้อผิดพลาด ตัวแปร

R-squared ที่ปรับปรุงแล้ว คือ R-squared เวอร์ชันแก้ไขที่ปรับตามจำนวนตัวทำนายในแบบจำลองการถดถอย มีการคำนวณดังนี้:

ปรับแล้ว R 2 = 1 – [(1-R 2 )*(n-1)/(nk-1)]

ทอง:

  • R 2 : R 2 ของรุ่น
  • n : จำนวนการสังเกต
  • k : จำนวนตัวแปรทำนาย

เนื่องจาก R2 จะเพิ่มขึ้นเสมอเมื่อคุณเพิ่มตัวทำนายให้กับโมเดล R2 ที่ปรับปรุงแล้วจึงสามารถใช้เป็นตัวชี้วัดที่บอกคุณว่าแบบจำลองนั้นมีประโยชน์เพียงใด โดยปรับตามจำนวนตัวทำนายในแบบจำลอง

บทช่วยสอนนี้แสดงสองตัวอย่างของการคำนวณ R2 ที่ปรับแล้วสำหรับโมเดลการถดถอยใน Python

ที่เกี่ยวข้อง: ค่า R-squared ที่ดีคืออะไร?

ตัวอย่างที่ 1: คำนวณ R-squared ที่ปรับแล้วด้วย sklearn

รหัสต่อไปนี้แสดงวิธีปรับโมเดลการถดถอยเชิงเส้นหลายตัวให้พอดี และคำนวณค่า R-squared ของโมเดลโดยใช้ sklearn:

 from sklearn. linear_model import LinearRegression
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data = pd. read_csv (url)

#fit regression model
model = LinearRegression ()
x, y = data[["mpg", "wt", "drat", "qsec"]], data.hp
model. fit (x,y)

#display adjusted R-squared
1 - (1-model. score (X, y))*( len (y)-1)/( len (y)-X. shape [1]-1)

0.7787005290062521

ค่า R-squared ที่ปรับแล้วของโมเดลกลายเป็น 0.7787

ตัวอย่างที่ 2: คำนวณค่า R-squared ที่ปรับปรุงแล้วด้วยแบบจำลองทางสถิติ

รหัสต่อไปนี้แสดงวิธีการปรับโมเดลการถดถอยเชิงเส้นหลายตัวให้พอดี และคำนวณค่า R-squared ของโมเดลโดยใช้แบบจำลองสถิติ:

 import statsmodels. api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv"

#read in data
data = pd. read_csv (url)

#fit regression model
x, y = data[["mpg", "wt", "drat", "qsec"]], data.hp
X = sm. add_constant (X)
model = sm. OLS (y,x). fit ()

#display adjusted R-squared
print ( model.rsquared_adj )

0.7787005290062521

ค่า R-squared ที่ปรับแล้วของโมเดลกลายเป็น 0.7787 ซึ่งตรงกับผลลัพธ์ของตัวอย่างก่อนหน้านี้

แหล่งข้อมูลเพิ่มเติม

วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน Python
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน Python
วิธีการคำนวณ AIC ของตัวแบบการถดถอยใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *