วิธีทำการทดสอบของ white ใน python (ทีละขั้นตอน)


การทดสอบของ White ใช้เพื่อพิจารณาว่า มีความต่างกัน ในแบบจำลองการถดถอยหรือไม่

Heteroscedasticity หมายถึงการกระจายตัวของ สารตกค้าง ที่ไม่สม่ำเสมอในระดับต่างๆ ของ ตัวแปรการตอบสนอง ซึ่งฝ่าฝืน สมมติฐาน ที่ว่าสารตกค้างจะกระจายเท่ากันในแต่ละระดับของตัวแปรตอบสนอง

ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีดำเนินการทดสอบของ White ใน Python เพื่อพิจารณาว่าความต่างกันเป็นปัญหาในแบบจำลองการถดถอยที่กำหนดหรือไม่

ขั้นตอนที่ 1: โหลดข้อมูล

ในตัวอย่างนี้ เราจะปรับ โมเดลการถดถอยเชิงเส้นหลายตัวให้พอดี โดยใช้ชุดข้อมูล mtcars

รหัสต่อไปนี้แสดงวิธีการโหลดชุดข้อมูลนี้ลงใน DataFrame ของแพนด้า:

 from sklearn. linear_model import LinearRegression
from statsmodels. stats . diagnostic import het_white
import statsmodels. api as sm
import pandas as pd

#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)

#view summary of data
data. info ()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 # Column Non-Null Count Dtype  
--- ------ -------------- -----  
 0 model 32 non-null object 
 1 mpg 32 non-null float64
 2 cyl 32 non-null int64  
 3 disp 32 non-null float64
 4 hp 32 non-null int64  
 5 drat 32 non-null float64
 6 wt 32 non-null float64
 7 qsec 32 non-null float64
 8 vs 32 non-null int64  
 9 am 32 non-null int64  
 10 gear 32 non-null int64  
 11 carb 32 non-null int64  
dtypes: float64(5), int64(6), object(1)

ขั้นตอนที่ 2: ติดตั้งโมเดลการถดถอย

ต่อไป เราจะปรับโมเดลการถดถอยโดยใช้ mpg เป็นตัวแปรตอบสนอง และใช้ disp และ hp เป็นตัวแปรทำนายสองตัว:

 #define response variable
y = data[' mpg ']

#define predictor variables
x = data[[' disp ', ' hp ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit regression model
model = sm. OLS (y,x). fit ()

ขั้นตอนที่ 3: ทำการทดสอบของ White

ต่อไป เราจะใช้ฟังก์ชัน het_white() จากแพ็คเกจ statsmodels เพื่อทำการทดสอบของ White เพื่อพิจารณาว่ามีความต่างกันในโมเดลการถดถอยหรือไม่:

 #perform White's test
white_test = het_white(model. resid , model. model . exog )

#define labels to use for output of White's test
labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value']

#print results of White's test
print (dict(zip(labels, white_test)))

{'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936,
 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • สถิติการทดสอบคือ X2 = 7.0766
  • ค่า p ที่สอดคล้องกันคือ 0.215

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

  • Null (H 0 ) : มี Homoskedasticity (ส่วนที่เหลือก็กระจัดกระจายเช่นกัน)
  • ทางเลือกอื่น ( HA ): มี Heteroskedasticity (สารตกค้างไม่กระจายตัวเท่ากัน)

เนื่องจากค่า p ไม่น้อยกว่า 0.05 เราจึงไม่สามารถปฏิเสธสมมติฐานว่างได้

ซึ่งหมายความว่าเราไม่มีหลักฐานเพียงพอที่จะอ้างว่ามีความต่างกันในแบบจำลองการถดถอย

จะทำอย่างไรต่อไป

หากคุณล้มเหลวในการปฏิเสธสมมติฐานว่างของการทดสอบของไวท์ จะไม่มีภาวะเฮเทอโรสเคดาสติก และคุณสามารถดำเนินการตีความผลลัพธ์ของการถดถอยดั้งเดิมได้

อย่างไรก็ตาม หากคุณปฏิเสธสมมติฐานว่าง นั่นหมายความว่ามีความไม่แน่นอนที่แตกต่างกัน ในกรณีนี้ ข้อผิดพลาดมาตรฐานที่แสดงในตารางผลลัพธ์การถดถอยอาจไม่น่าเชื่อถือ

มีสองวิธีทั่วไปในการแก้ไขปัญหานี้:

1. แปลงตัวแปรการตอบสนอง

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

2. ใช้การถดถอยแบบถ่วงน้ำหนัก

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

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับการถดถอยเชิงเส้นใน Python:

คู่มือฉบับสมบูรณ์เกี่ยวกับการถดถอยเชิงเส้นใน Python
วิธีสร้างพล็อตที่เหลือใน Python
วิธีการคำนวณ VIF ใน Python

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

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