วิธีการทดสอบอัตราส่วนความน่าจะเป็นใน python
การทดสอบอัตราส่วนความน่าจะ เป็นจะเปรียบเทียบความดีของความพอดีของ แบบจำลองการถดถอย ที่ซ้อนกันสองตัว
โมเดลแบบซ้อน เป็นเพียงโมเดลที่ประกอบด้วยชุดย่อยของตัวแปรทำนายในโมเดลการถดถอยโดยรวม
ตัวอย่างเช่น สมมติว่าเรามีแบบจำลองการถดถอยต่อไปนี้ซึ่งมีตัวแปรทำนายสี่ตัว:
Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε
ตัวอย่างของโมเดลที่ซ้อนกันจะเป็นโมเดลต่อไปนี้ซึ่งมีตัวแปรทำนายดั้งเดิมเพียงสองตัวเท่านั้น:
Y = β 0 + β 1 x 1 + β 2 x 2 + ε
เพื่อตรวจสอบว่าแบบจำลองทั้งสองนี้มีความแตกต่างกันอย่างมีนัยสำคัญหรือไม่ เราสามารถทำการทดสอบอัตราส่วนความน่าจะเป็นที่ใช้สมมติฐานว่างและสมมติฐานทางเลือกต่อไปนี้:
H 0 : โมเดลเต็มและโมเดลแบบซ้อนเข้ากับข้อมูลได้ดีพอๆ กัน ดังนั้นคุณควร ใช้โมเดลที่ซ้อนกัน
HA : โมเดลเต็มเหมาะกับข้อมูลได้ดีกว่าโมเดลที่ซ้อนกันอย่างมาก ดังนั้นคุณต้อง ใช้เทมเพลตแบบเต็ม
หาก ค่า p ของการทดสอบต่ำกว่าระดับนัยสำคัญที่กำหนด (เช่น 0.05) เราก็สามารถปฏิเสธสมมติฐานว่างและสรุปได้ว่าแบบจำลองแบบเต็มมีความพอดีที่ดีกว่าอย่างมาก
ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีการทดสอบอัตราส่วนความน่าจะเป็นใน Python
ขั้นตอนที่ 1: โหลดข้อมูล
ในตัวอย่างนี้ เราจะแสดงวิธีปรับโมเดลการถดถอยสองแบบต่อไปนี้ใน Python โดยใช้ข้อมูลจากชุดข้อมูล mtcars :
รุ่นเต็ม: mpg = β 0 + β 1 ใช้ได้ + β 2 คาร์โบไฮเดรต + β 3 hp + β 4 สูบ
รุ่น: mpg = β 0 + β 1 ใช้ได้ + β 2 คาร์โบไฮเดรต
ขั้นแรก เราจะโหลดชุดข้อมูล:
from sklearn. linear_model import LinearRegression import statsmodels. api as sm import pandas as pd import scipy #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)
ที่เกี่ยวข้อง: วิธีอ่านไฟล์ CSV ด้วย Pandas
ขั้นตอนที่ 2: ติดตั้งโมเดลการถดถอย
ขั้นแรก เราจะปรับโมเดลให้เหมาะสมและคำนวณบันทึกความน่าจะเป็นของโมเดล:
#define response variable y1 = data['mpg'] #define predictor variables x1 = data[['disp', 'carb', 'hp', 'cyl']] #add constant to predictor variables x1 = sm. add_constant (x1) #fit regression model full_model = sm. OLS (y1,x1). fit () #calculate log-likelihood of model full_ll = full_model. llf print (full_ll) -77.55789711787898
ต่อไป เราจะปรับโมเดลที่ลดขนาดให้พอดีและคำนวณบันทึกความน่าจะเป็นของโมเดล:
#define response variable y2 = data['mpg'] #define predictor variables x2 = data[['disp', 'carb']] #add constant to predictor variables x2 = sm. add_constant (x2) #fit regression model reduced_model = sm. OLS (y2, x2). fit () #calculate log-likelihood of model reduced_ll = reduced_model. llf print (reduced_ll) -78.60301334355185
ขั้นตอนที่ 3: ทำการทดสอบบันทึกความน่าจะเป็น
ต่อไป เราจะใช้โค้ดต่อไปนี้เพื่อทำการทดสอบความน่าเชื่อถือ:
#calculate likelihood ratio Chi-Squared test statistic
LR_statistic = -2 * (reduced_ll-full_ll)
print (LR_statistic)
2.0902324513457415
#calculate p-value of test statistic using 2 degrees of freedom
p_val = scipy. stats . chi2 . sf (LR_statistic, 2)
print (p_val)
0.35165094613502257
จากผลลัพธ์ เราจะเห็นว่าสถิติการทดสอบไคสแควร์คือ 2.0902 และ ค่า p ที่สอดคล้องกันคือ 0.3517
เนื่องจากค่า p นี้ไม่น้อยกว่า 0.05 เราจึงไม่สามารถปฏิเสธสมมติฐานว่างได้
ซึ่งหมายความว่าโมเดลเต็มและโมเดลที่ซ้อนกันจะพอดีกับข้อมูลอย่างเท่าเทียมกัน ดังนั้นเราจึงต้องใช้แบบจำลองที่ซ้อนกัน เนื่องจากตัวแปรตัวทำนายเพิ่มเติมในแบบจำลองแบบเต็มไม่ได้ให้การปรับปรุงอย่างมีนัยสำคัญในความพอดี
ดังนั้นโมเดลสุดท้ายของเราจะเป็น:
mpg = β 0 + β 1 ที่มีอยู่ + β 2 คาร์โบไฮเดรต
หมายเหตุ : เราใช้ความเป็นอิสระ 2 องศาในการคำนวณค่า p เนื่องจากค่านี้แสดงถึงความแตกต่างในตัวแปรตัวทำนายทั้งหมดที่ใช้ระหว่างแบบจำลองทั้งสอง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับการใช้แบบจำลองการถดถอยใน Python:
คู่มือฉบับสมบูรณ์เกี่ยวกับการถดถอยเชิงเส้นใน Python
วิธีดำเนินการถดถอยพหุนามใน Python
วิธีการดำเนินการถดถอยโลจิสติกใน Python