Linienglättung hebt die wesentlichen Aussagen eines Plots hervor

Wenn Daten oder Messwerte in einem Plot dargestellt werden, gibt es oft Schwankungen und Ausreißer. Die Linienglättung zeigt eine Art gleitenden Mittelwert und macht die Kernaussage eines Plots verständlicher. ggplot2 stellt alle nötigen Werkzeuge dafür bereit.
Es gibt verschiedene Arten der Linienglättung, etwa linear smooths (lm), generalized linear smooths (glm) und loess. Letzteres ist für Punktdiagramme am gebräuchlichsten. Die Abkürzungen loess steht für „locally weighted scatterplot smoothing“, also „lokal gewichtete Glättung von Punktdiagrammen“. Es wird von lokal gesprochen, weil jeder geglättete Wert mit Hilfe der Nachbarpunkte berechnet wird, die sich innerhalb eines bestimmten Datenbereichs von Werten befinden.
Das Beispiel zeigt den Kursverlauf des Britischen Pfunds der vergangenen zwei Jahre. Der Brexit Ende Juni 2016 ist gut zu erkennen. Die Daten stammen von der Seite http://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html und können hier heruntergeladen werden.

library(ggplot2)
library(extrafont)
library(scales)

euro <- read.csv("daten/exchange.csv")
euro <- euro[!is.na(euro$s1),]
euro$s1 <- 1/euro$s1
euro <- euro[as.Date(euro$date) > as.Date("2014-10-20"), ]
tage<-as.Date(euro$date)
werte <- euro$s1

ggplot(aes(x = tage, y = werte), data = euro)+
  geom_line(stat = "identity", color =  "grey")+
  geom_smooth(method = "loess", span = 1/25, color = rgb(255,97,0,100, maxColorValue = 255))+
  theme_bw()+
  ggtitle("Wechselkurs Britisches Pfund/Euro")+
  scale_y_continuous(breaks = seq(1.1, 1.45, 0.05))+
  theme(plot.title = element_text(size=16, family="Lato Black"), 
        axis.title=element_blank())+
  scale_x_date(breaks = date_breaks("2 months"),
               labels = date_format("%b\n%Y")) 

Linienglättung am Beispiel eines Wechselkursvelaufs

Klicke auf das Bild für eine vergrößerte Darstellung

Das Skript: Nötig sind die beiden Libraries ggplot2 und scales, extrafont hingegen ist optional und dient nur dem Laden der Schriftart "Lato". Nun wird die CSV-Datei eingelesen und der Variablen euro zugewiesen. Es folgt die Enfernung von NAs und die Umrechnung der Kurswerte auf den Wert des Pfunds statt des Euros. Schließelich wird der Zeitrahmen begrenzt auf zwei Jahre und das Ganze als Datum der Variablen tage und die Kurswerte der Variablen werte zugewiesen.
Es folgt der eigentliche Plot mit der Angabe der x- und y-Werte sowie der Datenbasis. Dann zeichnet geom_line() die Linie mit den tatsächlichen Wechselkursen. Die Linienglättung erfolgt mit geom_smooth(). Der Parameter method = "loess" ist eigentlich überflüssig, da dies die Standardeinstellung bei Datensätzen mit weniger als 1000 Einzeldaten ist. Der Parameter span gibt an, wie genau die geglättete Line den Originalwerten folgt, und color legt die Farbe fest. Die vollständige Syntax lautet:

geom_smooth(mapping = NULL, data = NULL, stat = "smooth", position = "identity", ..., method = "auto", formula = y ~ x, se = TRUE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

stat_smooth(mapping = NULL, data = NULL, geom = "smooth", position = "identity", ..., method = "auto", formula = y ~ x, se = TRUE, n = 80, span = 0.75, fullrange = FALSE, level = 0.95, method.args = list(), na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)

Die Zeile scale_x_date(breaks = date_breaks("2 months"), labels = date_format("%b\n%Y")) sorgt für eine zweizeilige X-Achsenbeschriftung im Abstand von zwei Monaten.