Der Mautindex ist einer jener Konjunkturindikatoren, welche mit ihrer Aktualität bestechen. Der Index berechnet sich anhand der zurückgelegten Entfernungen von LKWs über 7,5 Tonnen Gesamtgewicht auf den deutschen Autobahnen. Da diese Mautdaten automatisch erfasst werden, ist der Index viel früher verfügbar als manch andere Konjunkturindikatoren. Speziell in der jetzigen Zeit - in welcher oft über eine aufkommende Wirtschaftskrise geredet wird - kann der Index so eine datenbasierte Perspektive aufzeigen. Als erstes laden wir die nötigen libraries mitsamt der Daten des Mautindexes:
library(ggplot2)
library(dplyr)
library(quantmod)
library(gridExtra)
library(openxlsx)
library(lubridate)
data <- read.xlsx("https://www.destatis.de/DE/Themen/Branchen-Unternehmen/Industrie-Verarbeitendes-Gewerbe/Tabellen/Lkw-Maut-Fahrleistungsindex-Daten.xlsx;jsessionid=DAC14556EF8E3622062B294BB2383D27.internet8712?__blob=publicationFile", sheet=2) %>%
as.data.frame() %>%
`colnames<-`(.[5, ]) %>%
slice(6:n()) %>%
mutate(`Datum` = as.Date(as.numeric(Datum),origin="1900-01-01")) %>%
mutate(`unbereinigt` = as.numeric(`unbereinigt`)) %>%
mutate(`Kalender- und saisonbereinigt (KSB)` = as.numeric(`Kalender- und saisonbereinigt (KSB)`)) %>%
mutate(`gleitender 7-Tage-Durchschnitt KSB` = as.numeric(`gleitender 7-Tage-Durchschnitt KSB`)) %>%
mutate(`Veränderung KSB gegenüber Vortag in Prozent` = as.numeric(`Veränderung KSB gegenüber Vortag in Prozent`)) %>%
mutate(`Wochentag` = gsub(" ", "", Wochentag)) %>%
`colnames<-`(c("Datum", "Kalenderwoche", "Wochentag", "unbereinigt", "KSB", "KSB_7Tage", "KSB_ggVortag")) %>%
mutate("Jahr" = as.character(year(Datum)))
Schauen wir uns zuerst einmal die aktuellste Entwicklung ab 2019 an: Wir sehen den Knick mit der Coronakrise, aber auch eine aktuelle Abwärtsbewegung. Hinweis auf eine anstehende Krise?
data %>%
filter(Datum > "2019-01-01") %>%
ggplot(aes(x=Datum)) +
geom_line(aes(y=KSB, colour="Kalender-& Saisonbereinigt"), size=0.1) +
geom_line(aes(y=KSB_7Tage, colour = "KSB 7Tage Durchschnitt"), size=0.1) +
geom_smooth(aes(y=KSB_7Tage, colour="KSB 7Tage Durchschnitt"), span=1, se=FALSE, size=1) +
scale_colour_manual("", breaks = c("unbereinigt", "Kalender-& Saisonbereinigt", "KSB 7Tage Durchschnitt", "KSB ggüber Vortag"),values = c("grey", "#00CCCC", "#0066CC", "#004C99")) +
theme_minimal() +
theme(legend.position = "bottom")
Und ist das nun der Hinweis auf die Rezession? Hierfür schauen wir uns noch den DAX an. Und der Blick darauf verrät den starken Zusammenhang zwischen Mautindex und DAX und die gleichzeitige Abwärtsbewegung bei beiden Verläufen. Eine Rezession scheint also tatsächlich nicht unwahrscheinlich.
start_date = "2008-01-01"
l<- c("^GDAXI")
getSymbols(l,src="yahoo", from=start_date)
## [1] "GDAXI"
l[1] <- "GDAXI"
GDAXI <- data.frame(date=index(GDAXI), coredata(GDAXI))
joined_data <- left_join(data, GDAXI, by=c("Datum" = "date")) %>%
filter(complete.cases(.)) %>%
select(Datum, Wochentag, KSB, KSB_7Tage, GDAXI.Close)
Korr <- cor.test(joined_data$KSB, joined_data$GDAXI.Close, use="complete.obs") # Korrelation
ylim.primary <- c(0, ceiling(max(joined_data$KSB)))
ylim.secondary <- c(0, ceiling(max(joined_data$GDAXI.Close)))
b <- diff(ylim.primary)/diff(ylim.secondary)
a <- b*(ylim.primary[1] - ylim.secondary[1])
ggplot(joined_data, aes(x = Datum, y = KSB)) +
geom_line(color="#3399FF", size=0.1) +
geom_smooth(span=0.01, se=FALSE, size=0.8)+
geom_line(aes(y = a + GDAXI.Close*b), color = "#404040", size=0.2) +
geom_smooth(aes(y = a + GDAXI.Close*b), span=0.01, se=FALSE, color = "#404040")+
scale_y_continuous("Mautindex", sec.axis = sec_axis(~ (. - a)/b, name = "DAX-Kurs")) +
theme_classic()+
theme(axis.line.y.right = element_line(color = "#404040"),
axis.ticks.y.right = element_line(color = "#404040"),
axis.text.y.right = element_text(color = "#404040"),
axis.title.y.right = element_text(color = "#404040")) +
theme(axis.line.y.left = element_line(color = "#0080FF"),
axis.ticks.y.left = element_line(color = "#0080FF"),
axis.text.y.left = element_text(color = "#0080FF"),
axis.title.y.left = element_text(color = "#0080FF")) +
labs(
title = paste("Mautindex & DAX-Kurs"),
subtitle = paste("Korrelation:", round(Korr$estimate,4), " & p-Value:", format.pval(Korr$p.value, digits = 4, nsmall = 3, eps = 0.001)))
Und leben wir immer noch in ungewöhnlichen Zeiten wie viele sagen? Nun das ist eine sehr weite Frage. Was wir uns aber anschauen können, sind die gefahrenen Kilometer pro Jahr und pro Wochentag. Wir können sehen, dass die Ausschläge in 2021 und 2022 sich wieder gelegt haben. Da nun wieder pro Wochentag die ungefähr gleiche Kilometeranzahl über das gesamte Jahr hinweg gefahren wird, ist auch der Boxplot-Körper kleiner (da weniger Streuung in den beobachteten Daten). Anders war dies in 2021 und 2022, wo speziell beim Mittwoch und Donnerstag die breite Varianz in den gefahrenen Kilometern gut erkennbar ist. Wir leben also wieder in gewöhnlicheren Zeiten; zumindest was die gefahrenen Kilometer auf der Autobahn angeht.
ListeTag <- list("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
plot_list <- list()
for(i in ListeTag){
plot_list[[i]] <- data %>%
filter(Datum > "2019-01-01") %>%
filter(Wochentag == i) %>%
ggplot(aes_string(x="Jahr", y="unbereinigt", fill="Jahr")) +
geom_boxplot(outlier.shape = NA) +
ylim(0,160) +
theme(legend.position="none", axis.ticks.x=element_blank()) +
labs(x=NULL, y=NULL)+ #, subtitle = paste(i)) +
ggtitle(paste0(as.character(i)))
}
grid.arrange(grobs=plot_list,ncol=2)
Photo by sergio souza: https://www.pexels.com/photo/top-view-photo-of-roadway-2293649/