วิธีดำเนินการถดถอยโลจิสติกโดยใช้แบบจำลองทางสถิติ


โมดูล 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

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

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