Einführung in die Zeitreihenanalyse ~ Saisonales Anpassungsmodell ~ In R und Python implementiert

Einführung

Dies ist der 19. Artikel des Gunosy Advent Calender 2015. Dieses Jahr ist auch vorbei.

Ich habe im November bei Gunosy angefangen und es hat viel Spaß gemacht. Da ich normalerweise Datenanalyse und Algorithmusentwicklung mache, werde ich dieses Mal kurz die in der Geschäftsanalyse verwendete Zeitreihenanalyse vorstellen.

Was ist Zeitreihenanalyse?

"Die Zeitreihenanalyse ist ein Versuch, Schwankungen eines bestimmten Phänomens in Bezug auf vergangene Bewegungen zu erfassen." [Aus "Einführung in die Zeitreihenanalyse" von Genshiro Kitagawa](http://www.amazon.co.jp/%E6%99%82%E7%B3%BB%E5%88%97%E8%A7%A3%E6 % 9E% 90% E5% 85% A5% E9% 96% 80-% E5% 8C% 97% E5% B7% 9D-% E6% BA% 90% E5% 9B% 9B% E9% 83% 8E / dp / 4000054554)

Die Begriffe "datengesteuertes Management" und "Big Data" beginnen Wurzeln zu schlagen, und ich denke, dass viele Unternehmen Entscheidungen treffen, um ihre Produkte basierend auf den Daten zu verbessern. Daten, die sich täglich ändern (insbesondere Indikatoren, die als Verkäufe und KPIs bezeichnet werden), variieren jedoch stark, und es kann schwierig sein, Änderungen richtig zu erfassen. Daher kann eine Zeitreihenanalyse verwendet werden, um Änderungen richtig zu erfassen und Vorhersagen genau zu machen.

Saisonale Anpassung

Dieses Mal werde ich die saisonalen Anpassungsdaten vorstellen. Grob gesagt Zeitreihendaten Beobachteter Wert = Trendkomponente + saisonale Komponente + Rauschkomponente Dies ist das in erläuterte Modell.

Die Apps, die wir anbieten, werden auch vom Rhythmus des menschlichen Lebens beeinflusst, solange sie eng mit dem menschlichen Leben verbunden sind. Es gibt ungefähr "Monatsfaktor", "Tagesfaktor" und "Zeitfaktor", aber dieses Mal werde ich mich auf den Tag konzentrieren und die Stichprobe implementieren.

Implementierung in R.

Ich möchte es mit den Daten von Tokyo Electric Power implementieren. Zuerst mache ich es mit R. Geben Sie zunächst die Rohdaten aus.

data <- read.csv("tokyo2015_day.csv", header=T) #Holen Sie sich Daten von CSV
power <- data[,2] #Zahlen extrahieren
plot(power, type="l") #Handlung

スクリーンショット 2015-12-25 01.04.37.png

Es ist gezackt. R hat eine "ts-Funktion", die Daten in periodische Daten umwandelt, und eine "stl-Funktion", die sie in saisonbereinigte Zeitreihendaten umwandelt. Mit diesen können Sie problemlos ein saisonbereinigtes Modell erstellen.

data <- read.csv("tokyo2015_day.csv", header=T) #Holen Sie sich Daten von CSV
power <- data[,2] #Zahlen extrahieren
plot(power, type="l") #Handlung

ts <- ts(power, frequency=7) #Der Zyklus beträgt 7 Tage(1 Woche)
stl <- stl(ts, s.window="periodic") #Erstellung von Zeitreihendaten für die saisonale Anpassung

plot(stl, type="l") #Handlung

スクリーンショット 2015-12-25 01.11.41.png

Der obere Teil der vier Diagramme enthält die Rohdaten (beobachtete Werte), die in der Reihenfolge von oben in "Trendkomponente", "saisonale Komponente" und "Rauschkomponente" unterteilt werden können.

Bei der Datenanalyse können langfristige Änderungen anhand von Trendkomponenten erfasst werden.

Eine kleine Überlegung

Immerhin sind Sommer und Winter hoch und der Einfluss des Tages scheint groß zu sein (man kann sehen, dass viele Menschen in einem ähnlichen Zyklus leben). Die Hauptelemente für die Tageskomponente sind wie folgt. Da der 1. Januar 2015 der Start und der 1. Januar der Donnerstag ist, können Sie sehen, dass die saisonale Komponente der Feiertage (Samstag, Sonntag) negativ ist.

$ print(stl$time.series[,1]) #Saisonale Komponenten ausgeben
2321.9288  1927.3324 -2517.1524 -6122.9112   293.1919  1872.1087  2225.5017...

Wenn Sie sehen, dass der Stromverbrauch im Sommer stark sinkt, denken Sie: "Es ist wahr, dass es dieses Jahr ab September plötzlich kühler wurde." (* Ich kann nichts sagen, wenn ich es nicht mit anderen Jahren vergleiche)

Implementierung in Python

Ich mache es auch in Python. Das ist Jupyter. Was wir tun, ist dasselbe.

import csv
import datetime as datetime  
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose
%matplotlib inline

filename = "tokyo2015_day.csv"
with open(filename, 'rt') as f:
    data = list(csv.reader(f))

headers = data.pop(0)
df = pd.DataFrame(data, columns=headers)

dataFrame = DataFrame(df['power'].values.astype(int), DatetimeIndex(start='2015-01-01', periods=len(df['power']), freq='D'))
ts = seasonal_decompose(dataFrame.values, freq=7)
plt.plot(ts.trend) #Trendkomponente
plt.plot(ts.seasonal) #Saisonale Zutaten
plt.plot(ts.resid) #Geräuschkomponente

Vielen Dank

Ein Teil des Python-Codes wurde von @moyomot von R nach Python umgeschrieben.

abschließend

Das Ende

Referenzmaterial

[Genshiro Kitagawa "Einführung in die Zeitreihenanalyse"](http://www.amazon.co.jp/%E6%99%82%E7%B3%BB%E5%88%97%E8%A7%A3%E6% 9E% 90% E5% 85% A5% E9% 96% 80-% E5% 8C% 97% E5% B7% 9D-% E6% BA% 90% E5% 9B% 9B% E9% 83% 8E / dp / 4000054554)

Recommended Posts

Einführung in die Zeitreihenanalyse ~ Saisonales Anpassungsmodell ~ In R und Python implementiert
[Einführung in die Elementzerlegung] Lassen Sie uns Zeitreihenanalysemethoden in R und Python arrange anordnen
"Einführung in die Datenanalyse durch statistische Bayes'sche Modellierung beginnend mit R und Stan" in Python implementiert
Python: Zeitreihenanalyse: Erstellen eines SARIMA-Modells
Python: Zeitreihenanalyse: Konstanz, ARMA / ARIMA-Modell
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Python: Zeitreihenanalyse
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Einführung in die Effektüberprüfung Schreiben der Kapitel 4 und 5 in Python
Lesen von Notizen (in Python und Stan) zur Einführung in die statistische Modellierung für die Datenanalyse (Midorimoto)
[Einführung in Python3 Tag 1] Programmierung und Python
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Hashing von Daten in R und Python
Einführung in die Bildanalyse opencv python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
[Statistik] [Zeitreihenanalyse] Zeichnen Sie das ARMA-Modell und erfassen Sie die Tendenz.
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
Zeitreihenanalyse durch allgemeines Gaußsches Zustandsraummodell unter Verwendung von Python [Implementierungsbeispiel unter Berücksichtigung von Extrinsik und Saisonalität]
Zeitreihenanalyse 2 Stabilität, ARMA / ARIMA-Modell
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Entenbuch in Python implementiert "Bayes statistische Modellierung mit Stan und R"
So machen Sie R chartr () in Python
Ich habe versucht, Zeitreihen zu analysieren! (AR-Modell)
Datenanalyse: Einfache Anwendung deskriptiver Statistiken und Schätzungsstatistiken auf CSV-Daten in Python
Zeitreihenanalyse 4 Konstruktion des SARIMA-Modells
Einfache Einführung in die Python3-Serie und OpenCV3
Hinzufügen von Serien zur Spalte in Python-Pandas
Verwendung ist und == in Python
Ich habe das VGG16-Modell mit Keras implementiert und versucht, CIFAR10 zu identifizieren
Zeitreihenanalyse Nr. 6 Gefälschte Rückkehr und republikanischer Teil
Einführung in Vektoren: Lineare Algebra in Python <1>
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
Holen Sie sich mit Python Zeitreihendaten von k-db.com
3 Möglichkeiten, Zeitzeichenfolgen mit Python zu analysieren [Hinweis]
So generieren Sie eine Sequenz in Python und C ++
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
tse - Einführung in den Text Stream Editor in Python
Implementieren Sie die Wiederholung und Erkundung von Gedenkstätten in Python und Go
Geschrieben "Einführung in die Effektüberprüfung" in Python
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
Senden Sie eine Nachricht an Skype und Chatwork in Python
Überlebensanalyse mit Python 2-Kaplan-Meier-Schätzung
[Einführung in die Udemy Python3 + -Anwendung] 64. Namespace und Gültigkeitsbereich
[Einführung zur Minimierung] Datenanalyse mit SEIR-Modell ♬
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Lesen von Zeitreihendaten in PyTorch
Einführung in die Überprüfung der Wirksamkeit Kapitel 2 in Python geschrieben
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
"Einführung in die Effektüberprüfung Kapitel 3 Analyse mit dem Neigungswert" + α wird in Python versucht
[SIR-Modellanalyse] Transformieren Sie die Formel, um γ und die effektive Reproduktionszahl R ♬ zu bestimmen
[Impression] [Datenanalyse ab Null] Einführung in die Python-Datenwissenschaft in Geschäftsfällen
[Einführung in Python] Zusammenfassung der Funktionen und Methoden, die häufig in Python vorkommen [Problemformat]
[Einführung in den Klang] Lassen Sie uns die Einführung in den Klang von Python und R arrange arrangieren. Hören Sie sich den Klang der Explosion von Nikkei 255 an.