Cara menghitung jarak masak dengan python
Jarak Cook digunakan untuk mengidentifikasi observasi yang berpengaruh dalam model regresi.
Rumus jarak Cook adalah:
d i = (r i 2 / p*MSE) * (h ii / (1-h ii ) 2 )
Emas:
- r i adalah residu ke -i
- p adalah jumlah koefisien dalam model regresi
- MSE adalah kesalahan kuadrat rata-rata
- h ii adalah nilai leverage ke-i
Pada dasarnya, jarak Cook mengukur seberapa besar semua nilai model yang dipasang berubah ketika pengamatan ke -i dihilangkan.
Semakin besar nilai jarak Cook maka semakin berpengaruh pula observasi yang diberikan.
Sebagai aturan umum, setiap observasi dengan jarak Cook lebih besar dari 4/n (dimana n = total observasi) dianggap mempunyai pengaruh yang besar.
Tutorial ini memberikan contoh langkah demi langkah tentang cara menghitung jarak Cook untuk model regresi tertentu dengan Python.
Langkah 1: Masukkan datanya
Pertama, kita akan membuat kumpulan data kecil untuk digunakan dengan 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]})
Langkah 2: Sesuaikan model regresi
Selanjutnya, kita akan memasang model regresi linier sederhana :
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 ()
Langkah 3: Hitung Jarak Masak
Selanjutnya kita akan menghitung jarak Cook untuk setiap observasi pada model:
#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]))
Secara default, fungsi cooks_distance() menampilkan larik nilai jarak Cook untuk setiap observasi diikuti dengan larik nilai p yang sesuai.
Misalnya:
- Jarak Cook untuk observasi #1: 0,368 (p-value: 0,701)
- Jarak Cook untuk observasi #2: 0,061 (p-value: 0,941)
- Jarak Cook untuk observasi #3: 0,001 (p-value: 0,999)
Dan seterusnya.
Langkah 4: Visualisasikan jarak juru masak
Terakhir, kita dapat membuat plot sebar untuk memvisualisasikan nilai variabel prediktor sebagai fungsi jarak Cook untuk setiap observasi:
import matplotlib. pyplot as plt
plt. scatter (df.x, cooks[0])
plt. xlabel (' x ')
plt. ylabel (' Cooks Distance ')
plt. show ()
Pikiran Terakhir
Penting untuk dicatat bahwa jarak Cook harus digunakan untuk mengidentifikasi observasi yang berpotensi berpengaruh. Hanya karena sebuah observasi berpengaruh bukan berarti observasi tersebut harus dihapus dari kumpulan data.
Pertama, Anda perlu memverifikasi bahwa observasi tersebut bukan merupakan hasil kesalahan entri data atau kejadian aneh lainnya. Jika ternyata nilai tersebut sah, Anda kemudian dapat memutuskan apakah pantas untuk menghapusnya, membiarkannya apa adanya, atau menggantinya dengan nilai alternatif seperti median.