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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert