เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ทำความเข้าใจค่า R-Squared ของการถดถอย

R-squared วัดว่าข้อมูลสอดคล้องกับเส้นถดถอยมากเพียงใด ดังนั้น R-squared ในการถดถอยอย่างง่ายจึงมีความสัมพันธ์กับค่าสหสัมพันธ์ระหว่างตัวแปรทั้งสอง กล่าวคือ ขนาดของสหสัมพันธ์คือรากที่สองของ R-squared และเครื่องหมายของสหสัมพันธ์จะเหมือนกับเครื่องหมายของสัมประสิทธิ์การถดถอย

ในแบบฝึกหัดนี้ จะได้เริ่มใช้แพ็กเกจทางสถิติอย่าง statsmodels ซึ่งรองรับการสร้างโมเดลทางสถิติและการทดสอบต่าง ๆ ที่มักพบใน R รวมถึงซอฟต์แวร์อย่าง SAS และ MATLAB

จะนำ Series สองชุดคือ x และ y มาคำนวณค่าสหสัมพันธ์ แล้วถดถอย y บน x โดยใช้ฟังก์ชัน OLS(y,x) ในไลบรารี statsmodels.api (โปรดสังเกตว่าตัวแปรตาม หรือตัวแปรฝั่งขวา y คืออาร์กิวเมนต์ตัวแรก) การถดถอยเชิงเส้นส่วนใหญ่จะมีค่าคงที่ซึ่งก็คือจุดตัดแกน (\(\small \alpha\) ในสมการ \(\small y_t=\alpha + \beta x_t + \epsilon_t\)) หากต้องการเพิ่มค่าคงที่ด้วยฟังก์ชัน OLS() จะต้องเพิ่มคอลัมน์ที่มีค่าเป็น 1 ทางด้านขวาของสมการถดถอย

โมดูล statsmodels.api ได้ถูก import ให้แล้วในชื่อ sm

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • คำนวณค่าสหสัมพันธ์ระหว่าง x และ y โดยใช้เมธอด .corr()
  • รันการถดถอย:
    • แปลง Series x ให้เป็น DataFrame ชื่อ dfx ก่อน
    • เพิ่มค่าคงที่โดยใช้ sm.add_constant() แล้วกำหนดผลลัพธ์ให้กับ dfx1
    • ถดถอย y บน dfx1 โดยใช้ sm.OLS().fit()
  • แสดงผลลัพธ์ของการถดถอย แล้วเปรียบเทียบค่า R-squared กับค่าสหสัมพันธ์

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import the statsmodels module
import statsmodels.api as sm

# Compute correlation of x and y
correlation = ___
print("The correlation between x and y is %4.2f" %(correlation))

# Convert the Series x to a DataFrame and name the column x
dfx = pd.DataFrame(x, columns=['x'])

# Add a constant to the DataFrame dfx
dfx1 = sm.add_constant(___)

# Regress y on dfx1
result = sm.OLS(___, ___).fit()

# Print out the results and look at the relationship between R-squared and the correlation above
print(result.summary())
แก้ไขและรันโค้ด