Konvertieren Sie das Datum für die lineare Regression in Pandas-Datenrahmen

8

Es scheint so, als ob die lineare Regression von OLS in Pandas gut funktionieren kann, müssen die Argumente floats sein. Ich beginne mit einem csv (genannt "gameAct.csv") der Form:

%Vor%

Ich möchte eine lineare Regression durchführen, wie die Verkäufe vom Datum abhängen (wie sich die Zeit bewegt, wie bewegt sich der Verkauf?). Das Problem mit meinem unten stehenden Code scheint darin zu liegen, dass Datumsangaben keine Gleitkommawerte sind. Ich würde mich über Hilfe freuen, wie man dieses Indizierungsproblem in Pandas löst.

Mein aktueller (nicht arbeitender, aber kompilierender) Code:

%Vor%

Wenn ich den Stadtwert verändere, bekomme ich R ^ 2 = 1 Ergebnisse, was falsch ist. Ich habe auch index_col = 0, parse_dates == True' bei der Definition von dataframe df versucht, aber ohne Erfolg.

Ich vermute, dass es eine bessere Möglichkeit gibt, solche csv-Dateien zu lesen, um eine grundlegende Regression über Daten durchzuführen, und auch für eine allgemeinere Zeitreihenanalyse. Hilfe, Beispiele und Ressourcen sind willkommen!

Beachten Sie, dass bei dem obigen Code, wenn ich den Datumsindex (für eine bestimmte Stadt) in ein Array umwandele, die Werte in diesem Array die folgende Form haben:

%Vor%

Wie erstellt man eine AIC-Analyse über alle Nicht-Verkaufsparameter? (Das Ergebnis könnte sein, dass der Umsatz am meisten linear von Datum und Stadt abhängt).

    
Quetzalcoatl 05.07.2014, 16:32
quelle

2 Antworten

19

Für diese Art von Regression konvertiere ich normalerweise die Daten oder Zeitstempel in eine ganzzahlige Anzahl von Tagen seit dem Start der Daten.

Das macht den Trick gut:

%Vor%

Der Vorteil dieser Methode besteht darin, dass Sie sicher sind, welche Einheiten an der Regression beteiligt sind (Tage), während eine automatische Konvertierung implizit andere Einheiten verwenden kann, wodurch in Ihrem linearen Modell verwirrende Koeffizienten entstehen. Darüber hinaus können Sie Daten aus mehreren Verkaufskampagnen, die zu unterschiedlichen Zeiten gestartet wurden, in Ihre Regressionsdaten kombinieren (z. B. dass Sie an der Effektivität einer Kampagne als Funktion der Tage in der Kampagne interessiert sind). Sie könnten auch 1. Januar als Ihre 0 wählen, wenn Sie daran interessiert sind, den Tag des Jahrtrends zu messen. Wenn du dein eigenes 0-Datum wählst, hast du die Kontrolle über all das.

Es gibt auch Hinweise, dass statsmodels Zeitreihen aus Pandas unterstützt. Sie können dies möglicherweise auch auf lineare Modelle anwenden: Ссылка

Auch eine kurze Notiz: Sie sollten in der Lage sein, Spaltennamen direkt aus dem CSV automatisch zu lesen, wie im Beispielcode, den ich gepostet habe. In Ihrem Beispiel sehe ich Leerzeichen zwischen den Kommas in der ersten Zeile der CSV-Datei, die zu Spaltennamen wie "Datum" führen. Entfernen Sie die Leerzeichen und automatische CSV-Header lesen sollte nur funktionieren.

    
Tom Q. 05.07.2014, 21:20
quelle
-1

Ich bin mir nicht sicher über die Besonderheiten der Statistikmodelle, aber Dieser Beitrag listet alle Datum / Uhrzeit-Konvertierungen für Python auf. Sie sind nicht immer eins zu eins, also ist es eine Referenz, die ich oft benutzte ;-)

    
Wyrmwood 05.07.2014 17:45
quelle

Tags und Links