Mathematik B

Statistik und Datenanalyse

Autor:in

Matthias Baitsch

Veröffentlichungsdatum

1. September 2025

1 Einführung und Überblick

Das vorliegende Skript zum Modul “Mathematik B – Statistik und Datenanalyse” fasst die wichtigsten Inhalte der Veranstaltung zusammen. Es erhebt keinen Anspruch auf Vollständigkeit und ersetzt auf keinen Fall den Besuch der Lehrveranstaltungen, in denen die Zusammenhänge an Beispielen erläutert und diskutiert werden. Das Skript basiert in weiten Teilen auf dem Buch ‘Statistik, Wege zur Datenanalyse’ Fahrmeir u. a. (2016).

1.1 Statistik und Datenanalyse

In der Mathematik ist Statistik ein Teilgebiet der Stochastik, eine Disziplin, die sich im weitesten Sinne mit zufälligen Vorgängen befasst und dabei die Gebiete Statistik und Wahrscheinlichkeitstheorie (siehe Abbildung 1.1) umfasst.

Abbildung 1.1: Statistik als Teilgebiet der Stochastik

In der Statistik werden im Rahmen empirischer Untersuchungen Daten erhoben, dargestellt und analysiert. Es werden drei Teilbereiche unterschieden.

Deskriptive Statistik:
Darstellen und Aufbereiten von realen Datensätzen, die empirisch, das heißt auf Grundlage von Umfragen, Versuchen oder Beobachtungen, gewonnen wurden. Ein typisches Anwendungsbeispiel ist die Aufbereitung und Bereitstellung von Daten über gesellschaftliche Entwicklungen durch das Statistische Bundesamt.
Explorative Statistik:
Ziel der explorativen Statistik ist es, aus vorliegenden Daten Annahmen und Hypothesen zu generieren, mit denen die Eigenschaften der Daten erklärt werden können. Dieser Bereich wird in der Vorlesung nicht vertieft behandelt.
Schließende Statistik:
Hier geht es darum, aus vorliegenden Daten Aussagen über die Grundgesamtheit abzuleiten. Zentrales Hilfsmittel dabei ist die Wahrscheinlichkeitstheorie. Eine Aufgabe der schließenden Statistik ist es zum Beispiel zu beurteilen, inwieweit eine Umfrage unter 100 Studierenden der BO repräsentativ für alle Studierenden ist.

Datenanalyse (Data Analysis) beschreibt die Aufgabe, konkrete, digital vorliegende Datensätze mithilfe von Software so aufzubereiten und darzustellen, dass Sie verstanden und interpretiert werden können. Als Querschnittsdisziplin wendet sie dabei Methoden aus der Statistik mit Mitteln der Informatik an.

1.2 Anwendungen im Bau- und Umweltingenieurwesen

(a) Straßenverkehr in Vietnam
(b) Überflutete Straße bei Starkregen
(c) Versagen einer Konstruktion
(d) Auswertung einer Versuchsreihe
Abbildung 1.2: Anwendungsfelder statistischer Methoden

In Abbildung 1.2 sind verschiedene Anwendungsfelder statistischer Methoden im Bau- und Umweltingenieurwesen zusammengestellt:

  1. Ermittlung und Aufbereitung von Daten als Grundlage für die Planung der Verkehrsinfrastruktur.

  2. Prognose über Häufigkeit und Ausmaß zukünftiger Starkregenereignisse auf Basis von Aufzeichnungen. Entwicklung stochastischer Modelle für fließende Gewässer.

  3. Entwicklung und Anwendung probabilistischer Sicherheitskonzepte, die streuenden Materialparametern und unsicheren Einwirkungen Rechnung tragen.

  4. Messwerte einer Versuchsreihe zu Stahlbetondecken (Kueres u. a. (2016)). Offensichtlich streuen die Messwerte stark.

1.3 Computerprogramme

Im Rahmen des Moduls “Mathematik B” werden Sie grundlegende Methoden der Statistik auf konkrete Datensätze aus verschiedenen Bereichen des Bau- und Umweltingenieurwesens anwenden. Dies ist ohne die Anwendung von Computern nicht sinnvoll möglich.

Zur Bearbeitung von Aufgaben aus dem Bereich der Stochastik und Statistik eignen sich prinzipiell eine Vielzahl verschiedener Programme.

Tabellenkalkulation:
Bis zu einem gewissen Grad lässt sich Statistik auch mit gängigen Tabellenkalkulationsprogrammen wie Excel oder Numbers betreiben (siehe zum Beispiel Matthäus und Matthäus (2016)). Allerdings sind viele konkrete Aufgaben aus der Statistik mit Tabellenkalkulationsprogrammen nur sehr umständlich und zeitraubend zu lösen, insbesondere wenn es sich um umfangreiche Datensätze handelt.
SPSS:
Das Programm SPSS (Statistical Package for the Social Sciences) ist insbesondere in den Sozialwissenschaften und der Medizin verbreitet. Es erlaubt die Analyse von Daten in einer komfortablen grafischen Oberfläche. Allerdings ist es in den Ingenieurwissenschaften nicht weit verbreitet, in der Anwendung eher unflexibel und, nicht zuletzt, sehr teuer.
Programmiersprache Python:
Python ist eine allgemein einsetzbare Programmiersprache, die sich in den letzten Jahren auch im Bereich der Datenanalyse und Statistik etabliert hat. Mit Bibliotheken wie NumPy, pandas, matplotlib und scikit-learn lassen sich statistische Auswertungen, Datenvisualisierungen und maschinelles Lernen umsetzen. Python ist Open Source, plattformunabhängig und wird in vielen wissenschaftlichen und technischen Disziplinen eingesetzt.
Programmiersprache R:
In der Datenanalyse hat sich die Programmiersprache R, die häufig zusammen mit der Entwicklungsumgebung RStudio eingesetzt wird, fest etabliert. R ist speziell auf die Anforderungen der Statistik zugeschnitten und mit dem tidyverse existiert eine umfassende Sammlung von Bibliotheken. RStudio ist eine komfortable grafische Oberfläche, in der statistische Auswertungen in R durchgeführt werden können. Sowohl R als auch RStudio sind plattformunabhängig und Open Source.

