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

Yorum ekle

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