วิธีการคำนวณระยะทางของ cook ใน python


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

สูตรระยะทางของคุกคือ:

d i = (r i 2 / p*MSE) * (h ii / (1-h ii ) 2 )

ทอง:

  • r i คือ สาร ตกค้าง i
  • p คือจำนวนสัมประสิทธิ์ในแบบจำลองการถดถอย
  • MSE คือค่าคลาดเคลื่อนกำลังสองเฉลี่ย
  • h ii คือค่าเลเวอเรจ ที่ i

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

ยิ่งค่าระยะทางของคุกมากเท่าใด การสังเกตที่ได้รับก็จะยิ่งมีอิทธิพลมากขึ้นเท่านั้น

ตามกฎทั่วไป การสังเกตใดๆ ที่มีระยะห่างของแม่ครัวมากกว่า 4/n (โดยที่ n = การสังเกตทั้งหมด) จะถือว่ามีอิทธิพลอย่างมาก

บทช่วยสอนนี้ให้ตัวอย่างทีละขั้นตอนของวิธีคำนวณระยะทางของ Cook สำหรับโมเดลการถดถอยที่ระบุใน Python

ขั้นตอนที่ 1: ป้อนข้อมูล

ขั้นแรก เราจะสร้างชุดข้อมูลขนาดเล็กเพื่อใช้งานใน Python:

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x ': [8, 12, 12, 13, 14, 16, 17, 22, 24, 26, 29, 30],
                   ' y ': [41, 42, 39, 37, 35, 39, 45, 46, 39, 49, 55, 57]})

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

ต่อไป เราจะใส่ โมเดลการถดถอยเชิงเส้นอย่างง่าย :

 import statsmodels. api as sm

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

#define explanatory variable
x = df[' x ']

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

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

ขั้นตอนที่ 3: คำนวณระยะทำอาหาร

ต่อไป เราจะคำนวณระยะทางปรุงอาหารสำหรับการสังเกตแต่ละครั้งในแบบจำลอง:

 #suppress scientific notation
import numpy as np
n.p. set_printoptions (suppress= True )

#create instance of influence
influence = model. get_influence ()

#obtain Cook's distance for each observation
cooks = influence. cooks_distance

#display Cook's distances
print (cooks)

(array([0.368, 0.061, 0.001, 0.028, 0.105, 0.022, 0.017, 0. , 0.343,
        0. , 0.15 , 0.349]),
 array([0.701, 0.941, 0.999, 0.973, 0.901, 0.979, 0.983, 1. , 0.718,
        1. , 0.863, 0.713]))

ตามค่าเริ่มต้น ฟังก์ชัน cooks_distance() จะแสดงอาร์เรย์ของค่าสำหรับระยะทางของ Cook สำหรับการสังเกตแต่ละครั้ง ตามด้วยอาร์เรย์ของค่า p ที่สอดคล้องกัน

ตัวอย่างเช่น:

  • ระยะห่างของ Cook สำหรับการสังเกต #1: 0.368 (p-value: 0.701)
  • ระยะห่างของ Cook สำหรับการสังเกต #2: 0.061 (p-value: 0.941)
  • ระยะห่างของ Cook สำหรับการสังเกต #3: 0.001 (p-value: 0.999)

และอื่นๆ

ขั้นตอนที่ 4: เห็นภาพระยะทางของพ่อครัว

ในที่สุด เราสามารถสร้างแผนภาพกระจายเพื่อให้เห็นภาพค่าของตัวแปรทำนายเป็นฟังก์ชันของระยะทางของคุกสำหรับการสังเกตแต่ละครั้ง:

 import matplotlib. pyplot as plt

plt. scatter (df.x, cooks[0])
plt. xlabel (' x ')
plt. ylabel (' Cooks Distance ')
plt. show () 

ระยะทางของ Cook ใน Python

ความคิดสุดท้าย

สิ่งสำคัญคือต้องทราบว่าควรใช้ระยะห่างของ Cook เพื่อ ระบุ การสังเกตที่อาจมีอิทธิพล เพียงเพราะการสังเกตมีอิทธิพลไม่ได้หมายความว่าควรลบออกจากชุดข้อมูล

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

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

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