Für unsere Zwecke kommen Tabellenkalkulationsprogramme und SPSS aus mehreren Gründen nicht infrage. Demgegenüber sind sowohl Python als auch R grundsätzlich geeignet, wobei beide Programmiersprachen ihre spezifischen Vor- und Nachteile haben. Hier ein kleiner Vergleich, der zeigt, wie eine Aufgabe in beiden Umgebungen umgesetzt werden kann.

# | message: false
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(
    "01-daten/6342800.day",
    sep=";",
    comment="#",
    encoding="windows-1252",
    skipinitialspace=True,
    parse_dates=["YYYY-MM-DD"]
)
df["Monat"] = df["YYYY-MM-DD"].dt.month
df_summary = df.groupby("Monat")["Original"].agg(
    Mittelwert="mean",
    Minimum="min",
    Maximum="max"
)

x = df_summary.index
y = df_summary["Mittelwert"]
yerr = [y - df_summary["Minimum"], df_summary["Maximum"] - y]
monate = ("Jan", "Feb", "Mär", "Apr", "Mai", "Jun",
               "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")

plt.grid()
plt.bar(x, y)
plt.errorbar(x, y, yerr=yerr, fmt='none', ecolor='black', capsize=10)
plt.title("Abfluss der Donau am Pegel Hofkirchen\n"
          "Monatliche Mittel- und Extremwerte")
plt.xlabel("Monat")
plt.ylabel("Abfluss in m³/s")
plt.xticks(ticks=x, labels=monate)
([<matplotlib.axis.XTick object at 0x7faefede4a40>, <matplotlib.axis.XTick object at 0x7faefed00500>, <matplotlib.axis.XTick object at 0x7faefed03290>, <matplotlib.axis.XTick object at 0x7faefec13bc0>, <matplotlib.axis.XTick object at 0x7faefec0f950>, <matplotlib.axis.XTick object at 0x7faefec12c60>, <matplotlib.axis.XTick object at 0x7faefec10650>, <matplotlib.axis.XTick object at 0x7faefec1c530>, <matplotlib.axis.XTick object at 0x7faefec1cc80>, <matplotlib.axis.XTick object at 0x7faefecfef30>, <matplotlib.axis.XTick object at 0x7faefec1da30>, <matplotlib.axis.XTick object at 0x7faefed17200>], [Text(1, 0, 'Jan'), Text(2, 0, 'Feb'), Text(3, 0, 'Mär'), Text(4, 0, 'Apr'), Text(5, 0, 'Mai'), Text(6, 0, 'Jun'), Text(7, 0, 'Jul'), Text(8, 0, 'Aug'), Text(9, 0, 'Sep'), Text(10, 0, 'Okt'), Text(11, 0, 'Nov'), Text(12, 0, 'Dez')])
plt.show()

library(tidyverse)

df <- 
    read_delim(
        "01-daten/6342800.day", delim = ";", skip = 41,
        col_names = c("Datum", "", "Abfluss", "", "", ""),
        col_types = c("Dcnccc")
    ) |>
    mutate(
        Monat = month(Datum, label = TRUE)
    ) |>
    group_by(
        Monat
    ) |>
    summarise(
        Mittelwert = mean(Abfluss),
        Minimum = min(Abfluss),
        Maximum = max(Abfluss)
    )    

ggplot(data = df) +
    geom_col(
        mapping = aes(x = Monat, y = Mittelwert)
    ) +
    geom_errorbar(
        mapping = aes(x = Monat, ymin = Minimum, ymax = Maximum)
    ) +
    labs(
        x = "Monat", y = "Abfluss in m³/s",
        title = "Abfluss der Donau am Pegel Hofkirchen",
        subtitle = "Monatliche Mittel- und Extremwerte"
    )

Einen umfassenden Vergleich finden Sie auf diesem Blogpost.

Wir werden im Modul Mathematik B die Programmiersprache R einsetzen, da

  • die Aufbereitung von Daten einem einheitlichen Schema folgt und

  • es vergleichsweise einfache ist, qualitativ hochwertige Grafiken zu erstellen.

Wichtig ist dabei, dass es sich bei Mathematik B ausdrücklich nicht um ein Informatikmodul handelt. Sie werden nicht im klassischen Sinne programmieren (Schleifen, Verzweigungen), im Vordergrund stehen vielmehr die Aufbereitung und Auswertung realer Datensätze.