Python'da olabilirlik oranı testi nasıl yapılır?
Olabilirlik oranı testi, iki iç içe regresyon modelinin uyum iyiliğini karşılaştırır.
Yuvalanmış bir model, genel regresyon modelinde öngörücü değişkenlerin bir alt kümesini içeren bir modeldir.
Örneğin, dört öngörücü değişkene sahip aşağıdaki regresyon modeline sahip olduğumuzu varsayalım:
Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε
İç içe geçmiş bir modelin bir örneği, orijinal tahmin değişkenlerinden yalnızca ikisini içeren aşağıdaki model olabilir:
Y = β 0 + β 1 x 1 + β 2 x 2 + ε
Bu iki modelin önemli ölçüde farklı olup olmadığını belirlemek için aşağıdaki boş ve alternatif hipotezleri kullanan bir olasılık oranı testi yapabiliriz:
H 0 : Tam model ve iç içe geçmiş model verilere eşit derecede uyum sağlar. Bu nedenle iç içe modeli kullanmalısınız .
H A : Tam model, verilere iç içe geçmiş modelden önemli ölçüde daha iyi uyuyor. Bu nedenle şablonun tamamını kullanmanız gerekir.
Testin p değeri belirli bir anlamlılık düzeyinin (örneğin 0,05) altındaysa, sıfır hipotezini reddedebilir ve tam modelin önemli ölçüde daha iyi bir uyum sağladığı sonucuna varabiliriz.
Aşağıdaki adım adım örnek, Python’da olasılık oranı testinin nasıl gerçekleştirileceğini gösterir.
1. Adım: Verileri yükleyin
Bu örnekte, mtcars veri kümesindeki verileri kullanarak aşağıdaki iki regresyon modelinin Python’a nasıl sığdırılacağını göstereceğiz:
Tam model: mpg = β 0 + β 1 mevcut + β 2 karbonhidrat + β 3 hp + β 4 silindir
Model: mpg = β 0 + β 1 mevcut + β 2 karbonhidrat
İlk önce veri kümesini yükleyeceğiz:
from sklearn. linear_model import LinearRegression import statsmodels. api as sm import pandas as pd import scipy #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)
İlgili: Pandalarla CSV Dosyaları Nasıl Okunur?
Adım 2: Regresyon modellerini yerleştirin
Öncelikle modelin tamamını yerleştireceğiz ve modelin log-olabilirliğini hesaplayacağız:
#define response variable y1 = data['mpg'] #define predictor variables x1 = data[['disp', 'carb', 'hp', 'cyl']] #add constant to predictor variables x1 = sm. add_constant (x1) #fit regression model full_model = sm. OLS (y1,x1). fit () #calculate log-likelihood of model full_ll = full_model. llf print (full_ll) -77.55789711787898
Daha sonra indirgenmiş modeli yerleştireceğiz ve modelin log-olabilirliğini hesaplayacağız:
#define response variable y2 = data['mpg'] #define predictor variables x2 = data[['disp', 'carb']] #add constant to predictor variables x2 = sm. add_constant (x2) #fit regression model reduced_model = sm. OLS (y2, x2). fit () #calculate log-likelihood of model reduced_ll = reduced_model. llf print (reduced_ll) -78.60301334355185
3. Adım: Günlük olasılık testini gerçekleştirin
Daha sonra, olasılık testini gerçekleştirmek için aşağıdaki kodu kullanacağız:
#calculate likelihood ratio Chi-Squared test statistic
LR_statistic = -2 * (reduced_ll-full_ll)
print (LR_statistic)
2.0902324513457415
#calculate p-value of test statistic using 2 degrees of freedom
p_val = scipy. stats . chi2 . sf (LR_statistic, 2)
print (p_val)
0.35165094613502257
Sonuçtan ki-kare test istatistiğinin 2,0902 ve buna karşılık gelen p değerinin 0,3517 olduğunu görebiliriz .
Bu p değeri 0,05’ten küçük olmadığından sıfır hipotezini reddetmede başarısız olacağız.
Bu, tam modelin ve iç içe geçmiş modelin verilere eşit derecede iyi uyduğu anlamına gelir. Bu nedenle iç içe modeli kullanmalıyız çünkü tam modeldeki ek yordayıcı değişkenler uyumda önemli bir iyileşme sağlamamaktadır.
Yani son modelimiz şu şekilde olacaktır:
mpg = β 0 + β 1 mevcut + β 2 karbonhidrat
Not : P değerini hesaplarken 2 serbestlik derecesi kullandık çünkü bu, iki model arasında kullanılan toplam öngörücü değişkenlerdeki farkı temsil eder.
Ek kaynaklar
Aşağıdaki eğitimler Python’da regresyon modellerinin kullanımına ilişkin ek bilgi sağlar:
Python’da Doğrusal Regresyon İçin Tam Bir Kılavuz
Python’da polinom regresyonu nasıl gerçekleştirilir
Python’da Lojistik Regresyon Nasıl Gerçekleştirilir