วิธีการทดสอบอัตราส่วนความน่าจะเป็นใน 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

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

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