So treffen sie vorhersagen mithilfe eines regressionsmodells in statsmodels
Sie können die folgende grundlegende Syntax verwenden, um die Regressionsmodellanpassung mithilfe des Statsmodels- Moduls in Python zu verwenden und Vorhersagen über neue Beobachtungen zu treffen:
model. predict (df_new)
Diese spezielle Syntax berechnet vorhergesagte Antwortwerte für jede Zeile eines neuen DataFrame namens df_new unter Verwendung eines für statistische Modelle geeigneten Regressionsmodells namens model .
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Beispiel: Vorhersagen mithilfe eines Regressionsmodells in Statsmodels erstellen
Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über die gelernten Stunden, die abgelegten Vorbereitungsprüfungen und die Abschlussnote der Schüler einer bestimmten Klasse enthält:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view head of DataFrame df. head () hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72
Wir können die Funktion OLS() des Moduls statsmodels verwenden, um ein multiples lineares Regressionsmodell anzupassen, indem wir „Stunden“ und „Prüfungen“ als Prädiktorvariablen und „Punktzahl“ als Antwortvariable verwenden:
import statsmodels. api as sm #define predictor and response variables y = df[' score '] x = df[[' hours ', ' exams ']] #add constant to predictor variables x = sm. add_constant (x) #fit linear regression model model = sm. OLS (y,x). fit () #view model summary print ( model.summary ()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.718 Model: OLS Adj. R-squared: 0.661 Method: Least Squares F-statistic: 12.70 Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180 Time: 09:24:38 Log-Likelihood: -38.618 No. Observations: 13 AIC: 83.24 Df Residuals: 10 BIC: 84.93 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 71.4048 4.001 17.847 0.000 62.490 80.319 hours 5.1275 1.018 5.038 0.001 2.860 7.395 exams -1.2121 1.147 -1.057 0.315 -3.768 1.344 ==================================================== ============================ Omnibus: 1,103 Durbin-Watson: 1,248 Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803 Skew: -0.289 Prob(JB): 0.669 Kurtosis: 1.928 Cond. No. 11.7 ==================================================== ============================
Aus der Spalte „coef“ in der Ausgabe können wir das angepasste Regressionsmodell schreiben:
Punktzahl = 71,4048 + 5,1275 (Stunden) – 1,2121 (Prüfungen)
Nehmen wir nun an, wir möchten das angepasste Regressionsmodell verwenden, um die „Punktzahl“ von fünf neuen Schülern vorherzusagen.
Erstellen wir zunächst einen DataFrame für die fünf neuen Beobachtungen:
#create new DataFrame
df_new = pd. DataFrame ({' hours ': [1, 2, 2, 4, 5],
' exams ': [1, 1, 4, 3, 3]})
#add column for constant
df_new = sm. add_constant (df_new)
#view new DataFrame
print (df_new)
const hours exams
0 1.0 1 1
1 1.0 2 1
2 1.0 2 4
3 1.0 4 3
4 1.0 5 3
Als nächstes können wir die Funktion „predict()“ verwenden, um die „Punktzahl“ für jeden dieser Schüler vorherzusagen, indem wir „Stunden“ und „Prüfungen“ als Werte für die Prädiktorvariablen in unserem angepassten Regressionsmodell verwenden:
#predict scores for the five new students model. predict (df_new) 0 75.320242 1 80.447734 2 76.811480 3 88.278550 4 93.406042 dtype:float64
So interpretieren Sie das Ergebnis:
- Der erste Schüler im neuen DataFrame wird voraussichtlich eine Punktzahl von 75,32 erreichen.
- Der zweite Schüler im neuen DataFrame wird voraussichtlich eine Punktzahl von 80,45 erreichen.
Und so weiter.
Um zu verstehen, wie diese Vorhersagen berechnet wurden, müssen wir uns auf das vorherige angepasste Regressionsmodell beziehen:
Punktzahl = 71,4048 + 5,1275 (Stunden) – 1,2121 (Prüfungen)
Indem wir die Werte „Stunden“ und „Prüfungen“ für neue Studierende eingeben, können wir deren vorhergesagte Punktzahl berechnen.
Beispielsweise hatte der erste Student im neuen DataFrame einen Wert von 1 für Stunden und einen Wert von 1 für Prüfungen.
Daher wurde ihre vorhergesagte Punktzahl wie folgt berechnet:
Punktzahl = 71,4048 + 5,1275(1) – 1,2121(1) = 75,32 .
Die Punktzahl jedes Schülers im neuen DataFrame wurde auf die gleiche Weise berechnet.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in Python ausführen:
So führen Sie eine logistische Regression in Python durch
So berechnen Sie den AIC von Regressionsmodellen in Python
So berechnen Sie das angepasste R-Quadrat in Python