วิธีทำการทดสอบ 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. สำหรับความสัมพันธ์ตามฤดูกาล ให้พิจารณาเพิ่มหุ่นจำลองตามฤดูกาลให้กับโมเดล