Python'da breusch-pagan testi nasıl yapılır
Regresyon analizinde heteroskedastisite , artıkların eşit olmayan dağılımını ifade eder. Daha doğrusu, ölçülen değerler aralığı boyunca artıkların dağılımında sistematik bir değişikliğin olduğu durum budur.
Değişken varyans bir sorundur çünkü sıradan en küçük kareler (OLS) regresyonu, artıkların eşvaryanslılığa sahip bir popülasyondan geldiğini varsayar, yani sabit varyans anlamına gelir.
Bir regresyon analizinde değişen varyans mevcut olduğunda, analiz sonuçlarına inanmak zorlaşır.
Bir regresyon analizinde heteroskedastisitenin mevcut olup olmadığını belirlemenin bir yolu Breusch-Pagan testi kullanmaktır .
Bu eğitimde Python’da Breusch-Pagan testinin nasıl gerçekleştirileceği açıklanmaktadır.
Örnek: Python’da Breusch-Pagan testi
Bu örnek için 10 basketbolcunun özelliklerini açıklayan aşağıdaki veri kümesini kullanacağız:
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 puanlamayı ve açıklayıcı değişkenler olarak sayılar, asistler ve ribaundları kullanarak çoklu doğrusal regresyon modelini uygulayacağız. Daha sonra regresyonda heteroskedastisitenin mevcut olup olmadığını belirlemek için Breusch-Pagan testi uygulayacağız.
Adım 1: Çoklu doğrusal regresyon modelini yerleştirin.
İlk olarak çoklu doğrusal regresyon modelini uygulayacağız:
import statsmodels.formula.api as smf #fit regression model fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit () #view model summary print (fit.summary())
Adım 2: Breusch-Pagan testi yapın.
Daha sonra, değişen varyansın mevcut olup olmadığını belirlemek için Breusch-Pagan testi uygulayacağız.
from statsmodels.compat import lzip import statsmodels.stats.api as sms #perform Bresuch-Pagan test names = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value'] test = sms.het_breuschpagan(fit.resid, fit.model.exog) lzip(names, test) [('Lagrange multiply statistic', 6.003951995818433), ('p-value', 0.11141811013399583), ('f-value', 3.004944880309618), ('f p-value', 0.11663863538255281)]
Breusch-Pagan testi aşağıdaki boş ve alternatif hipotezleri kullanır:
Sıfır hipotezi (H 0 ): Homoskedastisite mevcuttur.
Alternatif hipotez: (Ha): Eş varyans mevcut değil (yani değişen varyans var)
Bu örnekte testin Lagrange çarpanı istatistiği 6,004 ve buna karşılık gelen p değeri 0,1114’tür . Bu p değeri 0,05’ten küçük olmadığı için sıfır hipotezini reddedemiyoruz. Regresyon modelinde değişen varyansın mevcut olduğunu iddia edecek yeterli kanıtımız yok.
Heteroscedasticity Nasıl Onarılır
Önceki örnekte regresyon modelinde değişen varyansın olmadığını görmüştük.
Bununla birlikte, değişen varyans gerçekten mevcut olduğunda, durumu düzeltmenin üç yaygın yolu vardır:
1. Bağımlı değişkeni dönüştürün. Heteroskedasticity’yi düzeltmenin bir yolu bağımlı değişkeni bir şekilde dönüştürmektir. Yaygın bir dönüşüm, bağımlı değişkenin logunu almaktır.
2. Bağımlı değişkeni yeniden tanımlayın. Değişen varyansı düzeltmenin bir başka yolu da bağımlı değişkeni yeniden tanımlamaktır. Bunu yapmanın yaygın bir yolu, ham değer yerine bağımlı değişken için bir oran kullanmaktır.
3. Ağırlıklı regresyon kullanın. Değişen varyansı düzeltmenin başka bir yolu da ağırlıklı regresyon kullanmaktır. Bu regresyon türü, her veri noktasına, uydurulan değerin varyansına bağlı olarak bir ağırlık atar. Uygun ağırlıklar kullanıldığında değişen varyans sorunu ortadan kaldırılabilir.
Bu makaledeki bu üç yöntemin her biri hakkında daha fazla ayrıntı okuyun.