วิธีทำการทดสอบ breusch-pagan ใน python


ในการวิเคราะห์การถดถอย เฮเท อโรสเคดาสติซิ ตีหมายถึงการกระจายตัวของสารตกค้างที่ไม่สม่ำเสมอ ที่แม่นยำยิ่งขึ้นคือกรณีที่มีการเปลี่ยนแปลงอย่างเป็นระบบในการกระจายของสารตกค้างในช่วงของค่าที่วัดได้

ความเป็นเฮเทอโรสซิดาสติกเป็นปัญหาเนื่องจากการถดถอยกำลังสองน้อยที่สุดสามัญ (OLS) ถือว่าส่วนที่เหลือมาจากประชากรที่มี ภาวะโฮโมสซิดาสติก ซึ่งหมายถึงความแปรปรวนคงที่

เมื่อมีภาวะเฮเทอโรสซิดาสติกในการวิเคราะห์การถดถอย ผลลัพธ์ของการวิเคราะห์จึงเป็นเรื่องยากที่จะเชื่อได้

วิธีหนึ่งในการพิจารณาว่ามีภาวะเฮเทอโรสเคดา สติ กใน การวิเคราะห์การถดถอย หรือไม่คือการใช้ การทดสอบ Breusch-Pagan

บทช่วยสอนนี้จะอธิบายวิธีดำเนินการทดสอบ Breusch-Pagan ใน Python

ตัวอย่าง: การทดสอบ Breusch-Pagan ใน Python

สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูลต่อไปนี้ที่อธิบายคุณสมบัติของผู้เล่นบาสเก็ตบอล 10 คน:

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

เราจะปรับโมเดลการถดถอยเชิงเส้นหลายตัวโดยใช้การให้คะแนนเป็นตัวแปรตอบสนองและคะแนน แอสซิสต์และการรีบาวด์เป็นตัวแปรอธิบาย ต่อไป เราจะทำการทดสอบ Breusch-Pagan เพื่อตรวจสอบว่ามีการถดถอยแบบเฮเทอโรสเคดาสติกหรือไม่

ขั้นตอนที่ 1: ติดตั้งโมเดลการถดถอยเชิงเส้นพหุคูณ

อันดับแรก เราจะใส่โมเดลการถดถอยเชิงเส้นพหุคูณ:

 import statsmodels.formula.api as smf

#fit regression model
fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit ()

#view model summary
print (fit.summary())

ขั้นตอนที่ 2: ทำการทดสอบ Breusch-Pagan

ต่อไป เราจะทำการทดสอบ Breusch-Pagan เพื่อตรวจสอบว่ามีความต่างกันหรือไม่

 from statsmodels.compat import lzip
import statsmodels.stats.api as sms

#perform Bresuch-Pagan test
names = ['Lagrange multiplier statistic', 'p-value',
        'f-value', 'f p-value']
test = sms.het_breuschpagan(fit.resid, fit.model.exog)

lzip(names, test)

[('Lagrange multiply statistic', 6.003951995818433),
 ('p-value', 0.11141811013399583),
 ('f-value', 3.004944880309618),
 ('f p-value', 0.11663863538255281)]

การทดสอบ Breusch-Pagan ใช้สมมติฐานว่างและทางเลือกต่อไปนี้:

สมมติฐานว่าง (H 0 ): มี Homoscedasticity อยู่

สมมติฐานทางเลือก: (ฮา): ไม่มี ภาวะโฮโมสเคดาสติก (เช่น มีเฮเทอโรสเคดาสติก)

ในตัวอย่างนี้ สถิติตัวคูณลากรองจ์สำหรับการทดสอบคือ 6.004 และค่า p ที่สอดคล้องกันคือ 0.1114 เนื่องจากค่า p นี้ไม่น้อยกว่า 0.05 เราจึงไม่สามารถปฏิเสธสมมติฐานว่างได้ เราไม่มีหลักฐานเพียงพอที่จะอ้างว่ามีความต่างกันในแบบจำลองการถดถอย

วิธีแก้ไข Heteroscedasticity

ในตัวอย่างก่อนหน้านี้ เราเห็นว่าไม่มีความต่างกันในแบบจำลองการถดถอย

อย่างไรก็ตาม เมื่อมีความต่างขั้วเกิดขึ้นจริง มีวิธีทั่วไปสามวิธีในการแก้ไขสถานการณ์:

1. แปลงตัวแปรตาม วิธีหนึ่งในการแก้ไขความแตกต่างแบบเฮเทอโรสเคดาสติกคือการแปลงตัวแปรตามด้วยวิธีใดวิธีหนึ่ง การแปลงทั่วไปคือเพียงนำบันทึกของตัวแปรตามมา

2. กำหนดตัวแปรตามใหม่ อีกวิธีหนึ่งในการแก้ไขความแตกต่างคือการกำหนดตัวแปรตามใหม่ วิธีทั่วไปในการทำเช่นนี้คือการใช้ อัตรา สำหรับตัวแปรตาม แทนที่จะเป็นค่าดิบ

3. ใช้การถดถอยแบบถ่วงน้ำหนัก อีกวิธีหนึ่งในการแก้ไขความแตกต่างแบบเฮเทอโรสซีดาสติกคือการใช้การถดถอยแบบถ่วงน้ำหนัก การถดถอยประเภทนี้จะกำหนดน้ำหนักให้กับจุดข้อมูลแต่ละจุดโดยพิจารณาจากความแปรปรวนของค่าที่พอดี เมื่อใช้ตุ้มน้ำหนักที่เหมาะสม สิ่งนี้สามารถขจัดปัญหาเรื่องความแตกต่างได้

อ่านรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละวิธีทั้งสามวิธีใน บทความนี้

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

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