Jak przeprowadzić regresję logistyczną przy użyciu modeli statystycznych
Moduł statsmodels Pythona oferuje różnorodne funkcje i klasy, które pozwalają dostosować różne modele statystyczne.
Poniższy przykład pokazuje krok po kroku, jak przeprowadzić regresję logistyczną przy użyciu funkcji statsmodels.
Krok 1: Utwórz dane
Najpierw utwórzmy ramkę danych pandy zawierającą trzy zmienne:
- Godziny nauki (cała wartość)
- Metoda badania (metoda A lub B)
- Wynik egzaminu (zdany lub niezaliczony)
Dopasujemy model regresji logistycznej, wykorzystując przepracowane godziny i metodę nauki, aby przewidzieć, czy uczeń zda dany egzamin.
Poniższy kod pokazuje, jak utworzyć ramkę DataFrame pand:
import pandas as pd #createDataFrame df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1], ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6, 5, 8, 8, 7, 6, 7, 5, 4, 8, 9], ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A', 'A', 'B', 'A', 'B', 'A']}) #view first five rows of DataFrame df. head () result hours method 0 0 1 A 1 1 2 A 2 0 2 A 3 0 2 B 4 0 3 B
Krok 2: Dopasuj model regresji logistycznej
Następnie dopasujemy model regresji logistycznej za pomocą funkcji logit() :
import statsmodels. formula . api as smf
#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()
#view model summary
print ( model.summary ())
Optimization completed successfully.
Current function value: 0.557786
Iterations 5
Logit Regression Results
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================
Wartości w kolumnie coef wyniku informują nas o średniej zmianie logarytmicznych szans na zdanie egzaminu.
Na przykład:
- Stosowanie metody badawczej B wiąże się ze średnim wzrostem logarytmu szans zdania egzaminu o 0,0875 w porównaniu do stosowania metody badawczej A.
- Każda dodatkowa godzina nauki wiąże się ze średnim wzrostem logarytmicznej szansy zdania egzaminu o 0,4909 .
Wartości w P>|z| Kolumna reprezentuje wartości p dla każdego współczynnika.
Na przykład:
- Metoda badawcza ma wartość p wynoszącą 0,934 . Ponieważ wartość ta jest nie mniejsza niż 0,05, oznacza to, że nie ma istotnego statystycznie związku pomiędzy przepracowanymi godzinami a tym, czy student zdał egzamin.
- Badane godziny mają wartość p wynoszącą 0,045 . Ponieważ wartość ta jest mniejsza niż 0,05, oznacza to, że istnieje statystycznie istotny związek pomiędzy przepracowanymi godzinami a tym, czy student zdał egzamin.
Krok 3: Oceń wydajność modelu
Aby ocenić jakość modelu regresji logistycznej, możemy przyjrzeć się dwóm metrykom w wynikach:
1. Pseudonim R-kwadrat
Wartość tę można uznać za substytut wartości R-kwadrat w modelu regresji liniowej.
Oblicza się ją jako stosunek funkcji maksymalnego logarytmu wiarygodności z modelu zerowego do modelu pełnego.
Wartość ta może wynosić od 0 do 1, przy czym wyższe wartości wskazują na lepsze dopasowanie modelu.
W tym przykładzie wartość pseudoR-kwadrat wynosi 0,1894 , co jest wartością dość niską. To mówi nam, że zmienne predykcyjne modelu niezbyt dobrze radzą sobie z przewidywaniem wartości zmiennej odpowiedzi.
2. Wartość p LLR
Wartość tę można uznać za substytut wartości p całkowitej wartości F modelu regresji liniowej.
Jeżeli wartość ta jest poniżej pewnego progu (np. α = 0,05), wówczas możemy stwierdzić, że model jako całość jest „użyteczny” i pozwala lepiej przewidzieć wartości zmiennej odpowiedzi w porównaniu z modelem bez zmiennych predykcyjnych.
W tym przykładzie wartość p LLR wynosi 0,07375 . W zależności od wybranego przez nas poziomu istotności (np. 0,01, 0,05, 0,1) możemy dojść do wniosku, że model jako całość jest przydatny lub nie.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w Pythonie:
Jak wykonać regresję liniową w Pythonie
Jak wykonać regresję logarytmiczną w Pythonie
Jak wykonać regresję kwantylową w Pythonie