Implementierung der Regressionsstrategie mit Python, Pandas und statsmodels

Importieren Sie alle erforderlichen Pakete.

import pandas as pdfrom patsy import dmatricesfrom collections import OrderedDictimport itertoolsimport statsmodels.formula.api as smfimport sysimport matplotlib.pyplot as plt

Lesen Sie den Datensatz in einen Pandas-Datenrahmen.

df = pd.read_csv('boston_daily_temps_1978_2019.csv', header=0, infer_datetime_format=True, parse_dates=, index_col=)

Der Datensatz enthält tägliche Durchschnittstemperaturen. Wir wollen monatliche Durchschnittswerte. Lassen Sie uns also die Daten auf ein Monatsniveau bringen. Dies erweist sich als eine einfache Sache mit Pandas.

df_resampled = df.resample('M').mean()

Wir sind dabei, verzögerte Variablenspalten in den Datensatz einzufügen., Erstellen wir eine Kopie des Datensatzes, damit wir den ursprünglichen Datensatz nicht stören.

df_lagged = df_resampled.copy()

Fügen Sie 12 Spalten hinzu, die jeweils eine verzögerte Version von TAVG enthalten.

for i in range(1, 13, 1):
df_lagged = df_lagged.shift(i)

Drucken Sie die ersten 15 Zeilen des Datensatzes mit verzögerten Variablen aus.,

print(df_lagged.head(15))

Hier wird folgende Ausgabe ausgegeben:

Der Datensatz mit 12 verzögerten Variablen (Bild nach Autor)

Die ersten 12 Zeilen enthalten NaNs, die von der shift-Funktion eingeführt wurden. Entfernen wir diese 12 Zeilen.

for i in range(0, 12, 1):
df_lagged = df_lagged.drop(df_lagged.index)

Drucken Sie die ersten Zeilen aus, um zu bestätigen, dass die NaNs entfernt wurden.,

print(df_lagged.head())

Bevor wir weiter in die Daten spähen und stoßen, werden wir 20% des Datensatzes zum Testen des optimalen Modells beiseite legen.

Erstellen wir nun alle möglichen Kombinationen von verzögerten Werten. Dazu erstellen wir ein Wörterbuch, in dem die Tasten verschiedene Kombinationen der Lag-Zahlen 1 bis 12 enthalten.

Als nächstes iterieren wir alle generierten Kombinationen. Für jede Lag-Kombination erstellen wir den Ausdruck des Modells mithilfe der Patsy-Syntax., Als nächstes erstellen wir das lineare Regressionsmodell für diese Lag – Kombination von Variablen, trainieren das Modell auf dem Trainingsdatensatz, bitten Statsmodels, uns den AIC-Score für das Modell zu geben, und notieren uns den AIC-Score und das aktuelle „beste Modell“, wenn der aktuelle Score unter dem bisher gesehenen Mindestwert liegt. Wir werden all dies im folgenden Code tun:

Schließlich drucken wir die Zusammenfassung des besten OLSR-Modells gemäß unserem Bewertungskriterium aus. Dies ist das Modell mit der niedrigsten AIC-Punktzahl.

print(best_olsr_model_results.summary())

Hier wird die folgende Ausgabe ausgegeben., Ich hob ein paar interessante Bereiche in der Ausgabe:

– Modell Zusammenfassung generiert statsmodels OLSResults.zusammenfassung () (Bild nach Autor)

Lassen Sie uns die hervorgehobenen Abschnitte überprüfen.,

Auswahl der Modellparameter

Unsere AIC-Score-basierte Modellbewertungsstrategie hat ein Modell mit folgenden Parametern identifiziert:

Modellparameter und ihre Regressionskoeffizienten (Bild nach Autor)

Die anderen Verzögerungen, 3, 4, 7, 8, 9 es wurde festgestellt, dass sie nicht signifikant genug sind, um die Varianz der abhängigen Variablen TAVG gemeinsam zu erklären., Zum Beispiel sehen wir, dass TAVG_LAG_7 im optimalen Modell nicht vorhanden ist, obwohl aus den Streudiagrammen, die wir zuvor gesehen haben, eine gute Korrelation zwischen der Antwortvariablen TAVG und TAVG_LAG_7 zu bestehen schien. Der Grund für die Auslassung könnte sein, dass die meisten Informationen in TAVG_LAG_7 möglicherweise von TAVG_LAG_6 erfasst wurden, und wir können sehen, dass TAVG_LAG_6 im optimalen Modell enthalten ist.,

Statistische Signifikanz der Modellparameter (der T-Test)

Das zweite, was zu beachten ist, ist, dass alle Parameter des optimalen Modells, mit Ausnahme von TAVG_LAG_10, bei einem 95% igen Konfidenzniveau beim T-Test mit zwei Schwänzen individuell statistisch signifikant sind. Der gemeldete p-Wert für ihren “ t “ – Score ist kleiner als 0,025, was der Schwellenwert p-Wert bei einem 95% igen Konfidenzniveau beim 2-Tailed-Test ist.,

Der t-Wert und der p-Wert der Modellparameter (Bild nach Autor)

Gemeinsame Signifikanz der Modellparameter (der F-Test)

Das dritte, was zu beachten ist, ist, dass alle Parameter des Modells gemeinsam signifikant sind, um die Varianz in der Antwortvariablen TAVG zu erklären.

Das geht aus der F-Statistik 1458 hervor. Der p-Wert beträgt 1,15 e-272 bei einem 95% igen Konfidenzniveau., Dieser Wahrscheinlichkeitswert ist so unglaublich klein, dass Sie nicht einmal die F-Verteilungstabelle nachschlagen müssen, um zu überprüfen, ob die F-Statistik signifikant ist. Das Modell ist definitiv viel besser darin, die Varianz in TAVG zu erklären als ein Intercept-Only-Modell.

F-Statistik und dessen p-Wert., Alle mdoel-Parameter sind gemeinsam signifikant (Bild nach Autor)

Weitere Informationen zur Interpretation der F-Statistik finden Sie in meinem Artikel zum F-Test.

Der AIC-Score und die maximierte Protokollwahrscheinlichkeit des angepassten Modells

Werfen wir abschließend einen Blick auf den AIC-Score von 1990.0, der von statsmodels gemeldet wurde, und die maximierte Protokollwahrscheinlichkeit von -986.86.,

Maximierte die Protokollwahrscheinlichkeit und den AIC-Score (Bild vom Autor)

Wir können sehen, dass das Modell 8 Parameter enthält (7 verzögerte Variablen + intercept). Also gemäß der Formel für den AIC-Score:

AIC-Score = 2*Anzahl der Parameter -2* maximierte Protokollwahrscheinlichkeit
= 2*8 + 2*986.86 = 1989.72, abgerundet auf 1990. 0

Dies ist genau der von statmodels gemeldete Wert.

Schreibe einen Kommentar

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