Jak obliczyć aic modeli regresji w pythonie
Kryterium informacyjne Akaike (AIC) to metryka używana do porównywania dopasowania różnych modeli regresji.
Oblicza się go w następujący sposób:
AIC = 2K – 2 ln (L)
Złoto:
- K: Liczba parametrów modelu. Domyślna wartość K wynosi 2, zatem model z tylko jedną zmienną predykcyjną będzie miał wartość K wynoszącą 2+1 = 3.
- ln (L) : Logarytm wiarygodności modelu. To mówi nam o prawdopodobieństwie modelu na podstawie danych.
Celem AIC jest znalezienie modelu wyjaśniającego największe zróżnicowanie danych, przy jednoczesnym karaniu modeli wykorzystujących nadmierną liczbę parametrów.
Po dopasowaniu wielu modeli regresji można porównać wartość AIC każdego modelu. Model z najniższym AIC zapewnia najlepsze dopasowanie.
Aby obliczyć AIC modeli regresji wielokrotnej w Pythonie, możemy użyć funkcji statsmodels.regression.linear_model.OLS() , która ma właściwość zwaną aic , która informuje nas o wartości AIC dla danego modelu.
Poniższy przykład pokazuje, jak używać tej funkcji do obliczania i interpretowania AIC dla różnych modeli regresji w Pythonie.
Przykład: oblicz i zinterpretuj AIC w Pythonie
Załóżmy, że chcemy dopasować dwa różne modele regresji liniowej wielokrotnej, używając zmiennych ze zbioru danych mtcars .
Najpierw załadujemy ten zestaw danych:
from sklearn. linear_model import LinearRegression 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 head of data data. head () model mpg cyl disp hp drat wt qsec vs am gear carb 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Oto zmienne predykcyjne, których będziemy używać w każdym modelu:
- Zmienne predykcyjne w modelu 1: disp, hp, wt, qsec
- Zmienne predykcyjne w modelu 2: disp, qsec
Poniższy kod pokazuje, jak dopasować pierwszy model i obliczyć AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'hp', 'wt', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
157.06960941462438
AIC tego modelu okazuje się wynosić 157,07 .
Następnie dopasujemy drugi model i obliczymy AIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'qsec']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view AIC of model
print (model. aic )
169.84184864154588
AIC tego modelu okazuje się wynosić 169,84 .
Ponieważ pierwszy model ma niższą wartość AIC, jest to model najlepiej dopasowany.
Gdy uznamy ten model za najlepszy, możemy przystąpić do jego dopasowywania i przeanalizować wyniki, w tym wartość R-kwadrat i współczynniki beta, aby określić dokładny związek pomiędzy zestawem zmiennych predykcyjnych azmienną odpowiedzi .
Dodatkowe zasoby
Kompletny przewodnik po regresji liniowej w Pythonie
Jak obliczyć skorygowany R-kwadrat w Pythonie