Python'da durbin-watson testi nasıl yapılır?


Doğrusal regresyonun varsayımlarından biri artıklar arasında herhangi bir korelasyonun olmamasıdır. Başka bir deyişle artıkların bağımsız olduğu varsayılmaktadır.

Bu varsayımın karşılanıp karşılanmadığını belirlemenin bir yolu, bir regresyonun artıklarında otokorelasyonun varlığını tespit etmek için kullanılan Durbin-Watson testinin yapılmasıdır. Bu test aşağıdaki varsayımları kullanır:

H 0 (sıfır hipotezi): Artıklar arasında korelasyon yoktur.

H A (alternatif hipotez): Artıklar otokorelasyonludur.

Test istatistiği yaklaşık olarak 2*(1-r)’ye eşittir; burada r, artıkların örnek otokorelasyonudur. Dolayısıyla test istatistiği aşağıdaki yorumla her zaman 0 ile 4 arasında olacaktır:

  • Test istatistiğinin 2 olması seri korelasyon olmadığını gösterir.
  • Test istatistikleri 0’a ne kadar yakınsa, pozitif seri korelasyonun kanıtı o kadar fazladır.
  • Test istatistikleri 4’e ne kadar yakınsa, negatif seri korelasyonun kanıtı o kadar fazladır.

Tipik olarak 1,5 ile 2,5 arasındaki test istatistiği değerleri normal kabul edilir. Ancak bu aralığın dışındaki değerler otokorelasyonun sorun olduğunu gösterebilir.

Bu eğitimde Python’da Durbin-Watson testinin nasıl gerçekleştirileceği açıklanmaktadır.

Örnek: Python’da Durbin-Watson testi

10 basketbolcunun özelliklerini açıklayan aşağıdaki veri setine sahip olduğumuzu varsayalım:

 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

Yanıt değişkeni olarak derecelendirmeyi ve yordayıcı değişkenler olarak diğer üç değişkeni kullanarak çoklu doğrusal regresyon modeline uyduğumuzu varsayalım:

 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())

Regresyon modeli artıklarının otomatik olarak ilişkilendirilip ilişkilendirilmediğini belirlemek için statsmodels kitaplığından durbin_watson() işlevini kullanarak bir Watson Durbin gerçekleştirebiliriz:

 from statsmodels.stats.stattools import durbin_watson

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

2,392

Test istatistiği 2,392’dir . Bu değer 1,5 ile 2,5 arasında olduğundan bu regresyon modelinde otokorelasyonun sorun olmadığını düşünüyoruz.

Otokorelasyonla nasıl başa çıkılır?

Sıfır hipotezini reddederseniz ve artıklarda otokorelasyonun mevcut olduğu sonucuna varırsanız, yeterince ciddi olduğunu düşünüyorsanız bu sorunu düzeltmek için birkaç seçeneğiniz vardır:

1. Pozitif seri korelasyon için bağımlı ve/veya bağımsız değişkenin gecikmelerini modele eklemeyi düşünün.

2. Negatif seri korelasyon için değişkenlerinizden hiçbirinin aşırı gecikmediğinden emin olun.

3. Mevsimsel korelasyon için modele mevsimsel kukla değişkenler eklemeyi düşünün.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir