Deutsch (de) Übersetzung
R - Zeitreihenanalyse: Ein Anfängerleitfaden
Hallo da draußen, zukünftige Datenzauberer! Ich freue mich sehr, euch auf eine aufregende Reise durch die Welt der Zeitreihenanalyse mit R mitzunehmen. Als jemand, der már mehr Jahre als Informatiklehrer gearbeitet hat, als ich zugeben möchte (lassen wir einfach sagen, ich erinnere mich, als Floppy Disks wirklich flexibel waren), habe ich unzählige Schüler gesehen, die von kompletten Anfängern zu selbstbewussten Analytikern transformiert sind. Also keine Sorge, wenn ihr neu im Programmieren seid – wir beginnen mit den ganz Basics und arbeiten gemeinsam nach oben.
Was ist Zeitreihenanalyse?
Bevor wir uns in den R-Code stürzen, lassen Sie uns darüber sprechen, was Zeitreihenanalyse eigentlich ist. Stellt euch vor, ihr verfolgt die Anzahl der Eiscremeportionen, die in eurem lokalen Geschäft jeden Tag für ein Jahr verkauft werden. Das ist eine Zeitreihe! Es ist einfach eine Sequenz von Datenpunkten, die über die Zeit gemessen werden. Zeitreihenanalyse hilft uns, Muster, Trends und Vorhersagen basierend auf diesen historischen Daten zu verstehen.
Jetzt lassen wir uns die Hände schmutzig mit ein bisschen R-Code!
Einstieg in R
Zuerst einmal müssen wir R und RStudio installieren. Denkt daran, R als Motor und RStudio als schickes Armaturenbrett zu betrachten, das das Fahren einfacher macht. Wenn ihr beides installiert habt, öffnet RStudio und lassen wir anfangen!
# Dies ist ein Kommentar in R. Er beeinflusst den Code nicht, aber hilft uns Menschen, zu verstehen, was hier vor sich geht!
# Lassen wir eine einfache Zeitreihe erstellen
sales <- c(100, 120, 140, 160, 180)
dates <- as.Date(c("2023-01-01", "2023-01-02", "2023-01-03", "2023-01-04", "2023-01-05"))
# Jetzt kombinieren wir sie zu einem Zeitreihenobjekt
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)
# Lassen wir uns anschauen, was wir erstellt haben
print(ts_data)
In diesem Beispiel haben wir eine sehr einfache Zeitreihe von täglichen Verkaufsdaten erstellt. Die c()
Funktion wird verwendet, um einen Vektor (denkt an eine Liste) von Werten zu erstellen. Wir verwenden dann die ts()
Funktion, um ein Zeitreihenobjekt zu erstellen und geben an, wann es beginnt und wie oft wir messen (täglich in diesem Fall).
Verschiedene Zeitintervalle
Nun, lassen wir über verschiedene Zeitintervalle sprechen. Zeitreihendaten können täglich, monatlich, quartalsweise oder jedes andere Intervalldenken, das ihr euch vorstellen könnt, sein. R ist flexibel genug, um all das zu handhaben. Schauen wir uns einige Beispiele an:
# Monatsdaten
monthly_data <- ts(1:24, start = c(2022, 1), frequency = 12)
# Quartalsdaten
quarterly_data <- ts(1:8, start = c(2022, 1), frequency = 4)
# Jahressdaten
yearly_data <- ts(1:10, start = 2013)
# Lassen wir sie ausgeben
print(monthly_data)
print(quarterly_data)
print(yearly_data)
In diesen Beispielen erstellen wir Zeitreihen mit verschiedenen Frequenzen. Für monatliche Daten verwenden wir frequency = 12
(12 Monate im Jahr), für quartalsweise ist es frequency = 4
(4 Quartale im Jahr) und für jährliche Daten müssen wir die Frequenz nicht angeben.
Visualisierung von Zeitreihen
Man sagt, ein Bild sagt mehr als tausend Worte, und in der Datenanalyse könnte das nicht wahrer sein. Lassen wir unsere Zeitreihen visualisieren:
# Zuerst erstellen wir eine interessantere Datensatz
set.seed(123) # Dies stellt sicher, dass wir alle die gleichen "zufälligen" Zahlen erhalten
sales <- 100 + cumsum(rnorm(100)) # Kумulative Summe von zufälligen Zahlen
dates <- seq(as.Date("2023-01-01"), by = "day", length.out = 100)
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)
# Jetzt plotten wir es
plot(ts_data, main = "Tägliche Verkäufe", xlab = "Datum", ylab = "Verkäufe")
Dieser Code erstellt eine realistischer aussehende Verkaufsdatensatz mit ein bisschen Zufall und plottet ihn. Die plot()
Funktion ist ein schnelles und einfaches Mittel, um eure Zeitreihe zu visualisieren.
Mehrere Zeitreihen
In der realen Welt möchten wir oft mehrere Zeitreihen gleichzeitig analysieren. Lassen wir mehrere Serien erstellen und visualisieren:
# Erstellen von zwei Zeitreihen
set.seed(123)
sales_A <- 100 + cumsum(rnorm(100))
sales_B <- 120 + cumsum(rnorm(100))
# Kombinieren sie zu einer mehrdimensionalen Zeitreihe
multi_ts <- ts(cbind(sales_A, sales_B), start = c(2023, 1), frequency = 365)
# Beide Serien plotten
plot(multi_ts, main = "Verkaufsvergleich", xlab = "Datum", ylab = "Verkäufe", col = c("blau", "rot"))
legend("topleft", legend = c("Produkt A", "Produkt B"), col = c("blau", "rot"), lty = 1)
Hier haben wir zwei Serien erstellt und sie mit cbind()
kombiniert. Dann plotten wir sie zusammen, wobei wir unterschiedliche Farben verwenden, um zwischen den Serien zu unterscheiden.
Gemeinsame Zeitreihenanalysemethoden
Nun, da wir die Basics abgedeckt haben, schauen wir uns einige gängige Methoden der Zeitreihenanalyse an. Hier ist eine Tabelle, die diese Methoden zusammenfasst:
Methode | Beschreibung | R-Funktion |
---|---|---|
Gleitender Durchschnitt | Glättet kurzfristige Schwankungen |
ma() aus dem forecast Paket |
Exponentielle Glättung | Geht mit jüngeren Beobachtungen mehr Gewicht |
ets() aus dem forecast Paket |
ARIMA | Autoregressive integrierte gleitende Durchschnitte |
arima() oder auto.arima()
|
Zerlegung | Spaltet die Serie in Trend-, Saison- und Residualkomponenten auf |
decompose() oder stl()
|
Lassen wir eine dieser Methoden ausprobieren - Zerlegung:
# Zerlegen unserer Zeitreihe
decomposed <- decompose(ts_data)
# Plot der Zerlegung
plot(decomposed)
Diese Zerlegung unterteilt unsere Zeitreihe in drei Komponenten: Trend, Saison und Zufall. Es ist eine großartige Möglichkeit, die zugrunde liegenden Muster in deinen Daten zu verstehen.
Schlussfolgerung
Herzlichen Glückwunsch! Ihr habt die ersten Schritte in die faszinierende Welt der Zeitreihenanalyse mit R unternommen. Wir haben die Basics der Erstellung, Visualisierung und Analyse von Zeitreihendaten abgedeckt. Denkt daran, wie bei jeder neuen Fähigkeit, macht Übung perfekt. Habt keine Angst, verschiedene Datensätze und Methoden auszuprobieren.
In meinen Jahren des Unterrichtens habe ich festgestellt, dass die Schüler, die am besten abschneiden, diejenigen sind, die jede Herausforderung mit Neugier und Ausdauer angehen. Also weiter erkunden, weiter fragen und vor allem weiter codieren!
Credits: Image by storyset