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


ข้อสันนิษฐานสำคัญประการหนึ่งของการถดถอยเชิงเส้น คือไม่มีความสัมพันธ์กันระหว่างค่าคงเหลือ กล่าวคือ ค่าตกค้างเป็นอิสระจากกัน

เพื่อทดสอบความสัมพันธ์อัตโนมัติลำดับที่หนึ่ง เราสามารถทำได้ การทดสอบ Durbin-Watson อย่างไรก็ตาม หากเราต้องการทดสอบความสัมพันธ์อัตโนมัติในลำดับที่สูงกว่า เราจำเป็นต้องทำการ ทดสอบ Breusch-Godfrey

การทดสอบนี้ใช้ สมมติฐาน ดังต่อไปนี้:

H 0 (สมมติฐานว่าง): ไม่มีความสัมพันธ์อัตโนมัติของคำสั่งซื้อที่น้อยกว่าหรือเท่ากับ p

H A (สมมติฐานทางเลือก): มีความสัมพันธ์อัตโนมัติของลำดับบางอย่างที่น้อยกว่าหรือเท่ากับ p

สถิติการทดสอบเป็นไปตามการแจกแจงไคสแควร์ที่มีดีกรีอิสระ p

หาก ค่า p ที่สอดคล้องกับสถิติการทดสอบนี้ต่ำกว่าระดับนัยสำคัญที่กำหนด (เช่น 0.05) เราก็สามารถปฏิเสธสมมติฐานว่างและสรุปได้ว่ามีความสัมพันธ์อัตโนมัติระหว่างค่าคงเหลือในลำดับที่ต่ำกว่าหรือเท่ากับ p

หากต้องการทำการทดสอบ Breusch-Godfrey ใน Python คุณสามารถใช้ฟังก์ชัน acorr_breusch_godfrey() จากไลบรารี statsmodels

ตัวอย่างทีละขั้นตอนต่อไปนี้อธิบายวิธีดำเนินการทดสอบ Breusch-Godfrey ใน Python

ขั้นตอนที่ 1: สร้างข้อมูล

ขั้นแรก เรามาสร้างชุดข้อมูลที่ประกอบด้วยตัวแปรทำนายสองตัว (x1 และ x2) และตัวแปรตอบสนอง (y)

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20],
                   ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19],
                    ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]})

#view first five rows of dataset
df. head ()

	x1 x2 y
0 3 7 24
1 4 7 25
2 4 8 25
3 5 8 27
4 8 12 29

ขั้นตอนที่ 2: ติดตั้งแบบจำลองการถดถอย

จากนั้นเราสามารถใส่ โมเดลการถดถอยเชิงเส้นหลายตัวได้ โดยใช้ x1 และ x2 เป็นตัวแปรทำนาย และ y เป็น ตัวแปรตอบสนอง

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

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

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

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

ต่อไป เราจะทำการทดสอบ Breusch-Godfrey เพื่อทดสอบความสัมพันธ์อัตโนมัติระหว่างส่วนที่เหลือตามลำดับ p ในตัวอย่างนี้ เราจะเลือก p = 3

 import statsmodels. stats . diagnosis as dg

#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))

(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)

ค่าแรกของผลลัพธ์แสดงถึงสถิติการทดสอบ และค่าที่สองแสดงถึงค่า p ที่สอดคล้องกัน

จากผลลัพธ์เราจะเห็นได้ดังนี้:

  • สถิติการทดสอบ X 2 = 8.7031
  • ค่า P = 0.0335

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

วิธีจัดการกับความสัมพันธ์อัตโนมัติ

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

  • สำหรับความสัมพันธ์แบบอนุกรมเชิงบวก ให้พิจารณาเพิ่มความล่าช้าของตัวแปรตามและ/หรือตัวแปรอิสระให้กับโมเดล
  • สำหรับความสัมพันธ์แบบอนุกรมเชิงลบ ตรวจสอบให้แน่ใจว่าไม่มีตัวแปรใด ล่าช้าเกินไป
  • สำหรับความสัมพันธ์ตามฤดูกาล ให้ลองเพิ่มหุ่นตามฤดูกาลให้กับโมเดล

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

คู่มือฉบับสมบูรณ์เกี่ยวกับการถดถอยเชิงเส้นใน Python
วิธีทำการทดสอบ Durbin-Watson ใน Python
วิธีดำเนินการทดสอบ Ljung-Box ใน Python

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

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