# //////////////////////////////////////////////////////////// # # Code des RLab-Kurses "Deskriptive Statistik und Vergleiche # meteorologischer Zeitreihen" # # !!! In dieser Datei ist "purer" Code mit sehr wenigen # Erklärungen enthalten. Im RLab-Kurs werden die # Funktionen ausführlich und interaktiv erklärt und # ausprobiert. Der in dieser Datei enthaltene "pure" Code # ist zum Lernen kaum geeignet. Er ermöglicht aber die # Verwendung der Kurs-Inhalte als Vorlage zur Anpassung an # eigene Daten und Fragestellungen. # # //////////////////////////////////////////////////////////// # # Lesson: "L1 Deskriptive Statistik einer Zeitreihe" # # # In dieser Lesson werden grundlegende Funktionen zum Analy- # sieren von meteorologischen Daten vorgestellt. # # Im RLab-Kurs werden die Daten automatisch geladen. Hier, im # "echten Leben", werden sie mit der Funktion read.table() # geladen. Dabei ist es erforderlich, den Code an den # Laufwerkspfad, in dem die Daten liegen, anzupassen. # CET_ann <- read.table("Laufwerk/Ordner/CETann.dat", header = TRUE) # "Laufwerk/Ordner/Datei" durch Pfadangabe zum aktuellen # Workspace ersetzen. Weitere Hinweise zum Einlesen von # Dateien finden sich im Digitalen Skript "Import und Export # von Daten". # str(CET_ann) # Anschauen der struktur des Datensatzes View(CET_ann) # Anschauen des Datensatzes in separatem Fenster y <- CET_ann$year # Extrahieren der Jahreszahlenspalte T <- CET_ann$CET # Extrahieren der Temperaturspalte plot(y, T) # Streudiagramm der Jahreszahlen und Temperaturen hist(T) # Histogramm der Temperaturen plot(ecdf(T)) # empirische kumulative Verteilungsfunktion boxplot(T) # Boxplot der Temperaturen quantile(T) # Quartile der Temperaturen Tmean <- mean(T) # Mittelwert der Temperturen berechnen Tsd <- sd(T) # Standardabweichung der temperaturen berechnen Tres <- (T - Tmean)/ Tsd # standardisierte Residuen berechnen plot(y, Tres) # Plotten der st. Residuen und der Jahreszahlen # # # //////////////////////////////////////////////////////////// # # Lesson: "L2 Visualisierung eines Trends" # # # In dieser Lesson werden Funktionen zum Visualisieren eines # Trends in einer meteorologischen Datenreihe vorgestellt. # # Für diese Lesson werden die beiden Vektoren "y" und "T" # benötigt, die mit den Funktionen der ersten Lesson erstellt # werden können. # plot(y, T, # Streudiagramm der Jahreszahlen und Temperaturen main = "CET", # Hinzufügen eines Titels pch = 20, # Festlegen der Punktform col = "blue") # Festlegen der Punktfarbe line <- line(y, T) # Trendgerade berechnen abline(line) # Hinzufügend er Trendgerade zum Streudiagramm S <- line[[2]][2] # Isolieren der Steigung der Trendgeraden text(1950, 7.5, # Hinzufügen eines Texts an Position 1950/7.5 round(S, 4)) # Text soll Steigung, gerundet auf 4 Nach- # kommastellen, beinhalten Res <- line[[3]] # Extrahieren der Residuen aus der Trend- # geraden qqnorm(Res) # Visueller Test auf Normalverteilung der Residuen # # # //////////////////////////////////////////////////////////// # # Lesson: "L3 Visueller Vergleich zweier Zeitreihen" # # # In dieser Lesson werden Funktionen zum visuellen Vergleichen # zweier meteorologischer Datenreihen vorgestellt. # # Für diese Lesson werden die beiden Vektoren "y" und "T" # benötigt, die mit den Funktionen der ersten Lesson erstellt # werden können. # y1 <- y[y <= 1860] # Subsetten der Jahreszahlen kleiner/gleich T1 <- T[y <= 1860] # Subsetten der Temperaturen kleiner/gleich y2 <- y[y > 1860] # Subsetten der Jahreszahlen größer/gleich T2 <- T[y > 1860] # Subsetten der Temperaturen größer/gleich plot(y1, T1) # Streudiagramm des ersten Zeitraums plot(y2, T2) # Streudiagramm des zweiten Zeitraums plot(y1, T1, # Streudiagramm des ersten Zeitraums xlim = range(y), # Wertebereich der y-Achse festlegen ylim = range(T), # Wertebereich der x-Achse festlegen pch = "+", # Symbol auf '+' festlegen col = "blue", # Symbolfarbe festlegen xlab = "Year", # Beschriftung der x-Achse ylab = "Temperature[°C]") # Beschriftung der y-Achse points(y2, T2, # Hinzufügen der Punkte des zweiten zeitraums pch = "x", # Symbol auf 'x' festlegen col = "red") # Symbolfarbe festlegen lines(y1, # Linie hinzufügen; Jahreszahlen auf x-Achse rep(mean(T1), # Mittelwert des ersten zeitraums... length(y1)), # ...auf y-Achse col = "blue") # Linienfarbe festlegen lines(y2, # Linie der Mittelwerte des zweiten zeitraums rep(mean(T2), length(y2)), col = "red") boxplot(T1, T2) # Boxplots der beiden Zeiträume im Vergleich # # # //////////////////////////////////////////////////////////// # # Lesson: "L4 Verteilungsanalyse zweier Zeitreihen" # # # In dieser Lesson werden Funktionen zum Vergleichen der # Werteverteilungen zweier meteorologischer Datenreihen vor- # gestellt. # # Für diese Lesson werden die Vektoren "y", "y1", "y2" sowie # "T", "T1", "T2" benötigt, die mit den Funktionen der ersten # und dritten Lesson erstellt werden können. # hist(T1) # Histogramm des ersten Zeitraums hist(T2) # Histogramm des zweiten Zeitraums hist(T1, # Histogramm des ersten Zeitraums xlim = c(6, 12), # Wertebereich der x-Achse festlegen ylim = c(0, 65), # Wertebereich der y-Achse festlegen col = rgb(1, 0, 0, 0.5), # Farbe über RGB-Code festlegen main = "Histograms of T1 and T2") # Titel hinzufügen hist(T2, # Histogramm des zweiten zeitraums col = rgb(0, 0, 1, 0.4), # Farbe über RGB-Code festlegen add = TRUE) # Zum vorherigen Histogramm hinzufügen skew <- function(z) {m <- mean(z); mean((z - m)^3) / sd(z)^3} # Funktion zum Berechnen der Skewness/Schiefe skew(T1) # Berechnen der Schiefe des ersten Zeitraums skew(T2) # Berechnen der Schiefe des ersten Zeitraums kurt <- function(z) {m <- mean(z); mean((z - m)^4)/ sd(z)^4-3} # Funktion zum Berechnen der Kurtosis/Wölbung kurt(T1) # Berechnen der Kurtosis des ersten Zeitraums kurt(T2) # Berechnen der Kurtosis des ersten Zeitraums T1_fit <- fitdistr(T1, "weibull") # Fitten einer Weibull-verteilung an die Verteilung der # ersten Zeitreihe x <- seq(6, 12, # Erstellen eines Vektors, der alle... by = 0.01) # ...möglichen Temperaturwerte enthält T1_weibull <- dweibull(x, shape = T1_fit[[1]][[1]], scale = T1_fit[[1]][[2]]) # Erstellen einer an die Werte angepassten Weibull-Vertei- # lung, dabei shape und scale des gefitteten Objekts lines(x, T1_weibull, # Plotten der Weibull-Verteilung col = "red", # Festlegen der Linienfarbe lwd = 2) # Festlegen der Liniendicke # # # //////////////////////////////////////////////////////////// # # Lesson: "L5 F-Test und t-Test" # # # In dieser Lesson werden Funktionen zum statistischen Ver- # gleich der Werteverteilungen zweier meteorologischer Daten- # reihen vorgestellt. # # Für diese Lesson werden die Vektoren "y", "y1", "y2" sowie # "T", "T1", "T2" benötigt, die mit den Funktionen der ersten # und dritten Lesson erstellt werden können. # var.test(T1, T2) # Varianzhomogenitätstest der beiden Zeit- # räume, auch F-Test genannt tt <- t.test(T1, T2) # Mittelwertvergleichstest der beiden # Zeiträume print(tt) # Anzeigen des Ergebnisses # # # //////////////////////////////////////////////////////////// # # Lesson: "L6 Exportieren von Plots" # # # In dieser Lesson werden Funktionen Exportieren von Plots aus # R vorgestellt. # # Für diese Lesson werden die Vektoren "y", "y1", "y2" sowie # "T", "T1", "T2" benötigt, die mit den Funktionen der ersten # und dritten Lesson erstellt werden können. # getwd() # Ermitteln des working directory (wd) setwd() # Festlegen des working directory pdf("./Streudiagramm.pdf", # Öffnen eines PDFs in der wd width = 7, # Festlegen der Breite height = 6) # Festlegen der Höhe plot(y1, T1, # Erstellen eines Plots innerhalb des PDFs xlim = range(y), ylim = range(T), col = "blue", ylab = "T[°C]", xlab = "Year", pch = "+", lwd = 1) points(y2, T2, col = "red", pch = "x") lines(y1, rep(mean(T1), length(y1)), col = "blue", lwd = 1) lines(y2, rep(mean(T2), length(y2)), col = "red", lwd = 2) abline(line(y, T)) # dev.off() # Schließen des PDFs und Speichern des Plots # # # ////////////////////////////////////////////////////////////