Python'da white testi nasıl yapılır (adım adım)
White testi, bir regresyon modelinde değişen varyansın mevcut olup olmadığını belirlemek için kullanılır.
Değişen varyans, bir yanıt değişkeninin farklı seviyelerindeki artıkların eşit olmayan dağılımını ifade eder; bu, artıkların yanıt değişkeninin her düzeyinde eşit şekilde dağıldığıvarsayımını ihlal eder.
Aşağıdaki adım adım örnek, değişen varyansın belirli bir regresyon modelinde bir sorun olup olmadığını belirlemek için Python’da White testinin nasıl gerçekleştirileceğini gösterir.
1. Adım: Verileri yükleyin
Bu örnekte mtcars veri kümesini kullanarak çoklu doğrusal regresyon modelini uygulayacağız.
Aşağıdaki kod, bu veri kümesinin bir pandas DataFrame’e nasıl yükleneceğini gösterir:
from sklearn. linear_model import LinearRegression from statsmodels. stats . diagnostic import het_white import statsmodels. api as sm import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url) #view summary of data data. info () <class 'pandas.core.frame.DataFrame'> RangeIndex: 32 entries, 0 to 31 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 model 32 non-null object 1 mpg 32 non-null float64 2 cyl 32 non-null int64 3 disp 32 non-null float64 4 hp 32 non-null int64 5 drat 32 non-null float64 6 wt 32 non-null float64 7 qsec 32 non-null float64 8 vs 32 non-null int64 9 am 32 non-null int64 10 gear 32 non-null int64 11 carb 32 non-null int64 dtypes: float64(5), int64(6), object(1)
Adım 2: Regresyon modelini yerleştirin
Daha sonra, yanıt değişkeni olarak mpg’yi ve iki öngörücü değişken olarak disp ve hp’yi kullanarak bir regresyon modeli uygulayacağız:
#define response variable y = data[' mpg '] #define predictor variables x = data[[' disp ', ' hp ']] #add constant to predictor variables x = sm. add_constant (x) #fit regression model model = sm. OLS (y,x). fit ()
Adım 3: White’ın testini gerçekleştirin
Daha sonra, regresyon modelinde değişen varyansın mevcut olup olmadığını belirlemek amacıyla White testini gerçekleştirmek için statsmodels paketindeki het_white() fonksiyonunu kullanacağız:
#perform White's test white_test = het_white(model. resid , model. model . exog ) #define labels to use for output of White's test labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value'] #print results of White's test print (dict(zip(labels, white_test))) {'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936, 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}
Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:
- Test istatistiği X2 = 7,0766’dır .
- Karşılık gelen p değeri 0,215’tir .
White testi aşağıdaki boş ve alternatif hipotezleri kullanır:
- Boş (H 0 ) : Homoskedasticity mevcut (artıklar da dağınık)
- Alternatif ( HA ): Değişken varyans mevcut (artıklar eşit şekilde dağılmamış)
P değeri 0,05’ten küçük olmadığından sıfır hipotezini reddedemiyoruz.
Bu, regresyon modelinde değişen varyansın mevcut olduğunu iddia etmek için yeterli kanıta sahip olmadığımız anlamına gelir.
Sonra ne yapacağız
White testinin sıfır hipotezini reddetmeyi başaramazsanız, o zaman heteroskedastisite mevcut değildir ve orijinal regresyonun sonucunu yorumlamaya devam edebilirsiniz.
Ancak sıfır hipotezini reddederseniz bu, değişen varyans olduğu anlamına gelir. Bu durumda regresyon çıktı tablosunda görüntülenen standart hatalar güvenilir olmayabilir.
Bu sorunu çözmenin iki yaygın yolu vardır:
1. Yanıt değişkenini dönüştürün.
Yanıt değişkeni üzerinde bir dönüşüm gerçekleştirmeyi deneyebilirsiniz; örneğin yanıt değişkeninin günlüğünü, karekökünü veya küp kökünü alabilirsiniz. Bu genellikle heteroskedastisitenin ortadan kalkmasıyla sonuçlanır.
2. Ağırlıklı regresyon kullanın.
Ağırlıklı regresyon, her veri noktasına, uydurulan değerin varyansına dayalı olarak bir ağırlık atar. Temel olarak bu, daha yüksek varyansa sahip veri noktalarına düşük ağırlık vererek bunların kalan karelerini azaltır. Uygun ağırlıklar kullanıldığında değişen varyans sorunu ortadan kaldırılabilir.
Ek kaynaklar
Aşağıdaki eğitimler Python’da doğrusal regresyon hakkında ek bilgi sağlar:
Python’da Doğrusal Regresyon İçin Tam Bir Kılavuz
Python’da Artık Arsa Nasıl Oluşturulur
Python’da VIF nasıl hesaplanır