Cara melakukan tes rasio kemungkinan dengan python
Uji rasio kemungkinan membandingkan kesesuaian dua model regresi bertingkat.
Model bersarang hanyalah model yang berisi subkumpulan variabel prediktor dalam model regresi keseluruhan.
Misalnya, kita memiliki model regresi berikut dengan empat variabel prediktor:
Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε
Contoh model bertingkat adalah model berikut yang hanya memiliki dua variabel prediktor asli:
Y = β 0 + β 1 x 1 + β 2 x 2 + ε
Untuk mengetahui apakah kedua model ini berbeda secara signifikan, kita dapat melakukan uji rasio kemungkinan yang menggunakan hipotesis nol dan hipotesis alternatif berikut:
H 0 : Model lengkap dan model tersarang sama-sama cocok dengan data. Jadi, Anda harus menggunakan model bersarang .
H A : Model lengkap lebih cocok dengan data dibandingkan model tersarang. Jadi harus menggunakan template yang lengkap .
Jika nilai p dari pengujian tersebut berada di bawah tingkat signifikansi tertentu (misalnya 0,05), maka kita dapat menolak hipotesis nol dan menyimpulkan bahwa model lengkap memberikan kesesuaian yang jauh lebih baik.
Contoh langkah demi langkah berikut menunjukkan cara melakukan uji rasio kemungkinan dengan Python.
Langkah 1: Muat data
Dalam contoh ini, kami akan menunjukkan cara menyesuaikan dua model regresi berikut dengan Python menggunakan data dari kumpulan data mtcars :
Model lengkap: mpg = β 0 + β 1 tersedia + β 2 karbohidrat + β 3 hp + β 4 silinder
Model: mpg = β 0 + β 1 tersedia + β 2 karbohidrat
Pertama, kita akan memuat kumpulan data:
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)
Terkait: Cara Membaca File CSV dengan Pandas
Langkah 2: Sesuaikan model regresi
Pertama, kita akan menyesuaikan model lengkap dan menghitung log-likelihood model tersebut:
#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
Selanjutnya, kita akan menyesuaikan model tereduksi dan menghitung log-likelihood model tersebut:
#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
Langkah 3: Lakukan uji kemungkinan log
Selanjutnya, kita akan menggunakan kode berikut untuk melakukan uji masuk akal:
#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
Dari hasil tersebut, kita dapat melihat bahwa statistik uji chi-square adalah 2,0902 dan nilai p-value yang sesuai adalah 0,3517 .
Karena nilai p ini tidak kurang dari 0,05, kita akan gagal menolak hipotesis nol.
Artinya, model lengkap dan model tersarang sama-sama cocok dengan data. Oleh karena itu kita harus menggunakan model bersarang, karena variabel prediktor tambahan dalam model lengkap tidak memberikan peningkatan kecocokan yang signifikan.
Jadi, model terakhir kita adalah:
mpg = β 0 + β 1 tersedia + β 2 karbohidrat
Catatan : Kami menggunakan 2 derajat kebebasan saat menghitung nilai p karena ini mewakili perbedaan total variabel prediktor yang digunakan antara kedua model.
Sumber daya tambahan
Tutorial berikut memberikan informasi tambahan tentang penggunaan model regresi dengan Python:
Panduan Lengkap Regresi Linier dengan Python
Cara melakukan regresi polinomial dengan Python
Cara Melakukan Regresi Logistik dengan Python