ทำความเข้าใจค่า 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()
- แปลง Series
- แสดงผลลัพธ์ของการถดถอย แล้วเปรียบเทียบค่า 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())