วิธีดำเนินการทดสอบ 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