วิธีดำเนินการถดถอยโลจิสติกโดยใช้แบบจำลองทางสถิติ
โมดูล statsmodels ของ Python มีฟังก์ชันและคลาสที่หลากหลาย ซึ่งช่วยให้คุณสามารถปรับเปลี่ยนโมเดลทางสถิติต่างๆ ได้
ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีการ ถดถอยโลจิสติก โดยใช้ฟังก์ชัน statsmodels
ขั้นตอนที่ 1: สร้างข้อมูล
ขั้นแรก เรามาสร้าง DataFrame ของ pandas ที่มีตัวแปรสามตัว:
- จำนวนชั่วโมงที่ศึกษา (มูลค่าทั้งหมด)
- วิธีการศึกษา (วิธี A หรือ B)
- ผลสอบ (ผ่านหรือไม่ผ่าน)
เราจะปรับแบบจำลองการถดถอยลอจิสติกส์โดยใช้ชั่วโมงการศึกษาและวิธีการเรียนเพื่อคาดการณ์ว่านักเรียนจะผ่านการสอบที่กำหนดหรือไม่
รหัสต่อไปนี้แสดงวิธีการสร้าง DataFrame แพนด้า:
import pandas as pd #createDataFrame df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6, 5, 8, 8, 7, 6, 7, 5, 4, 8, 9], ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A', 'A', 'B', 'A', 'B', 'A']}) #view first five rows of DataFrame df. head () result hours method 0 0 1 A 1 1 2 A 2 0 2 A 3 0 2 B 4 0 3 B
ขั้นตอนที่ 2: ติดตั้งแบบจำลองการถดถอยโลจิสติก
ต่อไป เราจะปรับโมเดลการถดถอยโลจิสติกโดยใช้ฟังก์ชัน logit() :
import statsmodels. formula . api as smf
#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()
#view model summary
print ( model.summary ())
Optimization completed successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================
ค่าในคอลัมน์ coef ของเอาต์พุตบอกเราถึงการเปลี่ยนแปลงโดยเฉลี่ยของบันทึกโอกาสที่จะผ่านการสอบ
ตัวอย่างเช่น:
- การใช้วิธีเรียน B สัมพันธ์กับโอกาสที่จะสอบผ่านเพิ่มขึ้นเฉลี่ย 0.0875 เมื่อเปรียบเทียบกับการใช้วิธีเรียน A
- แต่ละชั่วโมงที่ศึกษาเพิ่มเติมสัมพันธ์กับการเพิ่มขึ้นของค่าเฉลี่ย 0.4909 ในอัตราเข้าสู่ระบบในการผ่านการสอบ
ค่าใน P>|z| คอลัมน์แสดงถึงค่า p สำหรับแต่ละสัมประสิทธิ์
ตัวอย่างเช่น:
- วิธีการศึกษามีค่า p เท่ากับ 0.934 เนื่องจากค่านี้ไม่น้อยกว่า 0.05 หมายความว่าไม่มีความสัมพันธ์ที่มีนัยสำคัญทางสถิติระหว่างชั่วโมงเรียนกับการที่นักเรียนสอบผ่านหรือไม่
- จำนวนชั่วโมงที่ศึกษามีค่า p-value เท่ากับ 0.045 เนื่องจากค่านี้น้อยกว่า 0.05 หมายความว่ามีความสัมพันธ์ที่มีนัยสำคัญทางสถิติระหว่างชั่วโมงเรียนกับการที่นักเรียนสอบผ่านหรือไม่
ขั้นตอนที่ 3: ประเมินประสิทธิภาพของโมเดล
ในการประเมินคุณภาพของแบบจำลองการถดถอยลอจิสติก เราสามารถดูเมตริกสองตัวในผลลัพธ์ได้:
1. ชื่อเล่น อาร์-สแควร์
ค่านี้ถือได้ว่าใช้แทนค่า R-squared สำหรับโมเดลการถดถอยเชิงเส้น
โดยคำนวณเป็นอัตราส่วนของฟังก์ชันความน่าจะเป็นของบันทึกที่ขยายสูงสุดจากโมเดลว่างต่อโมเดลเต็ม
ค่านี้สามารถอยู่ในช่วงตั้งแต่ 0 ถึง 1 โดยค่าที่สูงกว่าบ่งบอกถึงความพอดีของโมเดลที่ดีกว่า
ในตัวอย่างนี้ ค่า Pseudo R-squared คือ 0.1894 ซึ่งค่อนข้างต่ำ สิ่งนี้บอกเราว่าตัวแปรทำนายของโมเดลทำงานได้ไม่ดีนักในการทำนายค่าของตัวแปรตอบสนอง
2. ค่า P-LLR
ค่านี้ถือได้ว่าเป็นการทดแทนค่า p สำหรับ ค่า F โดยรวม ของแบบจำลองการถดถอยเชิงเส้น
หากค่านี้ต่ำกว่าเกณฑ์ที่กำหนด (เช่น α = 0.05) เราก็สามารถสรุปได้ว่าโมเดลโดยรวมนั้น “มีประโยชน์” และสามารถทำนายค่าของตัวแปรตอบสนองได้ดีกว่าเมื่อเปรียบเทียบกับโมเดลที่ไม่มีตัวแปรทำนาย
ในตัวอย่างนี้ ค่า p ของ LLR คือ 0.07375 ขึ้นอยู่กับระดับนัยสำคัญที่เราเลือก (เช่น 0.01, 0.05, 0.1) เราอาจสรุปหรือไม่ก็ได้ว่าแบบจำลองโดยรวมนั้นมีประโยชน์
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่นๆ ใน Python:
วิธีการถดถอยเชิงเส้นใน Python
วิธีการถดถอยลอการิทึมใน Python
วิธีดำเนินการถดถอยเชิงปริมาณใน Python