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


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

วิธีหนึ่งในการพิจารณาว่าเป็นไปตามสมมติฐานนี้หรือไม่คือทำการ ทดสอบ Durbin–Watson ซึ่งใช้ในการตรวจจับการมีอยู่ของความสัมพันธ์อัตโนมัติในส่วนที่เหลือของ การถดถอย การทดสอบนี้ใช้สมมติฐานต่อไปนี้:

H 0 (สมมติฐานว่าง): ไม่มีความสัมพันธ์กันระหว่างสิ่งตกค้าง

H A (สมมติฐานทางเลือก): สารตกค้างมีความสัมพันธ์แบบอัตโนมัติ

สถิติการทดสอบมีค่าประมาณเท่ากับ 2*(1-r) โดยที่ r คือความสัมพันธ์อัตโนมัติของตัวอย่างที่เหลือ ดังนั้นสถิติการทดสอบจะอยู่ระหว่าง 0 ถึง 4 เสมอโดยมีการตีความดังต่อไปนี้:

  • สถิติการทดสอบ 2 บ่งชี้ว่าไม่มีความสัมพันธ์แบบอนุกรม
  • ยิ่งสถิติการทดสอบเข้าใกล้ 0 มากเท่าใด ก็ยิ่งมีหลักฐานที่แสดงถึงความสัมพันธ์แบบอนุกรมเชิงบวกมากขึ้นเท่านั้น
  • ยิ่งสถิติการทดสอบอยู่ใกล้ 4 มากเท่าใด ก็ยิ่งมีหลักฐานเกี่ยวกับความสัมพันธ์อนุกรมเชิงลบมากขึ้นเท่านั้น

โดยทั่วไปค่าสถิติการทดสอบระหว่าง 1.5 ถึง 2.5 ถือว่าเป็นเรื่องปกติ อย่างไรก็ตาม ค่าที่อยู่นอกช่วงนี้อาจบ่งชี้ว่าความสัมพันธ์อัตโนมัติเป็นปัญหา

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

ตัวอย่าง: การทดสอบ Durbin-Watson ใน 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

สมมติว่าเราปรับโมเดลการถดถอยเชิงเส้นหลายตัวโดยใช้ การให้คะแนน เป็นตัวแปรตอบสนอง และตัวแปรอีกสามตัวเป็นตัวแปรทำนาย:

 from statsmodels.formula.api import ols

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

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

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

 from statsmodels.stats.stattools import durbin_watson

#perform Durbin-Watson test
durbin_watson(model.resid)

2,392

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

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

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

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

2. สำหรับความสัมพันธ์แบบอนุกรมเชิงลบ ตรวจสอบให้แน่ใจว่าไม่มีตัวแปรใดของคุณ ล่าช้าเกินไป

3. สำหรับความสัมพันธ์ตามฤดูกาล ให้พิจารณาเพิ่มหุ่นจำลองตามฤดูกาลให้กับโมเดล

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

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