Aidemy 2020/10/29
Einführung
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur KI-Fachschule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank!
Dies ist der dritte Beitrag der Zeitreihenanalyse. Freut mich, dich kennenzulernen.
- Dieser Artikel ist eine Zusammenfassung dessen, was Sie in "Aidemy" "in Ihren eigenen Worten" gelernt haben. Es kann Fehler und Missverständnisse enthalten. Bitte beachten Sie.
Was diesmal zu lernen
・ Behandeln Sie Zeitreihendaten mit Pandas
・ So stellen Sie Zeitreihendaten stationär
Behandeln Sie Zeitreihendaten mit Pandas
Laden und Anzeigen von Daten
- Obwohl das ultimative Ziel darin besteht, Zeitreihendaten mit SARIMA zu analysieren, ist es erforderlich, eine Vorverarbeitung der zu diesem Zeitpunkt übergebenen Daten durchzuführen.
-Wenn Zeitreihendaten als CSV-Datei angegeben werden, wird gelesen
Verwenden Sie __pd.read_csv ("Dateipfad") __.
Zeitinformationen in Index konvertieren
- Wenn Sie Zeitreihendaten analysieren, konvertieren Sie Zeitinformationen (Stunde, Monat usw.) in einen Index, um die Handhabung zu vereinfachen.
-Das Konvertierungsverfahren ist wie folgt.
(1) Definieren Sie Indexinformationen mit __pd.date_range ("start", "end", freq = "interval") __.
(2) Setzen Sie die definierten Informationen in den Index der Originaldaten ein.
③ Löschen Sie die Zeitinformationen der Originaldaten.
-Sie können den Anfang und das Ende der in (1) eingegebenen Originaldaten und das Intervall mit __df.head () __ und __df.tail () __ überprüfen.
- Wenn die Daten für das Intervall in Sekunden zusammengesetzt sind, übergeben Sie "S", Minuten "min", Stunden "H", Tage "D" und Monate "M".
・ Code![Screenshot 2020-10-29 14.00.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/8846bc71-71c3-998c- 537b-cd65c3c57872.png)
・ Ergebnis![Screenshot 2020-10-29 14.00.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/efb179c4-e69c-3c49- 6315-bde299bfbfc4.png)
Ursachen, wenn Daten nicht stationär sind
-Die Ursachen, wenn Zeitreihendaten nicht konstant sind, sind __ "Trend" __ und "__ saisonale Variation" __.
・ Wenn es eine Beständigkeit gibt, sollte der erwartete Wert konstant sein, aber wenn es einen __positiven Trend gibt, bedeutet dies, dass der erwartete Wert auf einem Aufwärtstrend ist __, so dass nicht gesagt werden kann, dass es eine Beständigkeit gibt.
・ In ähnlicher Weise sollte der Autokorrelationskoeffizient bei Beständigkeit konstant sein, aber der Autokorrelationskoeffizient ist für Daten mit saisonalen Schwankungen konstant, dh Daten, bei denen der Wert plötzlich nur für einen Zeitraum des Jahres zunimmt oder abnimmt. Das kann man nicht sagen.
- In einem solchen Fall ist es möglich, konstante Daten zu erhalten, indem __Trend und Conversion __ durchgeführt werden, um saisonale Schwankungen zu beseitigen.
- Nachdem Sie ein Modell mit diesen stetigen Daten erstellt haben, kombinieren Sie Trends und saisonale Schwankungen erneut, um ein Modell der Originalserie zu erstellen.
Machen Sie Zeitreihendaten stationär
Beseitigung von Trends und saisonalen Schwankungen
・ Die folgenden vier Methoden können verwendet werden, um Trends und saisonale Schwankungen zu beseitigen und die Stabilität aufrechtzuerhalten. Details werden später beschrieben.
・ Gleichmäßige Verteilung der Schwankungen mit __log-Konvertierung __
・ Nehmen Sie __Moving Average __, um den Trend abzuschätzen und zu entfernen
・ In __staff-Serie konvertieren __ (allgemein)
・ __ Saisonale Anpassung durchführen __
Protokollkonvertierung
- Wie in "Zeitreihenanalyse 1" zu sehen ist, kann die Änderung des Datenwerts durch Ausführen einer __log-Konvertierung __ moderiert werden.
- Auf diese Weise ist es möglich, die Selbstkovarianz für Daten mit plötzlichen Wertänderungen wie saisonalen Schwankungen zu vereinheitlichen. Das heißt, __ saisonale Schwankungen können entfernt werden __.
-Der Trend kann jedoch mit dieser Methode __ nicht entfernt werden. Daher muss zusätzlich zur logarithmischen Konvertierung eine Verarbeitung durchgeführt werden, um den Trend zu entfernen.
-Logarithmische Konvertierung kann mit __np.log (Daten) __ durchgeführt werden.
・ Code![Screenshot 2020-10-29 14.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/f3df871c-656e-8524- 0451-329add719538.png)
・ Ergebnis![Screenshot 2020-10-29 14.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/447705c8-b9fd-4df5- 94c1-c04840f6dc45.png)
gleitender Durchschnitt
-__ Bewegungsdurchschnitt __ bedeutet, den Durchschnitt eines bestimmten Abschnitts zu nehmen, während der Abschnitt verschoben wird.
-Der gleitende Durchschnitt ermöglicht die Glättung der Daten unter Beibehaltung der Eigenschaften der Originaldaten. Dies ermöglicht es, __ saisonale Schwankungen zu entfernen und Trends __ zu extrahieren.
- Wenn beispielsweise monatliche Daten saisonale Schwankungen aufweisen, können saisonale Schwankungen durch Verwendung von 12 gleitenden Durchschnitten beseitigt werden. Darüber hinaus können die extrahierten Trends auch durch "(Originalserie) - (gleitender Durchschnitt)" entfernt werden.
・ Der gleitende Durchschnitt kann wie folgt berechnet werden.
__Data .rolling (Fenster = Anzahl der gleitenden Durchschnitte) .mean () __
-Code (CO2-Konzentrationsdaten, gleitender Durchschnitt alle 51 Wochen (1 Jahr))![Screenshot 2020-10-29 14.08.16.png](https: //qiita-image-store.s3.ap) -northeast-1.amazonaws.com/0/698700/3acdfc2c-6d10-a226-0f5c-740246fdfd67.png)
・ Ergebnis![Screenshot 2020-10-29 14.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/b1662775-9436-06d6- 173b-78733ceaf6c2.png)
Bodendifferenzserie
- Wie in "Zeitreihenanalyse 1" zu sehen ist, wird der Umgang mit Daten unter Verwendung der Differenz zum vorherigen Wert als skalierte Differenzreihe bezeichnet.
・ Trends und saisonale Schwankungen können mithilfe einer Differenzreihe eliminiert werden. Es ist einfach zu machen, daher ist es der häufigste Weg, konstant zu werden.
- Um die Differenzserie zu finden, können Sie sie mit __data.diff () __ finden.
・ Diejenige, für die die Differenzreihe erster Ordnung erhalten wird, wird als primäre Differenzreihe bezeichnet, und diejenige, für die die Differenzreihe für die primäre Differenzreihe erhalten wird, wird als sekundäre Differenzreihe bezeichnet.
・ Code![Screenshot 2020-10-29 14.09.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/bc547a8a-ee6f-aaf6- 01e1-53a367ecadf3.png)
・ Ergebnis![Screenshot 2020-10-29 14.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/9f8ed0bc-d3a3-543f- b80f-8b0a7a17d56f.png)
Saisonale Anpassung
- Wie in "Zeitreihenanalyse 1" zu sehen ist, können Trends und saisonale Schwankungen aus der Originalserie entfernt werden, indem die Serie saisonbereinigt wird.
- Als Entfernungsmechanismus kann die Originalserie als "Originalserie = Trend + saisonale Variation + Residuum" zerlegt werden. Wenn dies jedoch in "Residuum = Originalserie - (Trend + saisonale Variation)" umgewandelt wird. Der Rest ist die ursprüngliche Serie abzüglich Trends und saisonaler Schwankungen. Ich benutze das.
- Um eine saisonbereinigte Serie zu erstellen, führen Sie __sm.tsa.seasonal_decompose aus (Daten, Frequenz = Spezifikation des Intervalls) __.
・ Code![Screenshot 2020-10-29 14.19.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/d35cd55e-e896-dd35- fe13-c71155db3fd6.png)
・ Ergebnis![Screenshot 2020-10-29 14.19.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/dc2f14cd-6f70-f0d2- 4092-60ba30444634.png)
Zusammenfassung
- Bevor Sie eine Zeitreihenanalyse durchführen, indizieren Sie die Zeitinformationen der Zeitreihendaten.
- Da die Daten, die an das Zeitreihenmodell übergeben werden sollen, stabil sein müssen, muss eine Vorverarbeitung durchgeführt werden, z. B. eine Differenzreihe für die Daten ohne Stabilität.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.