Kompendium: Risikomanagement mit R

Author

Dr. Heiko Frings

Published

February 5, 2025

(Die abstrakten Bilder in diesem Dokument werden mit dem R Paket aRtsy erzeugt.)

Diese HTML Datei wurde mit Quarto Quarto(R) generiert. Quarto ist eine Weiterentwicklung von Markdown. Dieser Text ist bewusst durchgängig ungegendert.1

Teile des Textes wurden in ähnlicher Form bereits zuvor als Posts auf dem Geschäfts-Netzwerk LinkedIn gezeigt.

Es handelt sich um ein lebendes Dokument, welches laufend fortentwicklelt wird. Kritik und Anregungen sind willkommen.

Es ist auch eine Printversion dieses Textes geplant.

Die HTML-Datei enthält Code-Schnipsel, welche kopiert werden können und in der Software R lauffähig sind. So kann vieles sofort ausprobiert werden. Der vorhandene Code kann dann leicht alteriert oder erweitert werden. Auf diese Weise lässt sich fast spielerisch ein Zugang zu R aufbauen.In einem begrenzten Umfang lässt sich R auch online austesten: Metricgate.

Wer sich speziell für das Management von Marktrisiken interessiert wird hier fündig: Quantitative Risk Management in R .

Gegenwärtig sehen wir einen geradezu explosionsartigen Anstieg der Analysemöglichkeiten. Dem steht oft ein Verharren bei alten längst, überholten Methoden gegenüber. Zum Teil ist dies auch der Tatsache geschuldet, dass MS Excel® oft als zentrales Werkzeug für Analysen genutzt wird und sich dadurch die Verwendung neuer Methoden verzögert.

Es gilt einen klugen und besonnenen Gebrauch der neuen Vielfalt zu machen, ohne dabei in eine Modellverliebtheit zu verfallen. Um hier die richtige Balance zu finden, ist es besonders wichtig, Erfahrungen aus der Praxis explizit mit einzubringen.

Leser sind herzlichst dazu eingeladen, den Text zu kommentieren und auszuweiten. Bitte wenden Sie sich an:

1 Vorwort

In allen wirtschaftlichen Aktivitäten spielt Risikomanagement eine zunehmend wichtige Rolle. Darüber hinaus wird die Bedeutung des Risikomanagements auch jenseits wirtschaftlicher Betrachtungen immer fühlbarer. Dies hat sich nicht zuletzt gerade jüngst auch bei dem Ausbruch der SARS-CoV-2-Pandemie sehr deutlich gezeigt.

Zeitlich konzentriert konnten hier auch die vielen Dimensionen von Risikomanagement in ihrer realen Wirksamkeit beobachtet werden. Für Deutschland seien hier nur 4 Bereiche genannt, in denen augenscheinlich unzulänglich agiert wurde:

  • Ethische Komponente: Zielkonflikte durch knappe Mittel

  • Durch versuchte Risikomitigation ausgelöste Sekundärrisiken und Schäden

  • Mangelhafte Datenerhebung: Daten zur Quantifizierung der Risiken, Daten zur Findung geeigneter Mitigationsmaßnahmen

  • Modellierung: Findung geeigneter mathematischer Methoden zur Berücksichtigung der Fehlerkorridore

Diese und weitere Komponenten eines (fehlenden bzw. mangelhaften) Risikomanagements fanden teils Eingang in die Massenmedien, teils wurden sie verschwiegen.

Leider wurde allzu deutlich, welche Folgen mangelnde Risikovorsorge einerseits sowie Panik2 und überhastete Mitigationsversuche andererseits haben können. Eine typische Risikoquelle, welche jeder Risikomanager einer Unternehmung kennt -die mangelnde Diversifikation bei den Lieferketten- spielte anfangs eine besonders unrühmliche Rolle bei der Deckung der Schutzmasken-Nachfrage. Letztendlich führte das unkoordinierte Lieferketten-Management zu einer massiven Überbeschaffung. Von 5,7 Milliarden beschafften Masken wurden nur 1,7 Milliarden im Inland verteilt. Darüber hinaus ist aber auch anzumerken, dass die Wirksamkeit der Masken umstritten blieb.

Auch fehlt es bis dato (Januar 2025) an ernsthaften Bemühungen zu einer Aufarbeitung des Geschehens, so dass nicht auszuschließen ist, dass sich die Fehler in einer weiteren, zukünftigen Krise wiederholen werden.

Wir haben nachstehend allerdings immer nur Anwendungen im wirtschaftlichen Sektor vor Augen. Dessen ungeachtet lässt sich ein Gutteil der Betrachtungen auch für Anwendungen jenseits der Wirtschaft nutzbar machen.

Ein wesentlicher Teil des Risikomanagements besteht in der möglichst präzisen Quantifizierung von Risiken. In diesem Text wollen wir uns daher besonders auf die Risikoquantifizierung im Unternehmen fokussieren. Genau hier kann die Software R ihre Stärken zum Einsatz bringen. Unter Quantifizierung eines Risikos verstehen wir jeweils immer nur eine monetäre Quantifizierung. Wir untersuchen also z.B. nicht das Verletzungsrisiko bei der Bedienung einer Maschine per se, wenngleich ein solches Risiko zwar auch einen monetären Aspekt hat, aber durch diesen allein natürlich nicht zureichend und ethisch akzeptabel beschrieben werden kann.

Die Relevanz des Risikomanagements für Unternehmen wird nicht zuletzt durch eine Vielzahl gesetzlicher Regelungen sowohl auf europäischer Ebene wie auf nationaler Ebene bestätigt und zusätzlich gestärkt. Genannt und hervorgehoben seien hier:

KonTraG

Basel III

MARisk

Solvency II

EU-Taxonomie-Verordnung

Auch außerhalb Europas gibt es ähnliche Entwicklungen.

Diese Regularien führen zum Teil zu erheblichen Aufwendungen in den Unternehmen. Die Vorgaben werden nicht immer den realen Risikolandschaften gerecht. Wir werden uns den sich daraus ergebenden regulatorischen Risiken später eigens widmen.

Aber auch ganz unabhängig vom regulatorischen Umfeld wird ein effektives Risikomanagement durch zunehmend komplexer werdende ökonomische Bedingungen zu einem entscheidenden Erfolgsfaktor wirtschaftlicher Aktivitäten. Entgegen eines weit verbreiteten Irrtums beschäftigt sich das Risikomanagement nicht allein mit der Vermeidung, Milderung oder Abwälzung von Risiken, sondern ist oder besser gesagt sollte immer gleichzeitig ein Chancenmanagement sein.

Ein richtig verstandenes und effizientes Risikomanagement ist wesentlich für den Erfolg einer Unternehmung.

Wir werden eine Kritik der Begriffe „Risiken” und „Chancen” vornehmen und das Bild eines Managements zeichnen, welches durchgängig die Stochastizität unternehmerischen Tuns begreift und berücksichtigt, ohne dabei den Blick durch die Begriffe „Risiken” und „Chancen” zu verengen.

Ilan Averbuch: Das Haus im Boot das Boot im Haus

Ilan Averbuch: Das Haus im Boot das Boot im Haus

Es gibt keine genaue Unterscheidung zwischen Risiken auf der einen und Chancen auf der anderen Seite. Eine effektive Vermeidung oder Reduktion von Risiken und ihren Azswirkungenkann als Ergreifen einer Chance gewertet werden. Umgekehrt ist das Verpassen zu vieler Chancen selbst ein Risiko.

Ein wichtiger Baustein eines jeden Risikomanagements ist die Quantifizierung der Einzelrisiken und deren Aggregation zu einem Gesamtrisiko. Dem Begriff des Risikos ist es inhärent, dass er sich auf mögliche Ereignisse oder Ausprägungen von Ereignissen bezieht. Die Quantifizierung von Risiken bedient sich daher des Wahrscheinlichkeitsbegriffs und damit der mathematischen Wahrscheinlichkeitstheorie. Die Bestimmung von Wahrscheinlichkeiten beinhaltet statistische Methoden und verwendet häufig  - gerade bei komplexeren Zusammenhängen-  die Methode der Monte-Carlo Simulation.

Die meist verwendeten Tabellenkalkulations-Programme stoßen hier schnell an Grenzen. Die dort fertig implementierten statistischen Routinen sind limitiert und die Tabellen werden sehr schnell höchst unübersichtlich. Durch add-ins wie @Risk® oder Chrystal Ball lässt sich eine Monte-Carlo-Simulation in MS Excel® relativ komfortabel durchführen allerdings lassen sich damit die Nachteile von Spreadsheets bei weitem nicht zur Gänze ausgleichen 3 .Die andererseits vielfachen Angebote von Spezialsoftware für Risikomanagement bieten zwar zunächst eine häufig anwenderfreundliche Oberflächen sind aber in der verwendeten Methodik meist eingeschränkt und insoweit auch unflexibel.

Einen Ausweg kann hier Open Source Software wie R oder auch Python bieten. R und Python sind frei verfügbare Softwaresysteme mit extrem breit aufgestellter Funktionalität. Besonders R bietet darüber hinaus eine Vielfalt an zusätzlichen zum großen Teil hochkarätiger Softwarepakete mit einem starken Focus auf statistische Methoden. Eine zentrale Stelle zum Download von R und mittlerweile über 20.000 zusätzlicher Software Pakete, sogenannter packages  findet man insbesondere unter The R Project for Statistical Computing.  Es gibt schier unzählige weitere Informationsquellen zu R, welche wir zum Teil im Weiteren immer mal wieder aufführen werden und zusätzlich im Anhang tabellarisch auflisten.

R ist für viele potentielle Anwender auf den ersten Blick eher abschreckend, da es über keinerlei benutzerfreundliche graphische Anwenderoberflächen verfügt. Mittlerweile gibt es aber zum Glück eine Reihe Möglichkeiten, R mit graphischen Anwenderoberflächen zu versehen und auch in komfortablen Entwicklungsumgebungen zu verwenden. Hierfür gibt es wiederum kostenlose Software-Systeme auf hohem Niveau. Wir möchten schon jetzt auf das populäre R-Studio als Entwicklungsumgebung für R verweisen.  

Wir greifen hier die übliche Einteilung unsicherer Entwicklungen in Chancen und Risiken auf, obwohl wir später diese Form der Sprachregelung einer Kritik unterziehen werden. Wir nutzen diese Sprachregelung nur um in einer informellen Weise auf den umfassenden Ansatz, eines  nicht lediglich auf Risiken fixierten Risikomanagements hinzuweisen.

Viele kommerzielle Systeme bieten Schnittstellen zu R, so z.B. SAS, SPSS oder auch SAP HANA.

Alternativen zu R sind vor allem Python oder zunehmend auch Julia. Insbesondere zwischen R und Python gibt es die Möglichkeit, Brücken zu bauen, so dass R und Python gemeinsam genutzt werden können. Allerdings ist der Raum der Möglichkeiten den R eröffnet so groß, dass eine zusätzliche Einbeziehung von Python oft überflüssig erscheint.

Wer die Stärken von R und MS Excel® miteinander verbinden möchte, kann sich der Software R auch als Add-In für MS Excel® bedienen. Hier gibt es freie Open Source Varianten BERT (Basic Excel R Toolkit) und ExcelRAddIn sowie eine kommerzielle Variante RExcel vgl. dazu das Kapitel [R und MS Excel®].

Wir wollen eine Einführung in die Möglichkeiten der Verwendung von R im Risikomanagement insbesondere in der Risikobewertung und der Risikoaggregation geben.  Bereits heute wird R in der Industrie und im Finanzbereich intensiv verwendet. Dessen ungeachtet, übersehen immer noch viele Unternehmungen gerade auch KMUs die Möglichkeiten, die sich aus der Verwendung  solcher Open Source Softwaresysteme ergeben können. Dabei kann gerade die Verwendung dieser Systeme eine sowohl kostengünstige als auch qualitativ hochstehende Alternative zu kommerziellen Softwaresystemen sein.

Wir möchten die Einführung in die Grundprinzipien der Risikobewertung und Risikoaggregation mit einer Einführung in R verbinden und dem Leser so in die Lage versetzen, theoretische Einsichten unmittelbar praktisch auszuprobieren.

Dabei haben wir in keinerlei Weise den Anspruch, vollständig zu sein. Es sollen eher Fenster geöffnet werden für diejenigen Risikomanager, die bislang vor einer näheren Beschäftigung mit R zurückschreckten. Außerdem möchte es Leser ohne Hintergrund im Risikomanagement an das Thema der Quantifizierung von Risiken heranführen.

Die schiere Menge der Möglichkeiten die R und verwandte / „befreundete” Open Source Software Systeme bieten, führen zu dem Luxusproblem der Unübersichtlichkeit. Der Risikoanalyst der beginnt, sich mit R zu beschäftigen, steht einer geradezu verwirrenden Menge von Möglichkeiten gegenüber.

Ein Ziel dieses Textes besteht daher auch darin, eine Auswahl von Softwarepaketen  vorzustellen, die in R integriert werden können bzw. um R herumranken und bereits praktische Verwendung im Risikomanagement fand.

Der R-Code der hier aufgeführten diversen Beispiele kann kopiert, unmittelbar verwendet und alteriert werden. Neben den detaillierter betrachteten Beispielen geben wir einen Ausblick auf weitere Anwendungen. 

Der Autor ist seit etwa 15 Jahren mit Risikoanalysen in diversen Wirtschaftsbereichen beschäftigt. Wie wohl die meisten Mitstreiter habe auch ich dabei zunächst vorwiegend MS Excel® verwendet. Später kam dann auch anspruchsvolle und zum Teil kostspielige (!) Spezialsoftware insbesondere zur Durchführung von Monte Carlo Simulationen für die Ermittlung von Rückversicherungsbedarf von Erstversicherern in Einsatz.

Später setzte ich zunächst S-Plus (S-Plus ist eine kommerzielle Version von R und ist in den letzten Jahren zunehmend in den Schatten von R geraten, vgl. S-Plus and R Statistics Software) und später R als weiteres zusätzliches Werkzeug insbesondere  für statistische Analysen ein. Nach und nach wurde mir aber immer deutlicher, dass sich R auch für viele weitere Aufgaben einsetzen lässt. In vielen Fällen wird dadurch die Nutzung von Excel und auch die Verwendung der Spezialsoftware obsolet.

Unter dem praktischen Druck schnell Antworten zu liefern, führt die Verwendung einfacherer Softwaresysteme häufig dazu, dass neue Analysealgorithmen erst gar nicht in den Focus des Praktikers geraten. So können beispielsweise mit den Methoden des Machine Learnings Umsatzprognosen oder das Auftreten von Störungen in Produktionsprozessen häufig deutlich präziser erfolgen, als dies bislang möglich war. Auf diese Weise lässt sich nicht nur die Qualität der Risikoanalysen steigern, sondern es ergeben sich auch direkte Impulse für das aktive Risikomanagement.

Leider ist es aber oft so, dass wegen Zeitdrucks und anderer Gründe das sprichwörtliche Fahrrad nicht gebaut wird und man stattdessen weiterhin zu Fuß läuft, also weiterhin alte Methoden und Hilfsmittel nutzt, obwohl der Einsatz anderer Werkzeuge schon bald nicht nur eine Qualitätssteigerung, sondern auch eine Beschleunigung der Prozesse ermöglichen könnte.

2 Erste Schritte in R

Es gibt mittlerweile eine Vielfalt von Einführungen in die Software R. Neben den diversen Monographien zu diesem Thema, gibt es beispielsweise auch viele Vorlesungsskripten, welche sich als Einführung in die Sprache R sehr gut eignen.

Eine knappe erste Einführung in R der TU Dresden findet sich hier:

R TU-Dresden

Ähnlich hier von der LMU und der Universität Dortmund:

R LMU-München

R Uni Dortmund

Einen KI -gestützten R-Tutor findet man hier:

R-Tutor

Es ist aus unserer Sicht wenig sinnvoll dieser Vielfalt einfach eine weitere R Einführung hinzuzufügen. Wir werden hier daher nur einen sehr kurzen Abriss geben und uns im Weiteren dann aber eingehender mit den speziellen R Paketen (weiter unten wird erklärt was das ist und wo man sie findet), welche für die Analyse von Risiken besonders hilfreich sind, beschäftigen. Die Verwendung von R in den verschiedenen Industrien wird in einer der vielen Onlinequellen zu R wie folgt abgeschätzt:entrale Webseite für alle R Belange ist http://www.r-project.org/ Dort finden Sie unter CRAN (Comprehensive R Archive Network) auch die Adressen unter denen Sie R und den Großteil der R Programmpakete herunterladen können. Gehen Sie z.B. zu http://ftp5.gwdg.de/pub/misc/cran/ (unter Deutschland, GWDG Göttingen) oder zu einem anderen CRAN Server um R und / oder zusätzliche R Pakete herunterzuladen. R läuft unter Linux / MacOS X und Windows. Hier sollten Sie die für Ihr System vorkompilierte Version herunterladen. Hier finden Sie auch umfangreiches Dokumentationsmaterial: Einführung, Sprachdefinition, “Writing R Extensions” (DLLs, Packages), Einführungen in weiteren Sprachen (neben Englisch) Details zur Installation finden Sie unter R-Installation.

Die Installation ist aber in der Regel völlig problemlos und kann daher zunächst auch ohne jede Konsultation dieser Detailbeschreibung vorgenommen werden. Bevor wir weitere Software installieren, sollten wir uns ein wenig mit R bekannt machen.

Das Standard R GUI für R kommt relativ karg daher:

R GUI

RStudio ist eine integrierte Entwicklungsumgebung (IDE) für R und Python. Die Verwendung von RStudio erleichtert die Arbeit erheblich.RStudio umfasst eine Konsole, einen Editor mit Syntaxhervorhebung, der die direkte Codeausführung unterstützt, sowie Tools für Plotting, History, Debugging, Workspace-Management und Generierung von Reports und Shiny Apps. RStudio ist in Open-Source- und kommerziellen Editionen erhältlich und läuft lokal auf dem Laptop oder auch auf einem Server.

RStudio

Die Installation von R und RStudio wird kurz hier erklärt.

Es gibt eine Reihe weiterer IDS und GUIs für die Verwendung von R. Interessant finden wir isbesondere die Software R Analytic Flow, welche einen anderen Ansatz verfolgt.

R Analytic Flow

Erwähnt werden sollte auch, dass die freie Software Knime und auch MS Power BI R Code mit integrieren können.

2.1 R und MS Excel®

In der unternehmerischen Praxis finden sehr viele Analysen nach wie vor in MS Excel® statt. Deswegen kann der Datenaustausch mit MS Excel® in der Anwendung von R wichtig sein. Speziell hierfür gibt es eine Reihe ausgereifter R Pakete:

  • readxl: Dieses Paket ermöglicht das einfache Einlesen von Excel-Dateien in R. Es unterstützt sowohl .xls als auch .xlsx Formate und benötigt keine Java-Installation.

  • openxlsx: Mit diesem Paket können Excel-Dateien sowohl gelesen als auch geschrieben werden. Es bietet Funktionen wie write.xlsx() zum Exportieren von Daten in Excel-Format.

  • XLConnect: Dieses Paket bietet umfangreiche Funktionen zum Lesen, Schreiben und Manipulieren von Excel-Dateien. Es ermöglicht sogar das Anlegen von Arbeitsblättern und das Eintragen von Daten direkt aus R.

  • xlsx: Ähnlich wie XLConnect ermöglicht dieses Paket sowohl das Lesen als auch das Schreiben von Excel-Dateien. Es benötigt allerdings eine Java-Installation.

  • writexl: Dieses Paket ist speziell für den schnellen Export von Daten in Excel-Format optimiert.

Neben dieser Vielzahl von Paketen gibt es auch Excel add-ins welche für Verwendung von R in Excel sehr praktisch sein können: BERT (Basic Excel R Tool). BERT ist ein Open Source Werkzeug zur Verbindung von Excel mit der Statistik-Sprache R. Es wurde speziell dafür entwickelt, die Ausführung von R-Funktionen aus Excel-Tabellenzellen zu unterstützen. Es dient dazu, benutzerdefinierte Excel- Funktionen (User-Defined Functions, UDFs) in R zu schreiben.

2.2 RExcel

RExcel ist ein Add-In für MS Excel®, mit dessen Hilfe man die Statistiksoftware R innerhalb von MS Excel® verwenden kann. Im Bereich des Risikomanagements können diese add-ins auch als Alternativen zu den kommerziellen Simulations add-ins wie beispielsweise Chrystal Ball oder @Risk verstanden werden. Während die R add- ins zwar den Zugang zu einer ungleich breiteren Funktionalität geben, so ist ihr Bedienungskomfort allerdings deutlich geringer als der von Chrystal Ball und @Risk. MS Excel® wird häufig in einer etwas unübersichtlichen Weise in den Unternehmungen eingesetzt.

Meist gibt es Dutzende oder gar hunderte verschiedenen MS Excel® Dateien, die manchmal über externe Links miteinander kommunizieren. Wenn schon so ein Wildwuchs von Excel Dateien entstanden ist, kann evtl. MS Power BI® ein geeignetes Hilfsmittel sein, hier etwas Ordnung hineinzubringen. Zudem hat MS Power BI® viele graphische Werkzeuge von R übernommen und kann durch eigenen R Code ergänzt werden. Eine kostenlose Desktop Version ist im Internet verfügbar .

Für den R Anwender kann MS Power BI ® als Alternative zu R Shiny verwendet werden. Sowohl R Shiny als auch MS Power BI ® ermöglichen die Erstellung interaktiver Dashboards und Graphiken. Die interaktive Darstellung von Risikolandschaften erlangt zunehmende Bedeutung. Hilfe zu R Es existiert ein relativ gut ausgebautes Hilfe-System zu R. Die Qualität der Hilfe für die einzelnen R Pakete ist von Paket zu Paket unterschiedlich.

Die sehr große weltweite Verbreitung von R erlaubt es, in verschiedenen Internet Foren, Hilfe zu Problemen bei der Verwendung von R oder auch zu den einzelnen Paketen zu erhalten. Der Zugang zu den Basishilfsfunktionen wird hier kurz dargestellt:

Code
# Beispiel: Hilfe zu „fitdist" des Paketes „fitdistrplus" 

?fitdistrplus::fitdist
starte den http Server für die Hilfe fertig
Code
# Durchsuchen des Hilfssystems
help.search("hist")  

Zu einigen Themen gibt es Demos welche sich wie folgt ausrufen lassen:

demo(image) # Beispiel: Demo zum Anzeigen von Bildern

demo() # Liste der Demos im Basissystem

2.3 Numerische Operatoren in R

+,-, *, /,^ Addition, Substraktion, Multiplikation, Division, Exponentielfunktion

abs() Absolutbetrag

sqrt() Quadratwurzel

sin(), cos(), tan() Trigonometrische Funktionen

asin(), acos(), atan() Inverse trig. Funktionen

sinh(), cosh(), tanh() Hyperbolische trig. Funktionen

exp() Exponentialfunktion mit der Eulerschen Konstante ceiling(), floor (), round() Rundungsfunktionen

trunc() Abschneiden der Kommastellen

factorial () Fakultät

Zuweisungen Skalare, Vektoren, Matrizen:

Zuweisungsoperator <- (oder =)

Skalare, Vektoren (einfachster Datentyp in R, geordnete Menge von Daten gleichen Typs)

Code
# Zuweisung eines Wertes an die Variable x
x <- 5  # x wird auf 5 gesetzt

# Erstellen eines Vektors y mit den Werten von 1 bis 10
y <- 1:10  # y enthält die Zahlen von 1 bis 10

# Erstellen eines Vektors z mit spezifischen Werten
z <- c(5, 7, 5, 6, 10:15)  # z enthält die Werte 5, 7, 5, 6 und die Zahlen von 10 bis 15

# Ausgabe der Variablen x, y und z
x   # Gibt den Wert von x aus
[1] 5
Code
y   # Gibt den Vektor y aus
 [1]  1  2  3  4  5  6  7  8  9 10
Code
z   # Gibt den Vektor z aus
 [1]  5  7  5  6 10 11 12 13 14 15

Matrizen , Arrays

Code
# Erstellen einer Matrix mit Werten von 1 bis 20 und 5 Spalten
m <- matrix(1:20, ncol = 5)

# Festlegen der Spaltennamen für die Matrix
colnames(m) <- c("A", "B", "C", "D", "E")

# Festlegen der Zeilennamen für die Matrix
rownames(m) <- c("R1", "R2", "R3", "R4")

# Ausgabe der Matrix
m
   A B  C  D  E
R1 1 5  9 13 17
R2 2 6 10 14 18
R3 3 7 11 15 19
R4 4 8 12 16 20
Code
# Erstellen eines Arrays mit Werten von 1 bis 20
# Das Array hat die Dimensionen 2x4x2, was bedeutet:
# - 2 Matrizen (erste Dimension)
# - Jede Matrix hat 4 Zeilen (zweite Dimension)
# - Es gibt insgesamt 2 Schichten (dritte Dimension)
my.array <- array(1:20, dim = c(2, 4, 2))

# Ausgabe des Arrays
my.array
, , 1

     [,1] [,2] [,3] [,4]
[1,]    1    3    5    7
[2,]    2    4    6    8

, , 2

     [,1] [,2] [,3] [,4]
[1,]    9   11   13   15
[2,]   10   12   14   16

2.4 Data Frames & Listen

Im Unterschied zu Arrays können Data Frames verschiedene Datentypen vereinen:

Code
# Erstellen eines Vektors mit den Werten 1 bis 4
a <- 1:4

# Erstellen eines Vektors mit Farben, wobei NA für fehlende Werte steht
b <- c("red", "white", "red", NA)

# Erstellen eines Vektors mit logischen Werten (TRUE/FALSE)
c <- c(TRUE, FALSE, TRUE, TRUE)

# Erstellen eines Data Frames mit den drei Vektoren
# Die Spalten werden benannt: ID, Color und Passed
my.data <- data.frame(ID = a, Color = b, Passed = c)

# Ausgabe des Data Frames
my.data
  ID Color Passed
1  1   red   TRUE
2  2 white  FALSE
3  3   red   TRUE
4  4  <NA>   TRUE

Listen

Code
# Erstellen einer Liste mit verschiedenen Datentypen
my.list <- list(
  some.numbers = 1:10,  # Vektor mit den Zahlen von 1 bis 10
  some.letters = c("a", "b", "c"),  # Vektor mit Buchstaben
  a.matrix = matrix(1:20, ncol = 4)  # Matrix mit Werten von 10 bis 20, aufgeteilt in 4 Spalten
)

# Ausgabe der Liste
my.list
$some.numbers
 [1]  1  2  3  4  5  6  7  8  9 10

$some.letters
[1] "a" "b" "c"

$a.matrix
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20

Zugriff auf Arrays, Data Frames und Listen

Code
# Erstellen eines Arrays mit Werten von 1 bis 20
# Das Array hat die Dimensionen 2x4x2, was bedeutet:
# - 2 Matrizen (erste Dimension)
# - Jede Matrix hat 4 Zeilen (zweite Dimension)
# - Es gibt insgesamt 2 Schichten (dritte Dimension)
my.array <- array(1:20, dim = c(2, 4, 2))

# Zugriff auf das Element in der ersten Zeile, zweiten Spalte und zweiten Schicht des Arrays
my.array[1, 2, 2]  # Gibt den Wert an dieser Position zurück
[1] 11
Code
# Zugriff auf die gesamte erste und zweite Schicht in der zweiten Spalte des Arrays
my.array[1:2, 2, 2]  # Gibt die Werte in der zweiten Spalte der zweiten Schicht zurück
[1] 11 12
Code
# Zugriff auf die gesamte zweite Schicht und dann auf die zweite Spalte
my.array[2,,][, 2]  # Gibt die Werte in der zweiten Spalte der zweiten Schicht zurück
[1] 10 12 14 16
Code
# Erstellen einer Liste mit verschiedenen Datentypen
my.list <- list(
  some.numbers = 1:10,  # Vektor mit den Zahlen von 1 bis 10
  some.letters = c("a", "b", "c"),  # Vektor mit Buchstaben
  a.matrix = matrix(1:20, ncol = 4)  # Matrix mit Werten von 10 bis 20, aufgeteilt in 4 Spalten
)

# Zugriff auf den Vektor some.numbers aus der Liste
my.list$some.numbers  # Gibt den Vektor der Zahlen von 1 bis 10 zurück
 [1]  1  2  3  4  5  6  7  8  9 10

2.5 Wahrscheinlichkeitsverteilungen in R

R bietet eine Vielzahl von Funktionen für verschiedene Wahrscheinlichkeitsverteilungen. Hier sind einige der wichtigsten Verteilungen und ihre zugehörigen R-Funktionen:

Normalverteilung

Die Normalverteilung ist eine der am häufigsten verwendeten Verteilungen in der Statistik. R stellt dafür vier Hauptfunktionen bereit1:

  • dnorm(): Berechnet die Wahrscheinlichkeitsdichte (density) an einem bestimmten Punkt.

  • pnorm(): Berechnet die kumulative Verteilungsfunktion (probability).

  • qnorm(): Berechnet Quantile (quantile).

  • rnorm(): Generiert Zufallszahlen (random numbers) aus der Normalverteilung.

Binomialverteilung

Die Binomialverteilung wird für diskrete Ereignisse mit zwei möglichen Ausgängen verwendet. R bietet folgende Funktionen3:

  • dbinom(): Wahrscheinlichkeitsfunktion

  • pbinom(): Kumulative Verteilungsfunktion

  • qbinom(): Quantilfunktion

  • rbinom(): Zufallszahlengenerator

Weitere Verteilungen

R unterstützt auch viele andere Verteilungen, darunter:

  • Kontinuierliche Gleichverteilung (dunif, punif, qunif, runif)

  • Poisson-Verteilung (dpois, ppois, qpois, rpois)

  • Exponentialverteilung (dexp, pexp, qexp, rexp)

  • Gamma-Verteilung (dgamma, pgamma, qgamma, rgamma)

  • t-Verteilung (dt, pt, qt, rt)

  • Chi-Quadrat-Verteilung (dchisq, pchisq, qchisq, rchisq)

  • F-Verteilung (df, pf, qf, rf)

Für jede dieser Verteilungen folgt R dem gleichen Namensschema: Der erste Buchstabe des Funktionsnamens (d, p, q, r) gibt an, ob es sich um die Dichte-, Verteilungs-, Quantil- oder Zufallszahlenfunktion handelt, gefolgt vom Kürzel für die spezifische Verteilung. Diese Funktionen ermöglichen es, verschiedene statistische Berechnungen und Simulationen durchzuführen, was R zu einem leistungsfähigen Werkzeug für die Arbeit mit Wahrscheinlichkeitsverteilungen macht.

Beispiele

Code
# Wahrscheinlichkeitsdichte für x=2.5 
# in der Standardnormalverteilung 
dnorm(2.5)
[1] 0.0175283
Code
# Wahrscheinlichkeitsdichte für x=5 
# aus einer Verteilung mit Mittelwert 5 und Standardabweichung 2 
dnorm(5, mean=5, sd=2)
[1] 0.1994711
Code
# Wahrscheinlichkeit dass Wert kleiner-gleich 2 
# in Standardnormalverteilung 
pnorm(2)
[1] 0.9772499
Code
## Erzeuge eine Sequenz von x-Werten von -3 bis 8
# Die Schrittweite von 0.0025 sorgt für eine glatte Kurve
x <- seq(-3, 8, by = 0.0025)

# Erstelle den Grundplot
plot(x, dnorm(x, mean = 0, sd = 1), 
     type = "l",                    # 'l' für Linie statt Punkte
     xlim = c(-3, 8),               # Setze die x-Achsengrenzen
     ylim = c(0, 0.8),              # Setze die y-Achsengrenzen
     xlab = "x",                    # Beschriftung der x-Achse
     ylab = "Dichtefunktion",       # Beschriftung der y-Achse
     main = "Normalverteilungen")   # Titel des Plots

# Füge eine zweite Normalverteilung hinzu: N(2, 0.5)
lines(x, dnorm(x, mean = 2, sd = 0.5), col = "blue")

# Füge eine dritte Normalverteilung hinzu: N(2, 2)
lines(x, dnorm(x, mean = 2, sd = 2), col = "darkorchid")

# Füge Textannotationen für jede Verteilung hinzu
# Die x- und y-Koordinaten sind manuell gewählt, um die Beschriftungen
# nahe den entsprechenden Kurven zu platzieren
text(0, 0.42, "N(0;1)", col = "black")     # Annotation für N(0,1)
text(3, 0.6, "N(2;0.5)", col = "blue")     # Annotation für N(2,0.5)
text(5, 0.1, "N(2;2)", col = "darkred")    # Annotation für N(2,2)

Code
library(ggplot2)

# Parameter festlegen
lambda <- 5  # Erwartungswert der Poisson-Verteilung (Anzahl der Schäden)
alpha <- 2   # Shape-Parameter der Gamma-Verteilung (für Schadenhöhe)
beta <- 1000 # Scale-Parameter der Gamma-Verteilung (für Schadenhöhe)

# Funktion zur Simulation der Compound Poisson-Verteilung
simulate_compound_poisson <- function(n, lambda, alpha, beta) {
  # Anzahl der Schäden simulieren (Poisson-verteilt)
  num_claims <- rpois(n, lambda)
  
  # Für jeden Simulationslauf die Schadenhöhen simulieren und summieren
  total_claims <- sapply(num_claims, function(x) {
    if (x == 0) return(0)
    sum(rgamma(x, shape = alpha, scale = beta))
  })
  
  return(total_claims)
}

# Simulation durchführen
set.seed(123)  # Für Reproduzierbarkeit
n_simulations <- 10000
total_claims <- simulate_compound_poisson(n_simulations, lambda, alpha, beta)

# Ergebnisse plotten
ggplot(data.frame(total_claims), aes(x = total_claims)) +
  geom_histogram(aes(y = after_stat(density)), bins = 50, fill = "skyblue", color = "black") +
  geom_density(color = "red", linewidth = 1) +
  labs(title = "Verteilung der Gesamtschadenhöhe (Compound Poisson)",
       x = "Gesamtschadenhöhe", y = "Dichte") +
  theme_minimal()

Die Compound Poisson-Verteilung ist ein wichtiges Modell im Risikomanagement, insbesondere in der Versicherungsmathematik. Sie wird häufig verwendet, um die Gesamtschadenhöhe in einem bestimmten Zeitraum zu modellieren. Hier ist ein Beispiel mit R-Code, Kommentaren und einem Plot:

Erläuterung:

Wir verwenden eine Poisson-Verteilung mit λ = 5, um die Anzahl der Schäden zu modellieren. Die Schadenhöhe jedes einzelnen Schadens wird durch eine Gamma-Verteilung mit α = 2 und β = 1000 modelliert. Die Funktion siumulate_ compound_ poisson simuliert für jeden Durchlauf zuerst die Anzahl der Schäden und dann die Summe der entsprechenden Schadenhöhen. Wir führen 10.000 Simulationen durch, um eine stabile Schätzung der Verteilung zu erhalten. Das Ergebnis wird als Histogramm mit überlagerter Dichtefunktion dargestellt.

2.6 Plots in R

R bietet eine Fülle von Möglichkeiten anspruchsvolle Plots zu erstellen. Dies gilt schon für R ohne Nutzung von Zusatzpaketen.

Insbesondere das Paket ggplot2 ist zur Ausweitung der Möglichkeiten sehr beliebt.

Die Erstellung von Plots ist unkompliziert. Hier ein paar Standards:

Code zeigen
# Setze einen Seed für Reproduzierbarkeit
#Erzeuge Pseudodaten
# Erstellen eines Vektors a mit 200 normalverteilten Zufallszahlen
# Der Mittelwert ist 10 und die Standardabweichung ist 5
a <- rnorm(200, 10, 5)

# Erstellen eines Vektors b, der von a abhängt
# b wird berechnet als a hoch 0.25 multipliziert mit (1 + zufällige Zahl zwischen 0 und 1 / 50)
b <- (a^0.25) * (1 + runif(200) / 50)

# Stelle die Plots in einem 2x2 Layout zusammen
par(mfrow = c(2, 2))

# Histogramm von a erstellen
hist(a, col = "darkred", main = "Histogramm mit 25+1 Säulen", breaks = 25)
# - col: Farbe des Histogramms
# - main: Titel des Histogramms
# - breaks: Anzahl der Säulen im Histogramm

# Boxplot von a erstellen
boxplot(a, col = "darkblue", main = "Boxplot")
# - col: Farbe des Boxplots
# - main: Titel des Boxplots

# Standardplot von a erstellen mit unterschiedlichen Farben für die Punkte
plot(a, col = 1:10, main = "Plot mit 10 Farben")
# - col: Farbzuweisung für die Punkte (hier werden die Farben von 1 bis 10 verwendet)
# - main: Titel des Plots

# Scatterplot von a gegen b erstellen
plot(a, b, main = "Scatterplot mit x-en", pch = "x", col = "red")

Alles wichtige zur Verwendung Farben in R, sowie einen HEX <-> RGB Converter findet man hier: Colors in R.

Die Syntax von ggplot2 ist etwas komplexer als die der Standardplotbefehle von R. Beispiel eines Plots unter Verwendung des Pakest ggplot2

Code zeigen
# Laden notwendiger Libraries (vgl....)
# Warnungen unterdrücken
# Unterdrücke Warnungen für diesen Skript
# Laden notwendiger Libraries (vgl....)
# Warnungen unterdrücken
options(warn = -1)

# Laden der benötigten Bibliotheken
library(ggplot2)    # Für die Erstellung von ggplot2-Plots
library(ggExtra)    # Für zusätzliche Funktionen wie marginale Plots

# Anzeigen der ersten sechs Zeilen des mtcars-Datensatzes
head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
Code zeigen
# Warnungen unterdrücken
options(warn = -1)

# Laden der benötigten Bibliotheken
suppressMessages({
  library(plotly)
  library(dplyr)
})

# Datenvorverarbeitung
mtcars_processed <- mtcars %>%
  mutate(cyl = as.factor(cyl)) %>%
  highlight_key(~cyl)  # Hervorhebung basierend auf Zylinderanzahl

# Farbpalette definieren
colors <- c("darkred", "darkblue", "darkgreen", "darkgrey")

# Erstellen eines Scatterplots
sp <- plot_ly(mtcars_processed, x = ~mpg, y = ~disp, color = ~cyl, 
              text = ~paste("Model:", rownames(mtcars))) %>%
  add_markers(marker = list(size = 10)) %>%
  layout(xaxis = list(title = "Miles per Gallon"),
         yaxis = list(title = "Displacement (cu.in.)"))

# Erstellen eines Histogramms für die Zylinderanzahl
hist <- plot_ly(mtcars_processed, x = ~cyl) %>% 
  add_histogram(marker = list(color = colors[2])) %>%
  layout(xaxis = list(title = "Number of Cylinders"),
         yaxis = list(title = "Count"))

# Erstellen eines Boxplots für die Displacement-Werte
box <- plot_ly(mtcars_processed, y = ~disp, color = ~cyl, type = "box") %>% 
  layout(yaxis = list(title = "Displacement (cu.in.)"))

# Erstellen eines Violin-Plots für die Displacement-Werte
violin <- plot_ly(mtcars_processed, y = ~disp, color = ~cyl, type = "violin") %>%
  layout(yaxis = list(title = "Displacement (cu.in.)"))

# Kombinieren der Plots in einem Subplot-Layout
subplot(
  sp, 
  subplot(box, violin, nrows = 2, shareX = TRUE, titleY = TRUE),
  hist,
  nrows = 2,
  heights = c(0.7, 0.3),
  shareX = TRUE,
  titleX = TRUE,
  titleY = TRUE
) %>%
layout(
  title = "Interactive Car Data Visualization",
  showlegend = TRUE,
  legend = list(title = list(text = "Cylinders"))
) %>%
highlight("plotly_selected", opacityDim = 0.2)
Setting the `off` event (i.e., 'plotly_deselect') to match the `on` event (i.e., 'plotly_selected'). You can change this default via the `highlight()` function.
Code zeigen
# Speichern des Plots als HTML-Datei
htmlwidgets::saveWidget(last_plot(), "interactive_car_data_plot.html")
Setting the `off` event (i.e., 'plotly_deselect') to match the `on` event (i.e., 'plotly_selected'). You can change this default via the `highlight()` function.
Code zeigen
# Warnungen unterdrücken
options(warn = -1)

# Erstellen eines Data Frames mit den Variablen x, y und z
df <- data.frame(
  x = c(1, 2, 2, 1, 1, 2),  # x-Werte
  y = c(1, 2, 2, 1, 1, 2),  # y-Werte
  z = c(1, 1, 2, 2, 3, 3)   # z-Werte (für Animation)
)

# Erstellen eines interaktiven Plots mit plotly
plot_ly(df) %>%
  add_markers(x = 1.5, y = 1.5) %>%  # Hinzufügen eines statischen Markers bei (1.5, 1.5)
  add_markers(x = ~x, y = ~y, frame = ~z) # Hinzufügen von Markern basierend auf den Werten in x und y
Code zeigen
# Erstellen eines animierten Plots mit mtcars-Daten
plot_ly(mtcars, x = ~wt, y = ~mpg, frame = ~cyl) %>%
  animation_opts(transition = 0) # Animation basierend auf der Zylinderanzahl (cyl)
No trace type specified:
  Based on info supplied, a 'scatter' trace seems appropriate.
  Read more about this trace type -> https://plotly.com/r/reference/#scatter
No scatter mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode
Code zeigen
# Überprüfen, ob die R-Sitzung interaktiv ist
if (interactive()) {
  
  # Erstellen eines ggplot-Objekts mit den txhousing-Daten
  p <- ggplot(txhousing, aes(month, median)) +
    suppressMessages(geom_line(aes(group = year), alpha = 0.3)) + # Linien für jeden Jahr gruppiert zeichnen
    geom_smooth() + # Glättungskurve hinzufügen
    suppressMessages(geom_line(aes(frame = year, ids = month), color = "red")) + # Rote Linie für Animation
    facet_wrap(~ city) # Facettierung nach Stadt

  # Umwandeln des ggplot-Objekts in ein plotly-Objekt
  ggplotly(p, width = 1200, height = 900) %>%
    animation_opts(1000) # Animation mit einer Dauer von 1000 ms (1 Sekunde)
}

Die R Graph Gallery bietet in der Tat eine beeindruckende Darstellung der vielfältigen Plottingmöglichkeiten in R. Sie präsentiert die umfangreichste Sammlung von R-generierten Grafiken im Internet mit über 400 Beispielen.

Das Beispiel der Normalverteilung Schreibe in das Command Window den Funktionsnamen für die Dichte der Normalverteilung:

Code
dnorm
function (x, mean = 0, sd = 1, log = FALSE) 
.Call(C_dnorm, x, mean, sd, log)
<bytecode: 0x000001f7cdb0f300>
<environment: namespace:stats>

R führt uns die Argumente x, mean = 0, sd = 1, log = FALSE auf. Der Mittelwert mean, die Standardabweichung sd sowie die Option log (logarithmisch?) sind mit Standardwerten befüllt. Ändert man diese nicht, so arbeitet man also mit der Standardnormalverteilung und es reicht einen Wert für x einzugeben, z.B.

Code
# Berechnung der Dichte der Normalverteilung an der Stelle x = 1
dnorm_value <- dnorm(1)  # Gibt den Dichtewert für x = 1 zurück

# Erstellen einer Sequenz von Werten von -2 bis 2 mit einer Schrittweite von 0.05
values <- seq(-2, 2, by = 0.05)

# Setzen von Parametern für die Plot-Darstellung
paged.print <- TRUE  # Diese Variable hat hier keine Funktion, könnte aber für andere Zwecke verwendet werden
pch <- 15            # Punktzeichen für die Darstellung im Plot (Quadrat)

# Ausgabe der Werte zur Überprüfung
values 
 [1] -2.00 -1.95 -1.90 -1.85 -1.80 -1.75 -1.70 -1.65 -1.60 -1.55 -1.50 -1.45
[13] -1.40 -1.35 -1.30 -1.25 -1.20 -1.15 -1.10 -1.05 -1.00 -0.95 -0.90 -0.85
[25] -0.80 -0.75 -0.70 -0.65 -0.60 -0.55 -0.50 -0.45 -0.40 -0.35 -0.30 -0.25
[37] -0.20 -0.15 -0.10 -0.05  0.00  0.05  0.10  0.15  0.20  0.25  0.30  0.35
[49]  0.40  0.45  0.50  0.55  0.60  0.65  0.70  0.75  0.80  0.85  0.90  0.95
[61]  1.00  1.05  1.10  1.15  1.20  1.25  1.30  1.35  1.40  1.45  1.50  1.55
[73]  1.60  1.65  1.70  1.75  1.80  1.85  1.90  1.95  2.00
Code
# Erstellen eines Plots der Normalverteilung
plot(values, dnorm(values), 
     col = "darkred",   # Farbe der Punkte auf dunkelrot setzen
     pch = pch,         # Verwendung des definierten Punktzeichens (Quadrat)
     main = "Normalverteilung",  # Titel des Plots
     xlab = "x-Werte",  # Beschriftung der x-Achse
     ylab = "Dichte")   # Beschriftung der y-Achse

3 Interaktive Dashboards

3.1 R Shiny

R Shiny ist ein leistungsfähiges Framework für die Programmiersprache R, mit dem sich interaktive Webanwendungen und Dashboards erstellen lassen.

Mit R Shiny können Entwickler ohne tiefgreifende HTML-, CSS- oder JavaScript-Kenntnisse interaktive Anwendungen erstellen. Shiny verwendet ein reaktives Programmiermodell, bei dem Änderungen der Eingabewerte automatisch Aktualisierungen der Ausgabe auslösen. Es können eigenständige Anwendungen, eingebettete interaktive Elemente in R-Markdown-Dokumenten oder komplexe Dashboards erstellt werden. Shiny-Anwendungen können auf den vollen Funktionsumfang von R und seinen Paketen zugreifen, was komplexe Datenanalysen und Visualisierungen ermöglicht.

Anwendungen können über einen Shiny Server oder Cloud-Dienste wie shinyapps.io veröffentlicht werden.

Es gibt eine kostenlose Open-Source-Version des Shiny Servers sowie eine kostenpflichtige Enterprise-Version mit erweitertem Funktionsumfang.

Nachstehendes Video zeigt eine von uns erstellte R Shiny Anwendung zur Aggregation von quantifizierten Risiken, die aus einem Risikoregister eingelesen werden können, welches als MS Excel®Datei vorliegt:

Hier ein weiteres Beispiel: Eine Anwendung zum Fitten von Wahrscheinlichkeitsverteilungen:

3.2 MS Power BI

Auch MS Power BI®lässt sich mit der Verwendung von R zur Erstellung interaktiven Dashboards kombinieren.

Das nachstehende Beispiel zeigt die Kombination eines R GUIS mit MS Power BI®. Dabei werden verschiedene klassische Methoden der Reservierung von Versicherungsschäden genutzt:

R ermöglicht komplexe statistische Analysen, prädiktive Modellierung und maschinelles Lernen innerhalb von Power BI. Dies erlaubt tiefere Einblicke in die Daten und die Generierung neuer Informationen.

Mit R-Skripten können Benutzer Daten in Power BI importieren, transformieren und aufbereiten. Dies erhöht die Flexibilität bei der Datenmodellierung und -vorbereitung.

Integration in den Power BI-Workflow: R kann an verschiedenen Stellen in Power BI eingesetzt werden, z.B. als Datenquelle, für Datentransformationen im Query Editor oder als R-Visual im Bericht. Dies ermöglicht eine nahtlose Integration in bestehende Power BI-Projekte.

Durch die Integration von R in Power BI können Unternehmen also ihre Datenanalyse-Fähigkeiten erheblich verbessern und von der Kombination aus benutzerfreundlicher BI-Plattform und leistungsfähiger Programmiersprache profitieren.

4 Risiko & Wahrscheinlichkeit

Der Begriff des Risikos ist allgegenwärtig und findet sich dabei auch immer wieder in hochformalisierten Kontexten wie z.B.  Gesetzestexten. Dennoch unterliegt er einer ihm eigentümlichen Unschärfe 4.  Der mit dem Risikobegriff eng verwobene Begriff der Wahrscheinlichkeit ist ebenfalls unscharf und wird dennoch ubiquitär verwendet.

Der Wahrscheinlichkeitsbegriff ist -aus unserer Sicht- gegenüber dem Risikobegriff grundlegend und daher überträgt sich die Vagheit dieses Begriffes auch auf den Risikobegriff. Allerdings speist sich die Unschärfe des Risikobegriffes nicht allein aus der Unschärfe des Wahrscheinlichkeitsbegriffes. Es kommen weitere Vagheitselemente hinzu.

Für die Zwecke des Risikomanagements und auch für regulatorische Zwecke scheint es geboten, allgemeinverbindliche Explicata für die Explicanda Wahrscheinlichkeit und Risiko zu finden. Mindestens aber sollte man sich der unterschiedlichen Verwendungen des Wortes -welches eher eine Begriffsfamilie als einen festen Einzel-Begriff bezeichnet- bewusst sein.

Rudolf Carnap hat sich mit dem Begriff der Explikation bzw. rationalen Nachkonstruktion von Alltagsbegriffen beschäftigt und diesen insbesondere auch auf die Explikation des Alltagbegriffs der Wahrscheinlichkeit angewandt5 . Der Wahrscheinlichkeitsbegriff wurde bereits in den 1920er und 1930er Jahren intensiv diskutiert und diese Diskussion führte zu sich gegenseitig ausschließenden  Explicata. Zu nennen sind hier insbesondere Rudolf Carnap über Begriffsexplikation :  „Die Aufgabe der Begriffsexplikation besteht darin, einen gegebenen, mehr oder weniger unexakten Begriff durch einen exakten zu ersetzen. Der gegebene Begriff (sowie der dafür verwendete Ausdruck) soll Explikandum heißen, den exakten Begriff (sowie den dafür vorgeschlagenen Ausdruck) hingegen, der den ersten ersetzen soll, nennen wir Explikat. Das Explikandum kann der Sprache des Alltags oder einem frühen Stadium der Wissenschaftssprache entnommen sein. Das Explikat muß durch explizite Regeln für seine Anwendung gegeben werden. Dies kann z. B. durch eine Definition geschehen, welche diesen Begriff in ein bereits vorhandenes System von logisch-mathematischen oder empirischen Begriffen einordnet.”

Rudolf Carnap (1891-1970)

Es wird sich erweisen, dass zu dem Alltagsbegriff Risiko mehrere Explicata zu erstellen sind. Auch für praktische Zwecke ist es wichtig, sich auf ein möglichst präzises gemeinsames Verständnis zu einigen. Eine Option kann es auch sein, den Risikobegriff gänzlich zu vermeiden, um stattdessen einfach zu fordern, alle wichtigen Kenngrößen und Einflussfaktoren eines Unternehmens bzw. eines Projektes stets als nicht-deterministische, sondern stochastische Größen zu betrachten. Ob es sich dann dabei eher um „Risiken”, „Chancen” oder eine „Kombination von Risiken und Chancen” handelt, zeigt jeweils die genauere Analyse, welche ihrerseits mit präzise definierbaren „Risiko”-maßen dokumentiert werden kann.

Der gegenwärtige Umgang mit den Begriffen „Risiko” und „Wahrscheinlichkeit” zeichnet sich dagegen teils durch ein exorbitantes Maß an Ignoranz und Naivität in begriffshistorischer und begriffskritischer Hinsicht aus.

Ein Beispiel hierfür ist die häufig vertretene Meinung, der Wahrscheinlichkeitsbegriff sei mit dem Axiomensystem von Kolmogorov gleichzusetzen.

Der russische Mathematiker Andrei Kolmogorov stellte in den 1930 er Jahren ein Axiomensystem für die mathematische Wahrscheinlichkeitstheorie auf. Wenngleich dieses Axiomensystem mathematisch sehr fruchtbar ist, so erklärt es keineswegs den Begriff Wahrscheinlichkeit. Dies gilt schon deshalb, weil die Axiome vielfältige Interpretationen erlauben und es im Sinne der mathematischen Modelltheorie Modelle gibt, die diesen Axiomen entsprechen aber nichts mit dem Begriff der Wahrscheinlichkeit zu tun haben.

Andrei Kolmogorov (1903-1987)

Letztendlich ist die Kolmogorov-Wahrscheinlichkeit einfach ein auf 1 normiertes Maß und damit ein Begriff der Maßtheorie, die ihrerseits die klassischen Integralbegriffe verallgemeinert. Wäre also die naive Interpretation der Kolmogorov Axiome tatsächlich ein Explikat des Wahrscheinlichkeitsbegriffes, so folgte daraus, dass bereits Newton und Leibniz dieses Explikat für einen Gutteil von Anwendungsfällen zur Hand hatten. Die intendierte Anwendung der Integrale bezog sich aber zuallererst auf die klassische Mechanik und nicht auf Wahrscheinlichkeiten. So gesehen ist es geradezu absurd, in den Kolmogorov Axiomen ein Explikat für Wahrscheinlichkeit zu sehen.

Diese Beobachtung schmälert in keiner Weise die Bedeutung dieser Axiome. Eine gute Einführung in die klassische Wahrscheinlichkeitstheorie bietet z.B. B.W. Gnedenko6 .

Dass auch die scheinbar klare Einteilung in Chancen und Risiken ihre Tücken hat, zeigt etwa nachstehendes Beispiel:

Ein Handelsunternehmen möge in drei unterschiedlichen Geschäftsbereichen immer mal wieder – je Geschäftsbereich etwa alle 2 bis 3 Jahre –  ein lukratives Zusatzgeschäft akquirieren können. Alle drei Bevollmächtigten dieser Geschäftsbereiche würden dann typischerweise am Anfang des Jahres von der Chance sprechen, ein solches Geschäft zu akquirieren. Umgekehrt würde man aber auch das gänzliche Ausbleiben aller Zusatzgeschäfte z.B. in den nächsten 3 Jahren nicht zu Unrecht als Risiko bezeichnen. Hier wird dann Möglichkeit, dass sich Risiken nicht realisieren als Chance bezeichnet. Umgekehrt würde man die Nicht-Realisierung relativ wahrscheinlicher Risiken als Chance bezeichnen. Je nach Länge des betrachteten Zeitraumes, der Höhe der Ereigniswahrscheinlichkeiten und dem Clustern der Risiken tendiert  man eher zu der einen oder der anderen Ausdrucksweise.

Manche sprechen von Risiken, die mittels eines Risikomaßes bemessen werden können, andere bezeichnen dagegen das Maß selbst als Risiko und sprechen von der Risikoeinschätzung einer identifizierten Gefährdung. Risiko wird dann z.B. im technischen Bereich (etwa DIN-Norm VDE 31000 7) als Produkt der ungewollten Konsequenzen eines Ereignisses und der Wahrscheinlichkeit des Auftretens bezeichnet.

Dass die scheinbar klare Disjunktion möglicher Entwicklungen in Chancen und Risiken ihre Tücken hat, zeigt nachstehendes Beispiel:

Ein Handelsunternehmen möge in drei unterschiedlichen Geschäftsbereichen immer mal wieder – etwa alle 2 bis 3 Jahre –  ein lukratives Zusatzgeschäft akquirieren  können. Alle drei Bevollmächtigten dieser Geschäftsbereiche würden dann typischerweise am Anfang des Jahres von der Chance sprechen, ein solches Geschäft zu akquirieren.  Umgekehrt würde man aber auch das gänzliche Ausbleiben aller Zusatzgeschäfte z.B. in den nächsten 3 Jahren nicht zu Unrecht als Risiko bezeichnen. Hier wird dann Möglichkeit, dass sich Risiken nicht realisieren, als Chance bezeichnet. Umgekehrt würde man die Nicht-Realisierung  relativ wahrscheinlicher Risiken als Chance bezeichnen. Je nach Länge des betrachteten Zeitraumes, der Höhe der Ereigniswahrscheinlichkeiten und dem Clustern der Risiken tendiert  man eher zu der einen oder der anderen Ausdrucksweise.

Manche sprechen von Risiken, die mittels eines Risikomaßes bemessen werden können, andere bezeichnen dagegen das Maß selbst als Risiko und sprechen von der Risikoeinschätzung einer identifizierten Gefährdung. Besonders in technischen Kontexten (etwa DIN-Norm VDE 31000 ) wird Risiko als Produkt der ungewollten Konsequenzen eines Ereignisses und der Wahrscheinlichkeit des Auftretens verstanden, also mit einer bestimmten Form der Quantifizierung identiofiziert.

In den meisten Fällen ergibt sich aus dem Kontext, was jeweils gemeint ist. Ein gewisses Problembewusstsein der Unklarheiten der verwendeten Begrifflichkeiten, wird aber hilfreich sein, Mißverständnisse z.B. in der Kommunikation zwischen verschiedenen Risk Ownern oder auch in der Kommunikation mit der Unternehmensleitung zu vermeiden.

4.1 Gefahr und Risiko

Aus der soziologischen Literatur stammt ein interessanter Präzisierungsansatz für den Risikobegriff. Dieser läuft darauf hinaus, Gefahr und Risiko streng zu unterscheiden. Mit dieser Thematik befasste sich insbesondere der mit seiner Systemtheorie einflussreiche Bielefelder Soziologe Niklas Luhmann 8

Laut Luhmann soll immer dann von Risiko die Rede sein, “wenn eine Entscheidung ausgemacht werden kann, ohne die es nicht zu dem Schaden kommen könnte” und “dass der kontingente Schaden selbst kontingent, also vermeidbar, verursacht wird.” (Luhmann 1991, S. 25)

Niklas Luhmann (1927-1998)

Sowohl Gefahr als auch Risiko beinhalten ein Moment der Unsicherheit. Anders als das Risiko ist aber die Gefahr nicht durch Entscheidungen der Person oder des betrachteten Systems beeinflussbar. Im Falle einer Gefahr werden Schäden extern verursacht und dem System ist nicht bekannt, durch welche Maßnahmen es diese Schäden vermeiden bzw. reduzieren könnte.

In Zeiten, in denen das relevante Wissen über Infektionskrankheiten nicht vorhanden war, waren solche Krankheiten ein Beispiel für Gefahren. Mit dem Fortschritt der medizinischen Wissenschaften werden Ansteckungsgefahren aber immer mehr auch als  durch Entscheidungen  beeinflussbare Ansteckungsrisiken gesehen.

Dieses Unterscheidungsmerkmal zwischen Gefahr und Risiko stimmt auch recht gut mit dem Befund überein, wie man ihn durch eine einfache statistische Auswertung des Wortgebrauchs der beiden Wörter „Risiko” und „Gefahr” erhält. Wir haben uns dazu die von der Universität Leipzig zur Verfügung gestellte Webseite 9 zunutze gemacht. Die Ergebnisse dazu haben wir im Anhang aufgeführt.

Einen ausführlichen und interessanten Rekurs auf die Luhmannsche Theorie des Risikos findet man z.B. in der Dissertation von Juergen Weichselgartner 10.

Daneben gibt es allerdings auch gänzlich andere semantische Grenzziehungen zwischen Gefahr und Risiko. So spricht man z.B. in der Toxikologie von Gefahr dann, wenn ein Produkt durch Exposition ein Risiko generiert. Das Risiko wird dann im Wesentlichen als Produkt aus  Gefährdungspotential und Exposition quantifiziert. Statt von Gefahr wird hier oft auch von Gefährdungspotential gesprochen. Das Wort Gefährdungspotential ist streng genommen allerdings ein Pleonasmus, da bereits im Begriff Gefahr auf ein Potential und nicht auf eine aktuell wirksame Entität verwiesen wird11. Wie auch z.B. in einer Mitteilung des Bundesinstituts für Risikobewertung hervorgehoben wird ist die Unschärfe und die Mehrdeutigkeit des Risikobegriffs besonders bei der Teilnahme an der öffentlichen Risikokommunikation zu beachten, vgl. BfR: „Risiko” oder „Gefahr”?  Experten trennen nicht einheitlich12.

Ähnlich auch die juristische Definition: “Unter einer Gefahr versteht man einen Zustand, bei dem auf Grund tatsächlicher Umstände die Wahrscheinlichkeit des Eintritts eines schädigenden Ergebnisses besteht.”

Irritierend hierbei ist, dass zwischen der Gefahr und dem Schaden sprachlich noch ein Ergebnis zwischengeschaltet wird, welches seinerseits den Schaden generiert. Offen bleibt zudem, welche weitere Bedingung durch den Zusatz „auf Grund tatsächlicher Umstände” hinzugefügt wird. Weiterhin muß gesagt werden, dass zumindest in jedem System, welches einer gewissen Dynamik unterliegt, immer eine positive Wahrscheinlichkeit für Schädigungen besteht. Dies wäre nur dann nicht der Fall, wenn das betrachtete System gänzlich neutral gegenüber einem wie auch immer angesetzten Schadenmaß ist.

Insgesamt zeigt sich, dass die Trennlinie zwischen Gefahr und Risiko gänzlich unterschiedlich gezogen wird. Die von Niklas Luhmann gezogene Grenzlinie erscheint hinreichend präzise und hat in praktischer Hinsicht einen besonderen Charme.

4.2 Vom Umgang mit Wahrscheinlichkeiten

Wahrscheinlichkeiten sind intuitiv nur schwer zu greifen und beim Operieren mit Wahrscheinlichkeiten muss man sich besonders vor Fehlschlüssen hüten. Zu den typischen logischen Fehlschlüssen, die auch ohne einen Rekurs auf Wahrscheinlichkeiten häufig vorkommen, birgt der Umgang mit Wahrscheinlichkeiten zusätzliches Potential für Fehlschlüsse.

Solche Fehlschlüsse können häufig dadurch vermieden werden, dass man die Prämissen einer Schlußfolgerung dezidiert präzise formuliert. Übersetzt man die Prämissen in eine formalisierte Sprache (insbesondere eine Programmiersprache), so wird man gezwungen, alles exakt zu beschreiben. Allerdings ist darauf zu achten, dass bei diesem Übersetzungsprozess keine wichtige Information verloren geht, sonst erhält man zwar präzise formulierte Ausagen, diese geben dann aber nicht das eigentlich Gemeinte vollständig wider. Dieser Übersetzungsprozess kann mühsam sein.

Gerade wenn es um bedingte Wahrscheinlichkeiten geht, neigen wir alle zu Denkfehlern. Dies gilt sogar für einschlägig geschulte Personen.

Bekannt ist das sogenannte Monty Hall Problem. Einerseits widersetzt es sich hartnäckig einem intuitiven Zugriff, andererseits wirkt es (hat man es einmal verstanden) gerade zu trivial.

Monty Hall moderierte bereits in den 60er Jahren die Show “Let’s make a deal”. In dieser Show hatte der Kandidat die Möglichkeit zwischen drei dooren zu wählen. Hinter einem door befindet sich der Hauptgewinn, hinter den anderen beiden Türen jeweils eine Niete: Die Ziege. Der Kandidat wählt in diesem Glücksspiel eine Tür aus.Nachdem eine Tür ausgewählt wurde,öffnet der Moderator eine der beiden anderen Türen mit einer Ziege dahinter und fragt den Kandidaten, ob er die Tür wechseln möchte. Dabei wird angenommen, dass der Showmaster immer eine nicht gewählte Tür mit einer Zige dahinter öffnet und er den Wechsel als Option anbietzen muss.

Die meisten Menschen meinen, ein Wechsel der Tür habe keinen Einfluß auf die Erfolgswahrscheinlichkeit. Tatsächlich erhöht der Wechsel aber die Gewinnaussichten von 1/3 auf 2/3.

Die Behauptung, dass es richtig ist, die Türen zu wechseln, scheint selbst für Personen mit umfassender statistischer Ausbildung kontraintuitiv zu sein13. Die sogenannte Erdös-Zahl ist eine über die Koautorenschaft bestimmte Maßzahl des kooperativen Abstandes eines Mathematikers zum Mathematiker Paul Erdös. Dies wirft ein Licht auf die Bedeutung des Mathematikers Erdös. Eben dieser Erdös hatte ernstfhafte Schwierigkeiten die Probabilistik des Monty Hall Spieles zu verstehen. Erst eine Monte-Carlo Simulation konnte ihn überzeugen. Erdös war mit Ulam, einem der Entwickler der Monte-Carlo Methodik befreundet und schrieb einen biographischen Text zu Ulam.

Simulation von 500 Monty Hall Spielen:

Code zeigen
# Setze einen Keim für den Zufallsgenerator
set.seed(14)

# Anzahl der Spiele
n_games=500

# Definiere die Simulationsfiunktion
simulate_game = function(make_switch = FALSE, n_doors = 3L, seed = NULL) {
 
  if (!is.null(seed)) set.seed(seed)
   doors = seq_len(n_doors)
  
  isClosed = rep(TRUE, length = n_doors)
 
  prize_index = sample(doors, size = 1)

  choice_index = sample(doors, size = 1)
  

  if (prize_index == choice_index) {
     isClosed[sample(doors[-prize_index], size = n_doors - 2)] = FALSE
  } else {
    
    isClosed[-c(prize_index, choice_index)] = FALSE
  }
 
  if (make_switch) {

    choice_index = doors[isClosed][doors[isClosed] != choice_index]
  }
  

  return(choice_index == prize_index)
}

simulate_n_games = function(n, seed = NULL, make_switch = FALSE, ...) {

  return(vapply(rep(make_switch, n), simulate_game, logical(1), ...))
}

library(ggplot2)


linesize = .6 
x_breaks = y_breaks = seq(from = 0, to = n_games, length.out = 10 + 1) 
y_limits = c(0, n_games) # limits of the y axis - makes y limits 
w = 8 
h = 5 
palette = setNames(c('darkblue', 'darkred'), nm = c('mit Wechsel der Tür', 'ohne Wechsel der Tür')) 

results_without_switching = simulate_n_games(n = n_games, seed = seed, make_switch = FALSE)
results_with_switching = simulate_n_games(n = n_games, seed = seed, make_switch = TRUE)


results = data.frame(
  game = seq_len(n_games),
  cumulative_wins_without_switching = cumsum(results_without_switching),
  cumulative_wins_with_switching = cumsum(results_with_switching)
)


format_percentage = function(values, digits = 1) {
  return(paste0(formatC(values * 100, digits = digits, format = 'f'), '%'))
}


title = paste("")

# Generiere einen Plot der simulierten Spielverläufe
ggplot(data = results) +
  geom_line(aes(x = game, y = cumulative_wins_with_switching / game, col = names(palette[1])), linewidth = linesize) +
  geom_line(aes(x = game, y = cumulative_wins_without_switching / game, col = names(palette[2])), linewidth = linesize) +
  scale_x_continuous(breaks = x_breaks) +
  scale_y_continuous(labels = function(x) format_percentage(x, digits = 0)) +
  scale_color_manual(values = palette) +
  theme_minimal() +
  theme(legend.position = c(1, 1), legend.justification = c(1, 1), legend.background = element_rect(fill = 'white', color = 'transparent')) +
  labs(x = 'Anzahl der Simulationen') +
  labs(y = 'Gewinne %') +
  labs(col = NULL) +
    labs(title = title)

5 Modelle

Modelle sind ein wesentliches Werkzeug des Risikomanagements. Wir werden später etwas näher auf den Modellbegriff eingehen. Ein risikotheoretisches Unternehmensmodell zeichnet sich dadurch aus, dass es alle oder aber wenigsten die wichtigsten Erfolgsgrößen (KPIS) stochastisch und eben nicht deterministisch modelliert. Streng genommen ist der Risikobegriff nicht konstitutiv für ein solches Modell und ist insofern verzichtbar.

Modellsegmente mit signifikantem negativem Einflusspotential auf die jeweilig betrachtete Zielgröße lassen sich als Risiko für diese Zielgröße beschreiben. Und entsprechend umgekehrt: Modellsegmente mit signifikantem positivem Einflusspotential auf  die jeweilige Zielgröße lassen sich als Chance für diese Zielgröße beschreiben

Die so verwendeten Begriffe Risiko & Chance sind nunmehr lediglich einfache praktische  Begriffe, um das u.U. komplexe System von Modellsegmenten heuristisch zu strukturieren und zu prüfen, ob das Modell wesentliche Adäquatheitsbedingungen erfüllt. Zu beachten ist aber, dass die Einteilung in Risiken und Chancen nicht immer so eindeutig festgelegt werden kann, wie es auf den ersten Blick scheinen mag.

Für unsere Zwecke wollen wir folgende Definitionen nutzen:

In Anlehnung an Kaplan, S. & Garrick, B.J. nennen wir ein mögliches Ereignis 14 ein Risiko, wenn es im Realisierungsfall einen Schaden verursacht/ beinhaltet und sein Eintritt oder/und das Ausmaß des Schadens unsicher ist15 .

Ein Risiko ist quantifiziert, wenn sowohl seine Eintrittswahrscheinlichkeit als auch das Schadenausmaß im Eintrittsfall quantifiziert wurden. Ist die Eintrittswahrscheinlichkeit 1 und das Schadenausmaß des möglichen Ereignisses ein fixer Wert, so bezeichnen wir dieses mögliche Ereignis nicht als Risiko, sondern als einen (noch nicht realisierten) aber unvermeidbaren Schaden. Das Schadenausmaß kann verschieden bemessen werden, es kann sich beispielsweise um Personenschäden oder lediglich um monetäre Schäden handeln. Im Weiteren werden wir durchgehend annehmen, dass der Schaden immer ein monetär messbarer Schaden ist und dass das Schadenausmaß durch das monetäre Maß jeweils vollständig beschrieben ist . Dass dies besonders auch aus ethischen Gründen nicht immer ausreichend ist, soll natürlich damit keineswegs bestritten werden. Die Beschränkung auf rein monetäre Maße dient allein der Themenfokussierung und dem Versuch, das ohnehin sehr vielfältige Thema an dieser Stelle ein wenig einzugrenzen. Im diskreten Fall besteht die Quantifizierung eines Risikos aus einer Liste von Wahrscheinlichkeiten pi  mit zugehörigen Schadenwerten Si

pi Si
0.750 0
0.100 1000
0.075 2500
0.050 5000
0.025 7500

Im einfachsten Fall („Risiko-Atom”) haben wir nur eine Wahrscheinlichkeit p mit 0<p<1 und einen Schadenwert S, das liefert die Liste:

pi Si
1-p 0
p S

Die Bedingung 0<p<1 besagt gerade, dass das Ereignis kontingent ist. Wir können das durch Tabelle 1 quantifizierte Risiko auch so in zwei Komponenten darstellen:

(i) Tabelle der Wahrscheinlichkeiten p’i für den Schaden Si unter der Bedingung, dass das infrage stehende Ereignis eingetreten ist:

pi Si
1-p 0
p S
  1. Angabe zur Wahrscheinlichkeit  P des Eintretens des Ereignisses                                     P = 0.25 = 1 - 0.75. 
    Die pi ergeben sich dabei wie folgt: pi = pi / P

Die Tabellen 2 und 3 stellen einfache diskrete Wahrscheinlichkeitsverteilungen (W-Verteilungen) dar. Allgemeine W-Verteilungen lassen sich als Verallgemeinerung solcher einfachen Verteilungen verstehen. Weiter unten werden wir näher auf die allgemeine Definition von W-Verteilungen eingehen, eine Liste verschiedener Verteilungstypen aufführen, welche in der Quantifizierung von Risiken eine wichtige Rolle spielen sowie ihre Verwendung mittels der Software R erläutern. Die mittels Tabelle 1 bzw. Tabelle 3 & P gegebenen Quantifizierungen sind gleichwertig. Aus praktischen Gründen ist aber häufig die Form: Tabelle vom Typ Tabelle 3 plus Angabe einer Eintrittswahrscheinlichkeit vorzuziehen. Zudem wird hier offensichtlich, dass dies tatsächlich eine Quantifizierung im Sinne der obigen Definition der Quantifizierung eines Risikos ist.

Anmerkung:

Wir haben hier implizit angenommen, dass wenn sich ein Ereignis eines fraglichen Typs realisiert hat, immer auch ein Schaden eingetreten ist. Diese Form der Modellierung ist nicht zwingend. Das Risikoereignis kann auch so definiert sein, dass bei seiner Realisierung nur mit einer bestimmten positiven Wahrscheinlichkeit ein Schaden eintritt.

Die Trennlinie zwischen Ereignis und Schaden folgt häufig einer Konvention und ist in diesem Sinne nicht zwingend. Wir wollen jetzt etwas genauer sagen, dass ein Risiko durch die Angabe einer Eintrittswahrscheinlichkeit und einer Schadenhöhenverteilung quantifiziert wird. Kann das mögliche Ereignis auch mehrmals eintreten, so wird auch die Ereignisfrequenz durch eine Wahrscheinlichkeitsverteilung dargestellt. Der oben behandelte spezielle Fall, bei dem das Ereignis höchsten einmal (mit Wahrscheinlichkeit p) eintritt ist ein Spezialfall hiervon: Die Verteilung ist eine Bernoulli-Verteilung.

Jedes Modell ist eine vereinfachte Darstellung der Wirklichkeit. So arbeitet die Physik oft mit Modellen, in welchen von Reibungseffekten abgesehen wird. Bei der Verwendung solcher Modelle muss die Adäquatheit der Vereinfachungen im Hinblick auf die mit dem Modell verfolgten Ziele gesichert sein. Es muß angenommen werden können, dass „Reibungseffekte” die Modellergebnisse nicht zu weit von der Realität entfernt sein lassen. Typische Vereinfachungen von denen Modelle Gebrauch machen:

  • Annahme, dass bestimmte Aspekte unbedeutend sind und nicht beachtet werden müssen

  • Annahme, dass eine Größe über den Zeitverlauf, der im Modell analysiert wird, konstant bleibt.

  • Annahme, dass die stochastische Verteilung einer Größe bekannt ist.

  • Annahme, dass einige Teile des Modells von anderen unabhängig sind.

Welche heuristischen Regeln gelten bei der Erstellung eines Modelles? Wir möchten dazu hier folgende Postulate aufstellen: Konkrete Aufgabenstellung Wie oben erwähnt, ist ein Modell ein vereinfachtes Abbild der Realität. Deswegen sollte immer am Anfang ein konkretes Phänomen vor Augen sein, das Gegenstand der Modellierung ist. Dazu sollte eine Zielsetzung klar definiert sein: Welche Aspekte des Phänomens soll das Modell abbilden?

Andreas Kopp: REISE UND HEIMKEH

Andreas Kopp: REISE UND HEIMKEH

Jedes Modell reduziert reale Phänomene auf Abstrakta, welche eine Vielfalt von Aspekten ausblenden oder strukturieren und damit oft stark vereinfacht wiedergeben. Nur so werden reale Phänomene intellektuell greifbar. Hat man geschickt abstrahiert, so findet man sich in der Welt besser zurecht und kann mitunter Ziele effektiver und effizienter erreichen. Ein Modell ist nicht falsch oder richtig, sondern gut oder weniger gut anwendbar. Die Güte eines Modells bemisst sich damit insbesondere auch nach den damit verfolgten Zielen, die wiederum selbst nur in abstrakter Form formulierbar sind. Auch wer ohne ein ausformuliertes Modell („ohne Modell“) arbeitet, nutzt vereinfachende Sichtweisen auf die Phänomene, nur tut er dies weniger bewusst und die Grenzen der Abstraktionen werden noch weniger reflektiert. Gerade im Risikomanagement haben wir es meist mit hochkomplexen, multidimensionalen Zusammenhängen zu tun. Daher ist es gerade hier wichtig, bewusst zu modellieren. Die vergleichende Bewertung der Güte alternativer Modelle kann entscheidend dazu beitragen, die Modellgüte zu steigern. So lässt sich auch herausarbeiten, ob die Reduktion auf ein kleines Bündel von Rechtecken ein geeignetes Modell sein kann, oder ob doch einige Rundungen genauer bemessen werden sollten.

Zur genauen Abgrenzung des Modellumfangs ist es oft hilfreich eine hermeneutische Spirale zu durchlaufen: Vor Erstellung des Modells wird der Gegenstand des Modells bereits möglichst genau umrissen. Ein erster Modellentwurf und dessen Anwendung kann dann Anlass geben, den Modellumfang einzugrenzen oder auszuweiten. Dies führt zu weiteren Modellentwürfen mit denen unter Umständen ähnlich zu verfahren ist.

Die Principal Component Analysis (PCA)16, auf Deutsch Hauptkomponentenanalyse, ist ein Verfahren der multivariaten Statistik zur Dimensionsreduktion und Strukturierung umfangreicher Datensätze. Hauptziele der PCA sind:

  • Die Anzahl der Variablen in einem großen Datensatz zu verringern

  • Die wichtigste Information des Datensatzes zu extrahieren

  • Die Varianz im Datensatz mit weniger Dimensionen bestmöglich abzubilden

Hier ein synthetisches Beispiel:

Code
# Benötigte Pakete laden
library(ggplot2)

# Pseudodaten für Unternehmensrisiken erstellen
set.seed(123)
n <- 100

finanziell = rnorm(n, mean = 50, sd = 10)
  operationell = finanziell/2+rnorm(n, mean = 30, sd = 15)
reputationell =  operationell+rnorm(n, mean = 20, sd = 8)
regulatorisch = rnorm(n, mean = 55, sd = 12)

risiko_daten <- data.frame(finanziell,operationell,reputationell,regulatorisch
  
)

# PCA durchführen
pca_result <- prcomp(risiko_daten, scale. = TRUE)

# Ergebnisse visualisieren
#plot(pca_result, type = "l", main = "Scree Plot")

# Biplot erstellen
biplot(pca_result, scale = 0)

Code
# Varianzaufklärung berechnen
var_explained <- pca_result$sdev^2 / sum(pca_result$sdev^2)
print(paste("Varianzaufklärung PC1:", round(var_explained[1] * 100, 2), "%"))
[1] "Varianzaufklärung PC1: 49.61 %"
Code
print(paste("Varianzaufklärung PC2:", round(var_explained[2] * 100, 2), "%"))
[1] "Varianzaufklärung PC2: 25.53 %"

Dieses Beispiel demonstriert eine PCA für vier hypothetische Unternehmensrisiken: finanziell, operationell, reputationell und regulatorisch.Die prcomp() Funktion führt die PCA durch, wobei die Daten standardisiert werden (scale=TRUE). Der Screen Plot zeigt die Bedeutung jeder Hauptkomponente, während der Biplot die Beziehungen zwischen den ursprünglichen Variablen und den ersten beiden Hauptkomponenten visualisiert.Die Ausgabe der Varianzaufklärung zeigt, wie viel Prozent der Gesamtvarianz durch die ersten beiden Hauptkomponenten erklärt wird.Interpretation:

  • Eng beieinander liegende Pfeile im Biplot deuten auf stark korrelierte Risiken hin.

  • Länge der Pfeile zeigt den Einfluss der Variablen auf die Hauptkomponenten.

  • Punkte repräsentieren einzelne Beobachtungen im reduzierten Raum.

Diese Analyse hilft Unternehmen, die wichtigsten Risikodimensionen zu identifizieren und möglicherweise redundante Risikomessungen zu erkennen

5.1 Funktionsweise

Die PCA funktioniert folgendermaßen:

  1. Sie identifiziert Variablen, die stark miteinander korrelieren

  2. Sie erstellt neue, synthetische Variablen, genannt Hauptkomponenten, die Linearkombinationen der ursprünglichen Variablen sind

  3. Diese Hauptkomponenten sind so konstruiert, dass sie den größtmöglichen Anteil der Varianz im Datensatz erklären

5.2 Analyse der Daten

Im Rahmen der statistischen Inferenz ist ein erster (manchmal sogar der erste) Schritt Daten zu sammeln, zu bereinigen und sie zu analysieren. Dabei ist gerade die Datenbereinigung oft sehr zeitaufwendig. Die Idee ist, Muster in den Daten zu erkennen und sie zu benutzen, um einen geeigneten theoretischen Rahmen zu wählen. Neben den klassischen statistischen Methoden können hier insbesondere bei einem multidimensionalen Datenraum auch Methoden des Data Minings bzw. Machine Learnings zum Einsatz kommen. Wir werden in einem späteren Abschnitt auf solche erweiterten Analysemethoden näher eingehen. Wobei hier vorab schon gesagt sei, dass es sich hierbei lediglich um eine ersten grob en Überblick zu den schier immensen Möglichkeiten sein kann.

Mit dem R Paket explore lässt sich sehr schnell eine interaktives R Shiny zur explorativen Analyse von Daten erstellen.

explore R Shiny App

Ein weiteres starkes R Paket zur schnellen Datenexploration und Datenmanipulation ist das Paket DataExplorer.

5.3 Entwurf des Modells

Ein Modellentwurf basiert zumeist wesentlich auf dem vorgängigen Verständnis kausaler Abhängigkeiten im betrachteten Phönomenbereich.

Die Berechtigung zu der Annahme kausaler Abhängigkeiten, sollte jeweils auch anhand vorliegender Daten geprüft werden, soweit dies die Datenverfügbarkeit zulässt. Hierbei ist besonders auf die Fallstricke, welche eine allzu naive Rekurrierung auf Korrelationen bereithält, zu achten. Vgl. hierzu etwa die Ausführungen zum Simpsons Paradoxon und zu Kausalabhängigkeiten und Korrelationen.

Eine erste Version des Modells wird entworfen und die darin enthaltenen Parameter werden aus den Daten geschätzt. Diese Version wird getestet und dann gegebenenfalls in mehrfachen Schritten anpepasst.

5.4 Test des Modells

Das kalibrierte Modell wird gegen die Realität getestet. Mögliche Methoden sind z. B.:

  • Back Testing: Das kalibrierte Modell soll in der Lage sein, punktuell die Historie aus den Daten zu reproduzieren.
  • Out-of-Sample Test: Das Modell kann Daten, die nicht in die Kalibrierung eingeflossen sind, reproduzieren.
  • Projektionen: Das Modell wird verwendet, um die Entwicklung der modellierten Größen in der Zukunft zu berechnen. Diese Entwicklung wird auf Plausibilität untersucht und die Trends mit den historischen Daten verglichen.

Verfeinerung des Modells:

Die Testergebnisse werden benutzt, um das Modell zu korrigieren und weiterzuentwickeln. Das korrigierte Modell wird neu kalibriert und getestet. Insgesamt lässt sich der Zyklus der Modellentwicklung und Modellverwendung auch wie folgt zusammenfassen:

  • Analyse und Identifikation der Problemstellung

  • Auswahl und Kalibrierung des Modells

  • Validierung der Modellparameter

  • Berechnungen mit dem Modell

  • Plausibilisierung der erhaltenen Ergebnisse

  • Kommunikation der Ergebnisse und Etablierung des Modells im Unternehmen

Die Ansätze für eine Modellierung lassen sich nach folgenden Kriterien grob klassifizieren:

  • Deterministisch, stochastisch, szenariobasiert

  • Stetig oder diskret – in der Zeit oder im Ergebnisraum In der Praxis sind die meisten Modelle gemischt, d.h. sie enthalten deterministische und stochastische Anteile und sind teilweise diskret, aber teilweise auch stetig strukturiert.

    Einsatzgebiete von Modellen:

  • Verständnis der Risiken und Chancen der Unternehmung

  • Stochastische Prognosen

  • Unterscheidung zwischen Bewertungs- und Risikomodellen

  • Unterscheidung zwischen risikoneutralen und Real World Pfaden

  • Einfluss von externen Faktoren auf die Modellauswahl: Daten, Ressourcen,

  • Antwort auf Regulierungsanforderungen

Zusätzliche Faktoren können außerdem die Modellauswahl einschränken, nämlich

  • der Kostenaufwand des Modellbetriebs, insbesondere:

  • Kosten, um Daten zu sammeln und zu überprüfen

  • Kosten, um die Modellparameter zu schätzen

  • Kosten, um das Modell zu testen und zu validieren

  • Hardware- und Softwarekosten

  • Kosten, die mit der Kommunikation und der Etablierung des Modells im Unternehmen verbunden sind

  • Kosten, der Erfüllung von Aufsichtsvorgaben

Kerninhalte

  • Kenngrößenbasierte Datenanalyse und einfache Schätzer

  • Bilanzgrößen (Prämie, Reserve, Marktpreis)

  • Momente (insbesondere Erwartungswert und Varianz)

  • Quantile (inbesondere Median und Quartile)

  • Ausreißer

  • Maximum Likelihood Schätzer

  • Statistische Datenanalyse und Anpassung an Verteilungen: Verteilungstests

  • Abhängigkeiten: Korrelationen und Copulae

Es sollte ein ganzheitlicher Ansatz verfolgt werden. Risiken werden dann nicht isoliert betrachtet und gesteuert. Vielmehr kommen der Berücksichtigung von Abhängigkeiten zwischen den einzelnen Risikokategorien und den Interaktionen der betroffenen Einheiten eine wesentliche Bedeutung zu.

Die Funktionen des Risikomanagements sind in die Aufbau- und Ablauforganisation des Unternehmens eingebettet.

  • Die Betrachtung von Risiken erfolgt zweiseitig, das heißt es wird zwischen den Gefahren aus negativen Entwicklungen und den Chancen aus positiven Entwicklungen abgewogen.

  • Risiken werden möglichst gemessen und zwar auch und gerade unter Berücksichtigung der Abhangigkeiten zwischen den Risiken.

  • Auch nicht quantifizierbare Risiken werden berücksichtigt und dabei nach Möglichkeit komparativ bewertet.

  • Aufbau- und Ablauforganisation werden in das Risikomanagement einbezogen.

ISO 31000 wurde von der International Organization for Standardization 2009 veröffentlicht mit dem Anspruch Prinzipien und Leitlinien zu formulieren für das Risikomanagent in Organisationen jeglicher Größe und jeglichen (Wirtschafts-)sektors.

Ergänzt wird dieser durch den Standard ISO/IEC 31010 - Risk management – Risk assessment techniques und die Richtlinie ISO Guide 73:2009 Risk management - Vocabulary.

Die privatwirtschaftliche Organisation COSO hat im Jahr 2004 ihren Standard für ein internes Kontrollsystem erweitert und dabei den Begriff des Enterprise Risk Management verwendet. Die Ratingagentur Standard & Poor’s hat seit dem Jahr 2005 in ihrem FinanzstärkeRating eine eigene Kategorie ERM eingeführt. Der Risikoappetit einer Organisation ist die Beschreibung von Risikozielen und Risikogrenzen auf Ebene der Gesamtorganisation. Er wird auf Ebene der Geschäftsleitung üblicherweise in einer oder weniger zentraler Grössen oder abstrakter Vorgaben formliert.

Beispiele hierfür können sein

  • Ein Zielrating

  • eine Solvenzquote

  • eine risikoadjustierte Ertragsgröße

Der Risikoappetit wird dann regelmäßig auf der Ebene von Risikokategorien oder Geschäftseinheiten quantitativ oder qualitativ ausformuliert. Die resultierende Gesamtheit von Größen und Vorgaben ergibt die Risikotoleranz. Auf dieser Abstraktionsebene steuert üblicherweise das Management des entsprechenden Geschäftsbereichs und werden oft auch die Einschätzungen durch Regulatoren, Wirtschaftsprüfern, Ratingagenturen und Verbraucherschützern vorgenommen.

Aus den komplexen Risikobewertungsmodellen ergeben sich zunächst einmal Vorgaben, formuliert als Eigenschaften einer Wahrscheinlichkeitsverteilung. Beispielsweise könnte vorgegeben sein, dass die Wahrscheinlichkeit für eine Belastung von mehr als 100 Mio. EUR durch eine Naturkatastrophe kleiner als 0,5 Prozent sein soll. Um eine Steuerung effizient zu ermöglichen, ist es dann notwendig, Risikoindikatoren oder Risikometriken zu bestimmen. Das könnte im genannten Beispiel die maximale Versicherungssumme in eingeteilten Risikozonen sein.Für die operative Steuerung der Risiken auf Ebene der risikonehmenden Einheiten und deren Mitarbeiter müssen konkrete Risikolimite vorgegeben werden, deren Einhalten unmittelbar überprüft werden kann. Dabei muss sichergestellt sein, dass bei Einhalten der Risikolimite auch die vorgegebene Risikotoleranz erfüllt ist.

Finanzielle Risiken

Finanzielle Risiken haben ihren Ursprung im Finanzbereich und betreffen unmittelbar die Finanzlage des Unternehmens. Dazu zählen:

Marktrisiko

(gemeint ist der Finanzmarkt): Ergibt sich aus Schwankungen in der Höhe und in der Volatilität der Marktpreise für Vermögenswerte, Verbindlichkeiten und Finanzinstrumente. Das Marktrisiko schließt das Währungskursrisiko und Zinsänderungsrisiko ein.

Kreditrisiko

Risiko, das sich aufgrund eines Ausfalls oder aufgrund einer Veränderung der Bonität oder der Bewertung der Bonität von Wertpapieremittenten, Gegenparteien und anderen Schuldnern ergibt, gegenüber denen das Unternehmen Forderungen hat.

Liquiditätsrisiko

Bezeichnet das Risiko, dass ein Unternehmen aufgrund mangelnder Fungibilität nicht in der Lage ist, seinen finanziellen Verpflichtungen bei Fälligkeit nachzukommen.

Managementrisiken

  • mangelnde fachliche Qualifikation der Mitarbeiter
  • Schwächen in Aufbau- und Ablauforganisation

Strategische Risiken

Unter dem strategischen Risiko versteht man das Risiko einer nachteiligen Entwicklung des Unternehmens aufgrund strategischer Geschäftsentscheidungen oder deren Umsetzung. Ein strategisches Risiko entsteht beispielsweise, wenn

  • die Geschäftsstrategie unzureichend auf das politische, ökonomische oder technologische Umfeld ausgerichtet ist

oder

  • Geschäftsentscheidungen einem geänderten Wirtschaftsumfeld nicht angepasst werden (unbewusste oder bewusste „Unterlassungsentscheidung”)

5.5 Systemische und spezifische Risiken

Systemische Risiken beeinträchtigen die Funktion oder das Fortbestehen eines ganzen Systems. Sie sind zu unterscheiden von spezifischen Risiken, von denen immer nur einzelne Spieler betroffen sind, ohne dass dadurch das System als Ganzes gefährdet ist. Systemische Risiken werden in der Regel von einem unerwarteten Initialereignis ausgelöst. Beispiele für systemische Risiken:

  • Störungen der Funktionsfähigkeit des gesamten Finanzsystems (z. B. Spekulationsblasen, Kettenreaktionen im Finanzsektor, Zahlungsunfähigkeit großer Finanzinstitute oder von Staaten)

  • Kriege

  • Pandemien

  • Naturkatastrophen

  • Externe Rechtsrisiken (nachteilige Veränderungen der Gesetzeslage oder der Rechtsprechung)

  • Politischer Kurswechsel

Im Gegensatz dazu stehen die unternehmensspezifischen Risiken, die sich aus unternehmensspezifischen Besonderheiten und Entscheidungen ergeben. Sie betreffen unmittelbar nur das eigene Unternehmen. Solche Risiken sind beispielsweise

  • Strategische Risiken

  • Operationale Risiken (insbesondere interne Rechtsrisiken, IT-Risiken und Managementrisiken)

  • Produktrisiken

  • Projektrisiken

5.6 Ein- und zweiseitige Risiken

Viele Risiken sind gleichzeitig Chancen, d. h. die mögliche Abweichung von der Erwartung kann sowohl negativ als auch positiv sein. Beispiel Aktienanlage: Die Schwankung des Aktienkurses ist das Risiko. Dabei können sowohl Verluste als auch Gewinne entstehen. Je nach konkreter Anwendung wird auch bei solchen zweiseitigen Risiken unter Umständen nur die negative Seite (das „Downside”) betrachtet und bewertet, etwa in der Versicherungsaufsicht (Solvency II). Es gibt aber auch Risiken, die von sich aus nur eine negative Ausprägung haben können (also kein „Upside”), zum Beispiel operative Risiken. Operationelle Risiken unter Basel III. Es gibt keine genaue Unterscheidung zwischen Risiken auf einen und Chancen auf der anderen Seite. Eine effektive Vermeidung oder Verringerung von Risiken kann als Ergreifen einer Chance gewertet werden. Umgekehrt ist das Verpassen zu vieler Chancen selbst ein Risiko.

So kann es zu einer Frage der Perspektive werden, ob etwas als Chance oder als Risiko kategorisiert wird.

Worum geht es also? Es geht darum, die Tatsache zu akzeptieren, dass jedes Unternehmertum allumfassend Unsicherheiten ausgesetzt ist. Es geht außerdem darum, die Konsequenzen dieser Einsicht zu akzeptieren. Die offensichtlichste Konsequenz lässt sich wie folgt zusammenfassen: Entscheidungsprozesse sollten die Unsicherheiten aller in Frage kommenden Optionen widerspiegeln. Das wiederum bedeutet, dass die Entscheidungen durch eine explizite Berücksichtigung der stochastischen Natur der jeweiligen Angelegenheit untermauert werden müssen.

Daher müssen statistische Methoden, Szenarioberechnungen und Simulationen als Instrumente für eine effektive Entscheidungsfindung eingesetzt werden. Und dies in einer ganzheitlichen Weise, denn Unsicherheit ist allumfassend und nicht auf bestimmte wenige Aspekte des unternehmerischen Handelns beschränkt. Es mag wie ein Widerspruch in sich klingen, aber beim Risikomanagement geht es nicht (einfach) um Risiken, sondern darum, auf die Tatsache zu reagieren, dass es im wirklichen Leben nichts oder zumindest fast nichts gibt, was streng deterministisch ist.

Das operationelle Risiko wird unter Basel III als dasjenige Risiko bezeichnet, welches zu Schäden aufgrund nicht adäquater interner Prozesse, nicht unzureichender Systeme oder fehlerhaften Handelns von Personen führt. Entscheidet sich die Bank im Rahmen des sogenannten Advanced Measurement Approach (AMA) für den Verlustverteilungsansatz (Loss Distributed Approach (LDA)), so ist R eine geeignete Basis für die durchzuführenden Analysen und Simulationen. Von dieser Möglichkeit R einzusetzen haben auch bereits viele Banken Gebrauch gemacht.

Für AMA gibt es keine detaillierten Durchführungsvorschriften. In der Wahl der eingesetzten statistischen Werkzeuge beim LDA ist eine Bank daher relativ frei. So können die vielfältigen Möglichkeiten, die R bietet, genutzt werden, um eine realistische Einschätzung des operationellen Risikos zu modellieren.

5.7 Unternehmen als offene Systeme

Ein Unternehmen ist kein geschlossenes System, sondern ist in vielfältiger Weise von seiner Umgebung abhängig und kann umgekehrt auch Einfluss auf diese Umgebung ausüben. Die hierbei auftretende Dynamik kann sehr komplex sein und Versuche diese darzustellen, sind auf Vereinfachungen angewiesen. Es ist notwendig, Modelle zu entwickeln, die einerseits nicht zu detailliert sind und andererseits alle wesentlichen Aspekte einbeziehen.

Nick von der Borch:Baumhaus

Nick von der Borch:Baumhaus

Der Prozess der Modellentwicklung und Modellpflege muss selbst dynamisch sein, um den sich ständig ändernden Bedingungen gerecht zu werden. Eine Vernachlässigung der externen Einflüsse ist in den allermeisten Fällen keine empfehlenswerte Option adäquater Komplexitätsreduzierung. Gerade bei der Berücksichtigung externer Einflüsse wird sehr deutlich, dass eine deterministische Betrachtung unzulänglich ist. Ein Vergleich der gegenwärtigen wirtschaftlichen Daten in Deutschland mit den Verhältnissen von z.B. 2018 unterstreicht diese Binsenweisheit. Dennoch orientieren sich viele Unternehmen vornehmlich an starren Szenarien, ohne zu versuchen, den Raum möglicher Entwicklungen möglichst ganz auszuloten. Auch dann, wenn probabilistisch gearbeitet wird, unterbleibt oft die explizite und umfängliche Berücksichtigung externer Faktoren.

Externe Faktoren lassen sich wie folgt gruppieren:

  • Political
  • Economic
  • Social
  • Technological
  • Environmental
  • Legal

Eine Analyse des Einflusses dieser Faktoren auf ein Unternehmen wird häufig PESTEL Analyse genannt.

Eine probabilistisch gefasste PESTEL Analyse als integraler Bestandteil der Risikomodellierung eines Unternehmens erscheint geboten.

5.8 Taxonomie der Risiken

Es gibt keinen zwingenden Grund sich an eine bestimmte vorgefertigte Risikotaxonomie zu klammern, stattdessen sollte jede Unternehmung eine spezifische maßgeschneiderte Taxonomie entwickeln, welche den Unternehmensspezifika gerecht wird und dabei im Laufe der Zeit natürlich auch gewissen Wandlungen unterworfen sein kann. natürlich muß eine Risikotaxonomie ggf. gewisse rechtliche Mindestanforderungen erfüllen und es gibt auch gewisse Einteilungskriterien, die sich in der Praxis in ihrer Grundstruktur als effizient erwiesen haben. Die Festlegung einer Risikotaxonomie ist ein wichtiger Schritt bei der Erstellung eines Risikomodelles und unterliegt damit den schon bei der Erläuterung des Modellbegriffes genannten Maßgaben:

  • Die Taxonomie ist zweckgeleitet
  • Die Taxonomie abstrahiert von Details, welche für den Modellzweck nicht wesentlich sind.

Wir werden im Weiteren solche allgemein anwendbaren taxonomischen Einteilungen aufzeigen. Grundsätzlich ist dabei zu beachten, dass eine Risikotaxonomie ein geeignetes heuristisches Hilfsmittel bei der Risikoidentifikation sein kann, indem sie dem Risikomanager in systematischer Weise auf bislang evtl. übersehene potentielle Risikoquellen hinweisen kann. Umgekehrt wird aber ein bereits erstelltes Risikoregister auch Hinweise auf eine notwendige Restrukturierung der Risikotaxonomie geben können. In dieser Weise lässt sich das Zusammenspiel von Risikotaxonomie und Risikoregister als ein hermeneutischer Prozess verstehen.

Wird diese Wechselwirkung von taxonomischem System und Erstellung von Risikoregistern nicht beachtet, so kann dies dazu führen, dass gewisse Risikoquellen permanent übersehen werden. Immanuel Kant: „Begriffe ohne Anschauungen sind leer, Anschauungen ohne Begriffe sind blind.”

Immmanuel Kant (1724 -1804)
  • Begriffe ohne Anschauungen ~ ein rein theoretische Taxonomie.
  • Anschauungen ohne Begriffe ~ Risikoregister welches sich nur aus der unmittelbaren Praxis herleitet.

Bei der Erstellung des Risikoregisters stellt sich grundsätzlich die Frage der Granularität: Wie fein ziseliert sollte die Einteilung der Risiken sein? Eine zu hohe Granularität unterschlägt leicht wichtige Informationen, so dass die Risikolandschaft nicht in ihrer wünschenswerten Genauigkeit dargestellt wird. Umgekehrt führt eine zu feine Einteilung schnell zu dem Problem, dass die Modellierung der Abhängigkeiten zwischen den Risiken äußerst schwierig werden kann und für einzelne Risiken ggf. weder Schadendaten noch belastbare Expertenschätzungen zur Verfügung stehen. Bei der Bestimmung einer angemessenen Granularität kann grundsätzlich wie folgt mit einer bei stufenweisen Verfeinerung vorgegangen werden. Zunächst sind zumindest 3 (sich überlappende) pragmatische Granularitätsanforderungen zu erfüllen

  • Mindestgranularität gemäß gesetzlicher Bestimmungen

  • Mindestgranularität gemäß der zu betrachtenden Organisationseinheiten (OE)

  • Mindestgranularität gemäß eines Zielgrößenkatalogs

Aus pragmatischer Sicht ist also eine Granularität zu wählen, welche gleichzeitig den gesetzlichen Mindestanforderungen entspricht und der Einteilung in OEs gerecht wird: Zudem sollte die Risikogranularität die Werte des Zielgrößenkataloges in der Weise berücksichtigen, dass eine Risikoquantifizierung auf Basis dieser Granularitätsstufe die Modellierung der Zielgrößen erlaubt.

Neben den hier kurz skizzierten pragmatischen Richtlinien zur Bestimmung der Granularität, ist die Granularität grundsätzlich danach auszurichten, ob sie geeignet ist, eine -relativ zu anderen Granularitäten- präzise Quantifizierung der Risiken auf den verschiedenen Aggregationsniveaus liefert. Dabei ist insbesondere zu beachten, dass eine Verfeinerung der Granularität, also eine Betrachtung von mehr Einzelrisiken nicht immer zu einer Erhöhung der Präzision führt. Zum einen kann es sein, dass keine für die dann gewählte Granularitätsstufe benötigten spezifischen Daten oder Expertenschätzungen zur Verfügung stehen, zum anderen sind bei der Risikoaggregation eine erhöhte Zahl von Risikodependenzen zu beachten. Die hinreichend präzise Modellierung der Dependenzen erweist sich aber häufig als besonders schwierig, so dass man in diesem Modellierungsschritt oft mehr zerstört als man zuvor bei der Modellierung der Einzelrisiken vermeintlich hinzugewonnen hat.

6 Simulationen

6.1 Monte-Carlo Simulation

Monte Carlo Simulation (MCS) ist eine Alternative zu analytischen Methoden (also den im engeren Sinne mathematischen Methoden) zur Lösung komplexer praktischer mathematischer Fragestellungen. MCS lässt sich als ein approximatives Integrationsverfahren auffassen. Integration ist in ihren Anfängen nichts andere als eine Methode zur Berechnung von Flächen und Volumina.

MCS wurde im größeren Umfang zum ersten Mal von Stanislav Ulam und John von Neumann beim Los Alomos Prokekt eigestzt.Zuvor hat bereits Enrico Fermi über den einsatz dieser Simulationsmethode nachgedacht.

Enrico Fermi(1901-1954)

Stanislav Ulam (1909 - 1984)

John von Neumann (1903 -1957)

Das bereits der Schulmathematik bekannte Riemannsche Integral wurde immer weiter verallgemeinert und fand schließlich eine sehr weite Generalisierung in dem maßtheoretischen Integralbegriff.

Wahrscheinlichkeitsraum (Ω,Σ,P)

Ω : Ereignismenge

Σ : Menge der messbaren Teilmengen

P : Wahrscheinlichkeitsfunktion P: Σ => [0,1]

Zufallsvariable X: Ω => IR ; messbar, d.h. für alle x aus IR: p{a aus Ω | X(a) < x} ist aus Σ

Verteilungsfunktion F(X) : IR => [0,1] F(X): x |=> p{a aus Ω | X(a) < x}

Beispiel: Berechnung der Zahl 𝛑 mittels Monte Carlo Simulation

Wir betrachten das Quadrat [-1,1] x [-1,1] mit der Fläche 2x2 = 4. In dieses Quadrat zeichnen wir einen Kreis mit dem Radius 1 und dem Mittelpunt in (0,0). Wir Werfen Pfeile auf das Quadrat in einer Weise alle Teilquadrate gleicher Größe jeweils die selbe Wahrscheinlichkeit haben getroffen zu werden. Wir werfen z.B. 10.000 Pfeile und zählen dann aus wie viele Pfeile innerhalb des Kreises liegen. Der Kreis hat die Fläche 𝝅 * 2^2 . 𝝅 lässt sich somit wie folgt abschätzen Punkte im Kreis /10.000~ 𝝅/ 4 also 𝝅 ~ 4* Punkte im Kreis /10.000 In R lässt sich dass z.B. wie folgt programmieren:

Code zeigen
# Setze den Keim für den Zufallsgenerator für reproduzierbare Ergebnisse
# Setze den Seed für Reproduzierbarkeit
set.seed(2023)

# Anzahl der Simulationen
n <- 5000

# Erzeuge n Zufallspunkte im Quadrat [-1, 1] x [-1, 1]
xy <- matrix(runif(2*n, -1, 1), ncol = 2)

# Berechne die Distanz jedes Punktes vom Ursprung
distanz <- rowSums(xy^2)

# Bestimme, welche Punkte innerhalb des Einheitskreises liegen
im_kreis <- distanz < 1

# Berechne den Anteil der Punkte innerhalb des Kreises
anteil_im_kreis <- mean(im_kreis)

# Schätze Pi: Der Anteil der Punkte im Kreis multipliziert mit 4
pi_schaetzer <- anteil_im_kreis * 4

# Berechne die prozentuale Abweichung von Pi
prozentuale_abweichung <- round(100 * ((pi_schaetzer - pi) / pi), 3)

# Erzeuge den Plot
plot(xy, col = ifelse(im_kreis, "darkblue", "darkred"), pch = 20, 
     xlab = "x", ylab = "y", asp = 1,cex=0.5)

# Füge Kreis hinzu
theta <- seq(0, 2*pi, length.out = 200)
lines(cos(theta), sin(theta))

# Füge Titel und Untertitel zum Plot hinzu
title(main = paste("𝛑-Schätzung mittels MCS, n =", n),
      sub = paste("Abweichung:", prozentuale_abweichung, "%"))

Code zeigen
# Ausgabe des geschätzten 𝛑-Wertes
cat("Geschätzter 𝛑-Wert:", pi_schaetzer, "\n")
Geschätzter 𝛑-Wert: 3.1816 
Code zeigen
cat("Tatsächlicher 𝛑-Wert:", pi, "\n")
Tatsächlicher 𝛑-Wert: 3.141593 
Code zeigen
cat("Prozentuale Abweichung:", prozentuale_abweichung, "%\n")
Prozentuale Abweichung: 1.273 %

6.2 Quasi-Monte-Carlo Simulation

Quasi-Monte-Carlo-Simulation (QMC) ist eine numerische Methode zur Berechnung von Integralen und zur Lösung anderer mathematischer Probleme17. Im Gegensatz zur klassischen Monte-Carlo-Methode verwendet QMC deterministische Zahlenfolgen mit geringer Diskrepanz anstelle von Pseudozufallszahlen.

Hauptmerkmale der Quasi-Monte-Carlo-Methode

  1. Verwendung von Low-Discrepancy-Sequenzen: QMC nutzt spezielle Zahlenfolgen, die eine gleichmäßigere Verteilung im Integrationsraum aufweisen als Zufallszahlen..

  2. Varianzreduktion: Durch die Verwendung dieser gleichmäßigeren Sequenzen wird eine Varianzreduktion erreicht, was zu einer potenziell höheren Genauigkeit führt.

  3. Verbesserte Konvergenzrate: QMC-Methoden können in vielen Fällen eine bessere Konvergenzrate als klassische Monte-Carlo-Methoden erreichen

Die Methoden der Quasi-Monte-Carlo Sumulation lassen sich beispielsweise unter Nutzung des R Paketes qrng ((Randomized) Quasi-Random Number Generators) in Anwendung bringen.

Code zeigen
 # Warnungen unterdrücken
options(warn = -1)  

# Laden der benötigten Bibliotheken
library(qrng)      # Für die Generierung von Quasi-Zufallszahlen
library(ggplot2)   # Für die Erstellung von Grafiken
library(cowplot)   # Für die Kombination von Plots

# Anzahl der Iterationen oder Punkte, die generiert werden sollen
iterations <- 1000 

# Generiere Quasi-Zufallszahlen mit der Halton-Sequenz
G <- ghalton(iterations, 2)  # 2D Halton-Sequenz
# Erstelle ein Data Frame aus den Quasi-Zufallszahlen
G <- data.frame(Qx = G[, 1], Qy = G[, 2]) 

# Generiere Pseudo-Zufallszahlen gleichmäßig verteilt im Intervall [0, 1]
Px <- runif(iterations)     # x-Koordinaten der Pseudo-Zufallszahlen
Py <- runif(iterations)     # y-Koordinaten der Pseudo-Zufallszahlen
P <- data.frame(Px, Py)    # Erstelle ein Data Frame aus den Pseudo-Zufallszahlen

# Setze das Layout für die Plots auf eine Anordnung von 1 Zeile und 2 Spalten
par(mfrow = c(1, 2)) 

# Erstelle einen Scatterplot für die Pseudo-Zufallszahlen
plot(Px, Py, 
     xlab = "", 
     ylab = "", 
     main = "Pseudo-Zufallszahlen", 
     pch = 15,          # Punktzeichen (Quadrat)
     cex = 0.6,       # Größe der Punkte
     col = "darkred")  # Farbe der Punkte

# Erstelle einen Scatterplot für die Quasi-Zufallszahlen
plot(G$Qx, G$Qy, 
     xlab = "", 
     ylab = "", 
     main = "Quasi-Zufallszahlen", 
     pch = 15,          # Punktzeichen (Quadrat)
     cex = 0.6,       # Größe der Punkte
     col = "darkred")  # Farbe der Punkte

Die linke Abbildung zeigt Pseudo-Zufallszahlen welche unter der Annahme der auf [0,1] gleichverteilten und stochastisch unabhängigen Koordinaten erzeugt wurden. Die rechte Abbildung benutzt dagegen eine Quasi-Random Methode (hier Generalized Halton18). Man erkennt, dass bei Verwendung der Quasi-Random Methodik eine signifikant gleichmäßigere Verteilung der Punkte gegeben ist. Bei der Verwendung von Pseudo-Zufallszahlen werden deutlich höhere Simulationsschrittzahlen benötigt, um denselben Grad der Gleichmäßigkeit zu erreichen.

Dies führt zu einem teils deutlich besseren Konvergenzverhalten der Generalized Halton Methodik. Gerade bei multidimensionalen Betrachtungen kann es daher sinnvoll sein, neben der Monte-Carlo-Simulation auch Quasi-Monte- Carlo Methoden als mögliche Alternative zu testen.

In der folgenden Graphik wird nun der Schätzfehler der Generalized Halton Methodik mit dem Schätzfehler der Monte- Carlo Methodik verglichen am Beispiel der Schätzung von 𝝅.

Quasi Monte Carlo Simulation

Der rote Pfad zeigt die Entwicklung der Schätzung von 𝝅 bei schrittweiser Erhöhung der Anzahl der Simulationen unter Verwendung der Generalized Halton Methodik, während die anderen Pfade die Entwicklung für verschieden gewählte Simulationskeime unter Verwendung der Monte-Carlo Simulation zeigen. Hier lässt sich die schnellere Konvergenz bei Verwendung von Generalized Halton gut ablesen.

6.3 Doppelte Monte-Carlo Simulation

Eine datenbasierte Monte-Carlo Simulation ist immer auch mit einer gewissen Parameterunsicherheit verbunden: Endlich viele Daten führen automatisch zu einer Unsicherheit der durch Fitting bestimmten Parameter. Die Parameterunsicherheit wird häufig nicht berücksichtigt, was zu einer starken Unterschätzung der Volatilität der Ergebnisse führen kann.

Eine zweidimensionale (oder Monte-Carlo-Simulation zweiter Ordnung) (kurz 2d-MS) kann die Unsicherheit der simulierten Werte (bei als fix angenommenen Parametern) mit der Unsicherheit bei der Bestimmung der Parameter in einem Simulationsprozess berücksichtigen. Eine 2d-MS lässt sich wie folgt beschreiben

  1. Die Parameter einer 2d-MS sollten in vier Kategorien unterteilt werden:
  • Fixe Parameter.
  • Variabilitäts-Parameter: Fixe Parameter für Verteilungen die nur die Variabilität abbilden.
  • Unsicherheits-Parameter: Parameter für die Verteilungen der Parameterunsicherheit (Verteilungen spiegeln nur die Unsicherheit wider)
  • Variabilitäts & Unsicherheitsparameter: Parameter, deren Verteilungen sowohl die Unsicherheit als auch die Variabilität widerspiegeln
  1. Ein Set von Unsicherheitsparametern wird simuliert.

  2. Das Modell wird unter Verwendung einer klassischen (eindimensionalen) Monte-Carlo-Simulation der Größe nv ausgewertet, wobei die unsicheren Parameter durch Schritt II fixiert wurden. Diese Simulation berücksichtigt die Variabilität in allen variablen Parametern, und führt zu einer pseudo-empirischen Dichtefunktion, die die Variabilität in der Population widerspiegelt, bedingt durch die unsicheren Parameter. Verschiedene Statistiken (z.B. der Mittelwert, die Standardabweichung,Perzentile) der resultierenden empirischen Dichtefunktion ausgewertet und gespeichert.

  3. Schritt II und III werden n mal wiederholt, wobei n die Simulationsschrittzahl zur Berücksichtigung der Parameterunsicherheit ist. Es wird jeweils das 50. Perzentil (Median) jeder Statistik als Punktschätzung dieser Statistik verwendet; die 2.5th und 97,5 Perzentile jeder Statistik werden verwendet, um ein 95% glaubwürdiges Intervall dieser Statistik zu bilden. Der Median der nu -Schätzwerte für jedes der geschätzten 101 Perzentile erlaubt uns eine kumulative Verteilung der Variabilität über ein Diagramm anzeigen. Diese Kurve ist umgeben von der 2,5. und 97,5. Perzentile, die aus den nu -Schätzungen für jedes der 101 Perzentile erhalten wurden.

Das R Paket mc2d enthält eine Reihe von Funktionen zur Implementierung und Durchführung von 2 dimensionalen Monte-Carlo Simulationen. Die nachstehende Abbildung ist direkt der Dokumentation zu diesem Paket entnommen und zeigt schematisch das Vorgehen einer 2 dimensionalen Simulation mit dem mc2d Paket:

d-dimensionale Simulation (aus dem Manual für mc2d)

6.4 DES (Discrete Event Simulation)

Discrete-Event Methoden sind besonders geeignet, wenn das Verhalten des untersuchten Systems beschrieben werden kann als eine Menge stochastisch beeinflusster, verbundener Komponenten , die ihre Zustände zu diskreten Zeitpunkten ändern. Ein ereignisdiskretes Simulationsmodell repräsentiert ein solches System als eine Menge verbundener, attributierter Entitäten, die Ereignisse und Aktivitäten ausführen und gegenseitig Informationen tauschen. Die typischen Anwendungen reichen von der Kommunikation bis hin zum Verkehrswesen und umfassen insbesondere die Simulation von technischer Systeme im weiteren Sinne. Im Risikonanagementfindet sich u.a. eine interessante Anwendung bei der Modellierung von Lieferketten.

Das R Paket simmer ermöglicht die relativ einfache Durchführung von Simulationen diskreter Ereignisse.

Code zeigen
# Warnungen unterdrücken
options(warn = -1)

# Unterdrücke Nachrichten beim Laden der simmer-Bibliothek
suppressMessages(library(simmer))

# Definieren der Trajektorie t0 für den Simulationsprozess
t0 <- trajectory() %>%
  seize("res0", 1) %>%  # Reserviere eine Ressource "res0"
  
  # Branching: Entscheide basierend auf einer Bedingung (hier immer TRUE)
  branch(function() 1, c(TRUE, FALSE),
         # Erster Zweig: Clone und weitere Aktivitäten
         trajectory() %>%
           clone(2,  # Klone die Trajektorie für parallele Ausführung
                 trajectory() %>%
                   seize("res1", 1) %>%  # Reserviere eine Ressource "res1"
                   timeout(1) %>%        # Simuliere eine Wartezeit von 1 Zeiteinheit
                   release("res1", 1),   # Gib die Ressource "res1" wieder frei
                 
                 trajectory() %>%
                   trap("signal",        # Fange ein Signal ab
                        handler = trajectory() %>%
                          timeout(1)  # Simuliere eine Wartezeit von 1 Zeiteinheit im Handler
                   ) %>%
                   timeout(1)            # Simuliere eine Wartezeit von 1 Zeiteinheit nach dem Trap
           ),
         
         # Zweiter Zweig: Setze Attribute und führe weitere Aktivitäten aus
         trajectory() %>%
           set_attribute("dummy", 1) %>%  # Setze ein Attribut "dummy" auf 1
           seize("res2", function() 1) %>% # Reserviere eine Ressource "res2"
           timeout(function() rnorm(1, 20)) %>%  # Simuliere eine Wartezeit basierend auf einer Normalverteilung (Mittelwert = 20)
           release("res2", function() 1) %>%    # Gib die Ressource "res2" wieder frei
           release("res0", 1) %>%               # Gib die Ressource "res0" wieder frei
           rollback(11)                         # Rolle um 11 Zeiteinheiten zurück (z.B. für einen Fehlerfall)
         ) %>%
  
  synchronize() %>%   # Synchronisiere alle parallelen Aktivitäten
  rollback(2) %>%     # Rolle um 2 Zeiteinheiten zurück (z.B. für einen Fehlerfall)
  release("res0", 1)   # Gib die Ressource "res0" wieder frei

# Unterdrücke Nachrichten beim Laden der simmer.plot-Bibliothek
suppressMessages(library(simmer.plot))

# Definiere eine Farbpalette für die Plots
get_palette <- scales::brewer_pal(type = "qual", palette = 1)

# Plotte die Trajektorie t0 mit der definierten Farbpalette
plot(t0, fill = get_palette)
Code zeigen
# Unterdrücke Nachrichten beim Laden der benötigten Bibliotheken
suppressMessages(library(simmer))  # Lädt die simmer-Bibliothek für die ereignisgesteuerte Simulation
suppressMessages(library(parallel)) # Lädt die parallel-Bibliothek für parallele Verarbeitung

# Definiere den Patientenpfad als eine Sequenz von Aktivitäten
patient <- trajectory("patients' path") %>%
  ## Füge eine Aufnahme-Aktivität hinzu
  seize("nurse", 1) %>%  # Reserviere eine Krankenschwester
  timeout(function() rnorm(1, 15)) %>%  # Simuliere eine Wartezeit mit einer Normalverteilung (Mittelwert = 15)
  release("nurse", 1) %>%  # Gib die Krankenschwester wieder frei
  ## Füge eine Konsultations-Aktivität hinzu
  seize("doctor", 1) %>%   # Reserviere einen Arzt
  timeout(function() rnorm(1, 20)) %>%  # Simuliere eine Wartezeit für die Konsultation (Mittelwert = 20)
  release("doctor", 1) %>% # Gib den Arzt wieder frei
  ## Füge eine Verwaltungs-Aktivität hinzu
  seize("administration", 1) %>%  # Reserviere eine Verwaltungsressource
  timeout(function() rnorm(1, 5)) %>%   # Simuliere eine Wartezeit für die Verwaltung (Mittelwert = 5)
  release("administration", 1) # Gib die Verwaltungsressource wieder frei

# Führe die Simulation in parallelen Umgebungen aus
envs <- mclapply(1:100, function(i) {
  simmer("SuperDuperSim") %>%   # Erstelle eine neue Simulationsumgebung mit dem Namen "SuperDuperSim"
    add_resource("nurse", 1) %>%   # Füge eine Ressource für Krankenschwestern hinzu (1 verfügbar)
    add_resource("doctor", 2) %>%   # Füge Ressourcen für Ärzte hinzu (2 verfügbar)
    add_resource("administration", 1) %>%   # Füge eine Ressource für die Verwaltung hinzu (1 verfügbar)
    add_generator("patient", patient, function() rnorm(1, 10, 2)) %>%   # Generiere Patienten mit einer Normalverteilung (Mittelwert = 10, SD = 2)
    run(80) %>%   # Führe die Simulation für eine Dauer von 80 Zeiteinheiten aus
    wrap()   # Verpacke das Ergebnis der Simulation
})

# Sammle die Ressourcen-Metriken aus den Simulationsumgebungen
resources <- get_mon_resources(envs)

# Plotte die Ressourcennutzung
plot(resources, metric = "utilization")   # Visualisiere die Auslastung der Ressourcen

6.5 Simulation diskreter Markov Ketten

Diskrete Markov Ketten können vielseitig im Risikomanagement verwendet werden. So haben sie beispielsweise einen festen Platz bei der Simulation von Ratingklassen eines Anlageportfolios. Hier können z.B. die von den Ratingagenturen veröffentlichten Credit Transistion Matrices genutzt werden, um die Entwicklung des Portfolios nach Ratingklassen zu simulieren.

Daneben können aber diskrete Markov Ketten in allen Bereichen angewendet werden, in welchen diskrete Zustandsveränderungen betrachtet werde und die Markov Eigenschaft also die Eigenschaft dass die Wechselwahrscheinlichkeiten nur von den jeweils letzten Zuständen abhängen.

Wir beschreiben den Umgang mit Markov Ketten an einem einfachen Beispiel. Angenommen wir haben nur drei möfgliche Zustände eines betrachteten Systems. Dann lassen sie die Übergangswahrscheinlichkeiten in ener 3x3 Matrix zusammenfassen , deren Zeilensummen jeweils 1 sind.

Code zeigen
# Erstellen einer 3x3 Übergangsmatrix für eine Markov-Kette
M <- matrix(c( 
  0.6, 0.3, 0.1,  # Übergangswahrscheinlichkeiten von Zustand A
  0.2, 0.4, 0.4,  # Übergangswahrscheinlichkeiten von Zustand B
  0.0, 0.1, 0.9   # Übergangswahrscheinlichkeiten von Zustand C
), nrow = 3, ncol = 3, byrow = TRUE) # Matrix wird zeilenweise gefüllt

# Setzen der Zeilen- und Spaltennamen der Matrix
rownames(M) <- colnames(M) <- c("A", "B", "C") 

# Unterdrücke Nachrichten beim Laden der markovchain-Bibliothek
suppressMessages(library(markovchain))

# Erstellen eines Markov-Ketten-Objekts mit der Übergangsmatrix M
MC <- new("markovchain", 
          states = rownames(M),               # Zustände der Markov-Kette (A, B, C)
          byrow = TRUE,                       # Übergangsmatrix wird zeilenweise interpretiert
          transitionMatrix = M,               # Die definierte Übergangsmatrix
          name = "RiskTypes")                 # Name der Markov-Kette

# Ausgabe des Markov-Ketten-Objekts
MC
RiskTypes 
 A  3 - dimensional discrete Markov Chain defined by the following states: 
 A, B, C 
 The transition matrix  (by rows)  is defined as follows: 
    A   B   C
A 0.6 0.3 0.1
B 0.2 0.4 0.4
C 0.0 0.1 0.9
Code zeigen
#Diese Matrix liest sich so, dass z.B. der Zustand A mit einer Wahrscheinlichkeit 0.6 bei A verharrt, und mit einer Wahscheinlichkeit 0.3 in den Zustand B übergehen.

plot(MC, main="RiskTypes")

Code zeigen
initialState <- c(0, 1, 0)

after5periods <- initialState * (MC ^ 5)
after5periods 
           A      B       C
[1,] 0.12804 0.1893 0.68266
Code zeigen
# Simuliere 8 Transitionen

DEV<-matrix(initialState,ncol=3)
k <-1
while(k < 8){
   DEV<-rbind(DEV,matrix(initialState * (MC ^ k),ncol=3))
  k=k+1
}

# Plotte die Abfolge der Zustandswahrscheinlichkeiten

matplot(DEV,t="l",ylab="Wahrscheinlichkeiten",xlab="Step",col=2:4,lty=1,main= "MC Simulation",xlim=c(0,10))
legend(9, 0.95, legend=c("A", "B","C"),
       col=2:4,lty=1, cex=0.8,
        text.font=4)

7 Regulatorische Risiken

Regulatorische Risiken könnte man auch als eine spezielle Form von Metarisiken auffassen. Wegen ihrer grundsätzlichen Bedeutung und da sie auch dann bestehen, wenn eine Unternehmung kein Risikomanagement etabliert hat, betrachten wir sie hier gesondert.

Gerade in den letzten Jahren sehen wir eine exorbitant steigende Komplexität: Mit jeder neuen Regulierung steigt die Anzahl der Richtlinien im Unternehmen.

Dies erschwert es, den Überblick zu behalten und ist mit zum Teil erheblichen Kostenerhöhungen verbunden.

Aufgrund der hohen Komplexität und der damit verbundenen Einschränkung unternehmerischer Freiheiten kann das regulative Umfeld zu Ineffizienzen und Intransparenz in Unternehmensprozessen führen.

Gegenüber weniger regulierten Marktteilnehmern auf den internationalen Märkten kann die Wettbewerbsfähigkeit eines Unternehmens beeinträchtigt werden. Dies betrifft im besonderem Maße Unternehmen mit einem Sitz in der EU und weltweiter Kundschaft. Betroffene Branchen sind damit insbesondere:

  • Technologiesektor

  • Finanzdienstleistungen

  • Pharmaindustrie

  • Automobilindustrie

Strenge Regulierungen können die Fähigkeit von Unternehmen einschränken, neue Produkte oder Dienstleistungen zu entwickeln und einzuführen, was die Diversifikation und Anpassungsfähigkeit des Gesamtmarktes beeinträchtigt.

Manche Regulatorik wird stark von sich ändernden politischen Bewegungen beeinflusst und verhindert dadurch eine langfristig orientierte Unternehmensplanung und Risikoabschätzung.

Dies trifft aus unserer Sicht im besonderen Maße für die EU Taxonomie zu:

Die starke Betonung der sogenannten Nachhaltigkeitsrisiken könnte dazu führen, dass andere wichtige Risikofaktoren vernachlässigt werden. Ein ausgewogenes Risikomanagement könnte dadurch gefährdet sein. Gerade die Klassifizierung von Aktivitäten als “nachhaltig” oder “nicht nachhaltig” gemäß der Taxonomie könnte zu einer vereinfachten Sichtweise auf Risiken führen.

Die Vorgaben zur Klassifizierung von Nachhaltigkeit sind als solche selbst nicht “nachhaltig” , so dass Langfristplanungen schwierig werden.

8 Metarisiken

Der Begriff “Metarisiken” wird in der Fachliteratur nicht einheitlich verwendet. Häufig versteht man darunter das Modellrisiko oder spezifischer das Parameterrisiko der verwendeten Risikomodelle 19. In diesem Kontext sollen unter Metarisiken alle jene Risiken subsummiert werden, welche durch die Etablierung eines Risikomanagement-Systems in einem Unternehmen neu entstehen. Diese können auch als “Risiken zweiter Ordnung” bezeichnet werden.

Worin können solche Risiken 2. Ordnung bestehen? Ein wichtiges Beispiel sind die schon erwähnten Modellrisiken. Weitere Metarisiken können etwa Fehlinterpretationen von Risikoanalysen durch das Management sein. Oder auch ein allgemeines „Wiegen in Sicherheit“. Ein wichtiges Risiko kann aber auch darin liegen, dass durch die Etablierung eines nicht adäquaten oder nicht gut verdrahteten Risikomanagements, Chancen mit einer eigentlich hohen risikoadjustierten Rendite nicht verfolgt werden: Ein zu eng gefasstes Limitsystem kann den Handlungsspielraum übermäßig stark einschränken. Ein hohes Risiko ist auch darin zu verorten, daß das Risiko-Management-Systems zu starr ist und wesentliche interne oder auch externe Veränderungen nicht schnell genug adäquat verarbeitet. Im Extremfall können diese Metarisiken dazu führen, dass eine Unternehmung nach Einführung eines Risiko-Management-Systems schlechter dasteht als zuvor.

Wichtig ist daher stets, das Risikomanagement selbst und seine Integration im Unternehmen gerade auch im Hinblick auf solche Metarisken kritisch zu hinterfragen. Um dabei nicht in einen „inzestuösen“ unendlichen Regress zu verfallen, kann ein Benchmarking mit anderen Risiko-Management-Systemen und ein regelmäßiger Austausch mit Risikoverantwortlichen anderer Unternehmungen hilfreich sein.

Die vermeintlich falschen Fragen sind sehr oft die wichtigen Fragen, also die Fragen, die unbedingt zu stellen sind. Als falsch werden solche Fragen besonders dann empfunden, wenn sie scheinbare Selbstverständlichkeiten hinterfragen und gerade deshalb schwierig zu beantworten sind. 20

Hinterfragen wird dabei häufig vorschnell mit In Frage stellen gleichgesetzt. Aber auch ein In Frage stellen ist dann wohlwollend aufzunehmen, falls es reflektiert und ohne aggressivem Wahrheitsanspruch vorgebracht wird. Wenn bereits das Stellen solcher Fragen als Affront empfunden wird, ist die Diskussionskultur vergiftet und ein gemeinschaftlicher Erkenntnisgewinn wird schwierig.

Dies trifft für alle Lebensbereiche zu. Besonders schädlich sind derartige Verhältnisse in solchen Bereichen, die einem steten Wechsel unterschiedlichster Einflüsse ausgesetzt sind und bei denen starre Routinen nicht geeignet sind, angemessen darauf zu reagieren. Gerade auch bei Entscheidungen unter Unsicherheit ist eine offene Diskussionskultur essentiell für den Erfolg.

9 Projektrisiken

Projektrisiken stellen häufig einen wichtigen Teil der Gesamtrisikolandschaft eines Unternehmens. Wie auch bei anderen komplexen Risiken sind Projektrisiken immer mindestens in dreieerlei Hinsicht zu betrachten:

  • Interne Risiken: Analyse der projektinternen Risiken und der Chanchen.

  • Analyse der Auswirkungen des Projektverlaufes auf die Gesamtrisikolandschaft.

  • Interdependenzen zwischen den Projekten

Natürlich lässt sich der letzte Punkt auch als Subkatekorie des zweiten Punktes auffsassen. Wegen der hervorstechenden Bedeutung der zeitlichen Risiken bei Projekten, kann es aber sinnvoll sein, die gegenseitigen Abhängigkeiten gesondert zu fassen.

Ein Projekt ist ein einmaliges Vorhaben mit einem möglichst genau definierten Ziel. Ein solches Vorhaben hat einen datierten Beginn und ein geplantes Enddatum.Um das Ziel zu in dem gesetzten Zeitrahmen zu erreichen, müssen Handlungen geplant und in einer bestimmten Reihenfolge umgesetzt werden.

Das Projektrisiko ist daher so zu modellieren, dass es die verschiedenen Interdependenzen und die zeitliche Abfolge der verschiedenen Projektaktivitäten berücksichtigt. Dies erfordert besondere Techniken.

Tabellarisch lassen sich die Fragen an das Projektmangement so zusammenfassen:

  1. Mögliche Abweichung der prognostizierten Projektkosten je Projekt:
  • Abschätzung der Abweichung in Höhe & Eintritts-Wahrscheinlichkeit

z.B. Abweichung + 25% oder mehr mit eine W. von 30% Abweichung + 50% oder mehr mit einer W. von 10% - Aufteilung möglicher Zusatzkosten / Einsparungen auf die geschätzte Projektlaufzeit Ggf. muss diese Aufteilung mit einer Fallunterscheidung vorgenommen werden. (B) Projektverzögerungen

  • Abschätzung der Verzögerung in Länge & Eintritts-Wahrscheinlichkeit Abweichung + 25% oder mehr mit eine W. von 30% Abweichung + 50% oder mehr mit einer W. von 10% Projektverzögerungen wirken sich im Projektportfolio aus: Mögliche Steigerung der Projektkosten, sowie auch Verzögerung anderer Projekte. Dies wird direkt oder indirekt in (A) abgeschätzt.

Projektverzögerungen haben Auswirkungen außerhalb des Projekt-Portfolios.

  1. Mangelnde Qualität der Projektergebnisse Projektverzögerungen haben Auswirkungen außerhalb des Projekt-Portfolios.

  2. Interdependenzen zwischen den Projekten

  • Überschwappen von Verzögerungen , Kostensteigerungen und Qualitätsmängeln

Projetinterne Risiken eines Typs lassen sich häufig zu Lasten anderer Projektrisiken mitigieren. So lässt sich z.B. das Qualitätsrisiko bzw. das Risiko des nicht vollständig erreichten Leistungsumfangs zu Lasten des Verzögerungsrisikos mitigieren.

Die Erfolgsgößen / Ziele

  • Qualität / Leistungsumfang
  • Projektdauer
  • Projektkosten

werden oft auch als magisches Dreieck des Projektmanagements bezeichnet.

Es gibt mehrerer R Pakete zum Thema Projektrisiken. So lassen sich beispielsweise sehr einfach Abhängigkeitsstrukturen darstellen:

Code zeigen
# Laden des ProjectManagement-Pakets für Projektmanagement-Tools
library(ProjectManagement)

# Erstellen einer 5x5-Matrix für die Vorgängerbeziehungen zwischen Aufgaben (prec1and2)
prec1and2 <- matrix(c(
  0, 1, 0, 2, 0,  # Aufgabe 1 hat Vorgänger (z.B. Aufgabe 2 und Aufgabe 4)
  0, 0, 0, 0, 0,  # Aufgabe 2 hat keine Vorgänger
  0, 1, 0, 0, 0,  # Aufgabe 3 hat Vorgänger (z.B. Aufgabe 2)
  0, 0, 0, 0, 0,  # Aufgabe 4 hat keine Vorgänger
  0, 0, 0, 2, 0   # Aufgabe 5 hat Vorgänger (z.B. Aufgabe 4)
), nrow = 5, ncol = 5, byrow = TRUE) # Matrix wird zeilenweise gefüllt

# Erstellen einer weiteren Matrix für die Vorgängerbeziehungen (prec3and4)
prec3and4 <- matrix(0, nrow = 5, ncol = 5) # Initialisiert eine Matrix mit Nullen
prec3and4[3,1] <- 3 # Setzt einen Wert in der Matrix: Aufgabe 3 hat einen Vorgänger von Dauer (z.B. Dauer = 3)

# Erstellen und Anzeigen des Diagramms basierend auf den Vorgängerbeziehungen
dag.plot(prec1and2, prec3and4) # Visualisiert die Aufgaben und ihre Abhängigkeiten

und Gant-Charts erzeugen:

Code zeigen
# Laden des PlotPrjNetworks-Pakets für die Erstellung von Projekt-Gantt-Diagrammen
library(PlotPrjNetworks)

# Erstellen eines Data Frames für das Projekt mit Aufgaben, Start- und Enddaten
project1 <- data.frame(
  task = c("Market Research", "Concept Development", "Viability Test",
           "Preliminary Design", "Process Design", "Prototyping", 
           "Market Testing", "Final Design", "Launching"),
  start = c("2015-07-05", "2015-07-05", "2015-08-05", 
            "2015-10-05", "2015-10-05", "2016-02-18",
            "2016-03-18", "2016-05-18", "2016-07-18"),
  end = c("2015-08-05", "2015-08-05", "2015-10-05",
           "2016-01-05", "2016-02-18", "2016-03-18",
           "2016-05-18", "2016-07-18", "2016-09-18")
)

# Erstellen eines Data Frames für die Abhängigkeiten zwischen den Aufgaben
project2 <- data.frame(
  from = c(1, 2, 3, 4, 5, 6, 7, 8),   # Index der vorhergehenden Aufgaben
  to = c(2, 3, 4, 5, 6, 7, 8, 9),       # Index der nachfolgenden Aufgaben
  type = c("SS", "FS", "FS", "SS",     # Typ der Abhängigkeit (SS = Start-to-start, FS = Finish-to-start)
           "FS", "FS", "FS", "FS"),
  delay = c(7, 7, 7, 8, 10, 10, 10, 10) # Verzögerung in Tagen für jede Abhängigkeit
)

# Erstellen und Anzeigen des Gantt-Diagramms basierend auf den Projektdaten
GanttChart(project1, project2)

Die Verwendung R bietet sich insbesondere bei der stochastischen Simulation von Projektreisiken an. Stochastische Warteprozesse können z.B. mit der oben kurz umrissenen DES siumuliert werden.

9.1 Kritischer Pfad

Der kritische Pfad ist die längste Abfolge von Aufgaben, die zur Durchführung eines Projekts abgeschlossen werden müssen. Die Aufgaben auf dem kritischen Pfad werden als kritische Aktivitäten bezeichnet, denn wenn sie sich verzögern, verzögert sich der Abschluss des gesamten Projekts.

Die Ermittlung des kritischen Pfades wesentlich, da so folgende Aufgaben bgelöst werden:

  • Genaue Schätzung der Gesamtdauer des Projekts.

  • Identifikation kritischer Vorgänge zu identifizieren, die rechtzeitig abgeschlossen werden müssen und eine somit genaue Überwachung erfordern.

  • Bestimmung solcher Projektaufgaben verzögert werden können, ohne den Projektzeitplan zu beeinträchtigen, indem für jede Aufgabe ein Puffer berechnet wird.

  • Identifizierung von Aufgabenabhängigkeiten.

  • Ressourcenbeschränkungen und Projektrisiken.

  • Priorisierung von Aufgaben und Erstellung realistischer Projektzeitpläne.

  from to label time
1    1  2     A    3
2    1  3     B    2
3    1  4     C    5
4    2  4     D    1
5    3  4     E    1
6    4  5     F    3
Completion time:  8 
$graphAOA
DiagrammeR Graph // 5 nodes / 6 edges
  -- directed / connected / DAG / simple

  NODES / type: 5 vals - complete / label: 5 vals - complete & unique
    -- 2 additional node attributes (ES, LF)
  EDGES / rel: <unused>                                    info: `get_edge_df()`
    -- 3 additional edge attributes (label, time, TF)
  SELECTION / <none>
  CACHE / <none>
  GLOBAL ATTRS / 17 are set                 info: `get_global_graph_attr_info()`
  GRAPH ACTIONS / <none>
  GRAPH LOG / <49 actions> -> () -> () -> set_edge_attrs()

$schedule
  Name Duration ESij LSij EFij LFij TFij Crit
1    A        3    0    1    3    4    1     
2    B        2    0    2    2    4    2     
3    C        5    0    0    5    5    0    *
4    D        1    3    4    4    5    1     
5    E        1    2    4    3    5    2     
6    F        3    5    5    8    8    0    *

$ComplTi
[1] 8

$CritAct
[1] "C" "F"

$AddSlacks
  Name FST CST
1    A   0   1
2    B   0   2
3    C   0   0
4    D   1   0
5    E   2   0
6    F   0   0

9.1.1 Stochastische Projekte - PERT Analyse

Unter Verwendung des Paketes critpath lassen sich stochastische Analysen zum Zeitablauf von Projekten erstellen.

Im folgenden Beispiel werden diese Projektdaten genutzt:

Code zeigen
library(critpath)
rmarkdown::paged_table(pertexample1)
Code
# Laden des critpath-Pakets für die Analyse kritischer Pfade und PERT-Analysen
library(critpath)

# Lösen des kritischen Pfades für das Beispiel 'pertexample1' unter der Annahme von stochastischen (nicht deterministischen) Zeiten
y <- solve_pathAOA(pertexample1, deterministic = FALSE)
Expected compl. time distribution: N( 31 , 1.490712 )
Code
# Ausgabe der Ergebnisse des gelösten kritischen Pfades
y
$graphAOA
DiagrammeR Graph // 8 nodes / 9 edges
  -- directed / connected / DAG / simple

  NODES / type: 8 vals - complete / label: 8 vals - complete & unique
    -- 2 additional node attributes (ES, LF)
  EDGES / rel: <unused>                                    info: `get_edge_df()`
    -- 4 additional edge attributes (label, time, timevar + 1 more)
  SELECTION / <none>
  CACHE / <none>
  GLOBAL ATTRS / 17 are set                 info: `get_global_graph_attr_info()`
  GRAPH ACTIONS / <none>
  GRAPH LOG / <73 actions> -> () -> () -> set_edge_attrs()

$schedule
  Name Duration       Var ESij LSij EFij LFij TFij Crit
1    A      5.0 0.4444444  0.0  0.0  5.0  5.0  0.0    *
2    B      7.0 0.4444444  5.0  5.0 12.0 12.0  0.0    *
3    C      5.5 0.2500000 12.0 14.0 17.5 19.5  2.0     
4    D      5.5 1.3611111 12.0 13.5 17.5 19.0  1.5     
5    E      8.0 0.4444444 12.0 12.0 20.0 20.0  0.0    *
6    F      5.5 0.6944444 17.5 19.5 23.0 25.0  2.0     
7    G      6.0 0.1111111 17.5 19.0 23.5 25.0  1.5     
8    H      5.0 0.4444444 20.0 20.0 25.0 25.0  0.0    *
9    I      6.0 0.4444444 25.0 25.0 31.0 31.0  0.0    *

$ComplTi
[1] 31

$SDevTi
[1] 1.490712

$CritAct
[1] "A" "B" "E" "H" "I"

$AddSlacks
  Name FST CST
1    A 0.0 0.0
2    B 0.0 0.0
3    C 0.0 2.0
4    D 0.0 1.5
5    E 0.0 0.0
6    F 2.0 0.0
7    G 1.5 0.0
8    H 0.0 0.0
9    I 0.0 0.0
Code
# Visualisierung des kritischen Pfades als AOA-Diagramm (Activity on Arc)
plot_graphAOA(solved = y)
Code
# Erstellung eines Gantt-Diagramms basierend auf den Ergebnissen
plot_gantt(y)

Code
# Visualisierung der frühesten Start- und Endzeiten (ASAP - As Soon As Possible)
plot_asap(y)

Code
# Visualisierung der spätesten Start- und Endzeiten (ALAP - As Late As Possible)
plot_alap(y)

Code
# Normalverteilung der Projektzeiten visualisieren
plot_norm(y)

Code
# Durchführung einer PERT-Analyse mit einer neuen Dauer von 30 Einheiten
PERT_newprob(new_DT = 30, y)
Prob. of completion:  0.2511675 
$newDT
[1] 30

$prob_compl
[1] 0.2511675

10 Lieferketten- & Lagermanagement

Zum Thema Lagermangement unter Verwendung von R findet sich hier eine ausfühliche Darstellung:Inventory-calculations-using R

Eine einfache normalverteilte stochastische Vorhersage des Lagerbestandes lässt sich unter Verwendung des Paketes InvControl erstellen. Dabei werden folgende Inputvariablen genutzt:

  • m Erwatungswert der Nachfrage (u/time)

  • s Standardabweichung der Nachfrage (u/time).

  • k Orderkosten (fix)

  • c Verkaufspreis je Einheit (fix)

  • h Lagerhaltungskosten je Einheit

  • p Shortageksoten je Einheit

  • t Lead Time

  • b boolean - TRUE wenn das System Backorders zulässt

Code zeigen
# Laden des InvControl-Pakets für Bestandskontrollmodelle
library(InvControl) 

# Aufruf der Funktion qrNormal mit spezifischen Parametern
# Die Parameter sind: 
# 10 = mittlerer Wert (Mittelwert)
# 2.83 = Standardabweichung
# 32 = maximaler Lagerbestand
# 5 = Mindestbestellmenge
# 4 = Sicherheitsbestand
# 10 = Kosten pro Einheit (z.B. Lagerhaltungskosten)
# 0.5 = Servicelevel (Wahrscheinlichkeit, dass die Nachfrage gedeckt wird)
# TRUE = gibt an, ob die Berechnung als Tabelle ausgegeben werden soll
qrNormal(10, 2.83, 32, 5, 4, 10, 0.5, TRUE)
[1] "Optimal Order Quantity - Q* = 14.52"
[1] "Reorder Point - R = 4.59"
[1] "Total Average Cost (per time unit) - G(Q) = $ 106.46"

[1] 14.524893  4.590991

Das Paket ScPerf erlaubt es, die bekannten Modelle Economic Order Quantity model, Economic Production Quantity model , Newsboy und Wagner-Whitin. Es erlaubt auch den Bullwhip Effekt zu kalkulieren.

Das nachstehende Beispiel haben wir von Ralph Asher übernommen.

Das Beispiel zeigt den Aufbau eines Lieferketten-Netzwerkmodells, das Kunden auf Distributionszentren (DC) ausrichtet.

Code zeigen
# Warnungen unterdrücken
options(warn = -1)

# Laden der benötigten Bibliotheken
suppressMessages(library(tidyverse))  # Für Datenmanipulation und -analyse
suppressMessages(library(magrittr))   # Für das Pipe-Operator (%>%)
suppressMessages(library(leaflet))     # Für interaktive Karten
suppressMessages(library(ompr))        # Für mathematische Optimierung
suppressMessages(library(ompr.roi))    # Für ROI (R Optimization Infrastructure)
suppressMessages(library(ROI.plugin.glpk))  # Für den GLPK-Solver
suppressMessages(library(geosphere))   # Für geographische Berechnungen
suppressMessages(library(measurements)) # Für Maßeinheitenkonvertierungen
suppressMessages(library(maps))        # Für Kartendaten

# Kundenstamm: größte Städte in Texas
tx_cities <- maps::us.cities %>%
  dplyr::filter(country.etc == 'TX') %>%  # Filtere nur Städte in Texas
  dplyr::mutate(demand = ceiling(pop / 10))  # Nachfrage proportional zur Bevölkerung

# Schnelle Leaflet-Karte der Städte erstellen
leaflet(tx_cities) %>% 
  addTiles() %>% 
  addMarkers()
Assuming "long" and "lat" are longitude and latitude, respectively
Code zeigen
# Potenzielle Verteilzentren (DC) sind Dallas, Amarillo, Houston, El Paso, San Antonio, Beaumont
tx_dc <- tx_cities %>%
  dplyr::filter(name %in% c('Dallas TX', 'Amarillo TX', 'Houston TX', 'El Paso TX', 'San Antonio TX', 'Beaumont TX'))

# Erstellen einer Distanzmatrix zwischen den Nachfragerstandorten und den Verteilzentren
customer_dc_distmat <- geosphere::distm(
  x = cbind(tx_cities$long, tx_cities$lat),   # Koordinaten der Städte
  y = cbind(tx_dc$long, tx_dc$lat)            # Koordinaten der DCs
) %>%
  measurements::conv_unit('m', 'mi')           # Umwandlung von Metern (Standard) in Meilen

# Zeilen- und Spaltennamen für die Distanzmatrix setzen
row.names(customer_dc_distmat) <- paste0('Customer_', tx_cities$name)
colnames(customer_dc_distmat) <- paste0('DC_', tx_dc$name)

# Matrix erstellen, die das zu minimierende oder maximierende Kriterium darstellt.
# In diesem Beispiel ist die Metrik die Einheit-Meilen.
unitmiles_customer_dc_matrix <- 
  tx_cities$demand * customer_dc_distmat

# Definiere Skalare für die Anzahl der Kunden und DC-Optionen
customer_count <- nrow(tx_cities)   # Anzahl der Kunden (Städte)
dc_option_count <- nrow(tx_dc)       # Anzahl der DC-Optionen

# Erstelle das Optimierungsmodell
dc_location_model <- ompr::MIPModel() %>%
  # Binäre Entscheidungsvariablen: Für jeden Kunden, welchem DC zugeordnet wird? Ja/Nein Entscheidungen.
  add_variable(customer_dc_align[customerindex, dcindex],
               customerindex = 1:customer_count,
               dcindex = 1:dc_option_count, type = 'binary') %>%
  
  # Binäre Entscheidungsvariable: Öffnen eines DC oder nicht?
  add_variable(open_dc_binary[dcindex], dcindex = 1:dc_option_count, type = 'binary') %>%
  
  # Erste Einschränkung: Jeder Kunde muss einem und nur einem DC zugeordnet werden.
  add_constraint(sum_expr(customer_dc_align[customerindex, dcindex],
                          dcindex = 1:dc_option_count) == 1,
                 customerindex = 1:customer_count) %>%
  
  # "Big M"-Einschränkungen aktivieren open_dc_binary wenn 
  # Kunden einem DC zugeordnet sind.
  add_constraint(sum_expr(customer_dc_align[customerindex, dcindex],
                          customerindex = 1:customer_count) <=
                   99999 * open_dc_binary[dcindex], dcindex = 1:dc_option_count) %>%
  
  # Begrenze die Anzahl der geöffneten DCs auf genau 2.
  add_constraint(sum_expr(open_dc_binary[dcindex], dcindex = 1:dc_option_count) == 2) %>%
  
  # Setze die Zielfunktion: Summe des Produkts der Kunden/DC-Zuordnungsvariablen 
  # und der Matrix der Einheit-Meilen für jedes Kunden/DC-Paar.
  set_objective(sum_expr(customer_dc_align[customerindex, dcindex] *
                           unitmiles_customer_dc_matrix[customerindex, dcindex],
                         customerindex = 1:customer_count,
                         dcindex = 1:dc_option_count), sense = 'min')

# Löse das Optimierungsmodell mit dem GLPK-Solver
solution <- ompr::solve_model(dc_location_model, with_ROI(solver = "glpk"))

# Extrahiere die Lösung und filtere nur die Zuordnungen mit Wert gleich eins (d.h. Zuordnungen)
customer_dc_alignment_df <- get_solution(solution, customer_dc_align[customerindex, dcindex]) %>%
  dplyr::filter(value == 1) %>%
  
  # Füge den Namen der Kunden und DCs sowie deren Koordinaten hinzu
  dplyr::mutate(Customer_City = tx_cities$name[customerindex],
                Customer_Lat = tx_cities$lat[customerindex],
                Customer_Lng = tx_cities$long[customerindex],
                DC_City = tx_dc$name[dcindex],
                DC_Lat = tx_dc$lat[dcindex],
                DC_Lng = tx_dc$long[dcindex]) %>%
  
  dplyr::select(Customer_City, Customer_Lat, Customer_Lng,
                DC_City, DC_Lat, DC_Lng)

# Einzigartige ausgewählte Verteilzentren (DC)
dc_cities_selected <- unique(customer_dc_alignment_df$DC_City)
dc_cities_selected
[1] "Dallas TX"  "Houston TX"
Code zeigen
# Leaflet-Karte erstellen: Färbe die Kundenstadt nach zugeordnetem DC.
customer_dc_alignment_df %<>% dplyr::mutate(
  leaflet_dc_color = dplyr::if_else(DC_City == dc_cities_selected[1], 'red', 'blue'))

# Erstelle eine interaktive Leaflet-Karte mit den Kundenstädten und deren Zuordnungen zu den DCs.
leaflet(customer_dc_alignment_df) %>% 
  addTiles() %>%
  addCircleMarkers(lat = ~Customer_Lat, lng = ~Customer_Lng,
                   color = ~leaflet_dc_color, radius = 3)

11 Expertenschätzungen

Eingrenzung des Themas Unter Risikoanalyse verstehen wir die stochastische Quantifizierung bereits identifizierter Risiken durch Wahrscheinlichkeitsverteilungen (W-Verteilungen) sowie die Aggregation quantifizierter Einzelrisiken zu einem Gesamtrisiko mittels Monte-Carlo-Simulation (MCS). Anders als für viele Finanzmarkt- und Versicherungsrisiken stehen insbesondere für operationale Risiken meist zu wenig oder keinerlei relevante historische Daten zur Verfügung, um W-Verteilungen mit einem hinreichenden Signifikanzniveau anzupassen. Ein Ignorieren solcher Risiken mit dem Verweis auf ihre Nicht-Quantifizierbarkeit führt unweigerlich zu einer systematischen und unter Umständen dramatischen Unterschätzung des Gesamtrisikos und verbietet sich damit von selbst. Deshalb werden in solchen Fällen Expertenschätzungen benötigt. Expertenschätzungen können im Verbund mit historischen Daten zur Bildung einer Bayes-Risikofunktion verwendet werden. Ein solches Verfahren ist insbesondere dann sinnvoll, wenn es zwar gewisse relevante historische Daten gibt, diese aber nicht ausreichen, eine Verteilung mit hinreichender Güte anzupassen. Zudem lassen sich häufig Marktschäden als Quantifizierungsbasis nutzen. Diese Marktschäden müssen allerdings so skaliert werden, dass sie den spezifischen Verhältnissen des jeweiligen Unternehmens gerecht werden. Für diese Skalierung sind wiederum häufig Expertenschätzungen notwendig. Expertenschätzungen unterliegen unweigerlich den üblichen Verzerrungen wie sie etwa durch den Ankereffekt oder dem Rückschaufehler verursacht werden . Diesen Verzerrungen kann zum Bespiel mit der Delphi-Methode teilweise erfolgreich begegnet werden. Ziel der Delphi-Methode ist es, während mehrerer Experten-Befragungsrunden eine Konvergenz der Einzelprognosen zu erreichen, ohne dass sich die Experten in gemeinsamen Diskussionen gegenseitig beeinflussen. Um das Thema einzugrenzen, betrachten wir hier keine Einbeziehung von Marktschäden und keine Bildung von Bayes-Risikofunktionen. Ebenso bleiben auch weitere Methoden zur Überlagerung differierender Expertenmeinungen unberücksichtigt. Wir wollen uns dagegen auf folgende Analyseschritte beschränken:  Wahl des Verteilungstyps für ein Einzelrisiko  Parametrisierung der Verteilung eines Einzelrisikos  Modellierung der Abhängigkeiten bei der Risikoaggregation   Expertenschätzungen weisen vor allem folgende Schwachstellen auf:  Der einzelne Experte ist sich meist unsicher mit der jeweiligen Einschätzung und verschiedene Experten können zu deutlich abweichenden Schätzungen gelangen.  Selbst wenn der Experte aus jahrelanger Erfahrung ein sicheres „Gefühl” zu dem jeweiligen Risiko besitzt, fällt es ihm oft schwer, dies in eine mathematische Sprache zu übersetzen.  Experten schätzen meist unbewusst nur auf Grund der eigenen Erfahrungswerte und verfügbaren Informationen (Verfügbarkeitsheuristik)

Zudem lassen sich diese Probleme in der Praxis selten präzise voneinander trennen. Die für die Risikoaggregation notwendige Einschätzung der Abhängigkeiten ist dabei noch schwieriger als die Expertenschätzungen für Einzelrisiken. Für die Praxis ist es notwendig, die sachgerechte (Teil-)Kalibrierung von Einzelrisiken und der Abhängigkeiten mittels Expertenwissens zu ermöglichen, ohne dass dabei spezielle Stochastik-Kenntnisse notwendig sind. Hierzu sollen nachfolgend einige Anregungen geben werden. 2 Wahl eines Verteilungstyps Zur Modellierung von Risiken steht eine große Auswahl von Verteilungstypen zur Verfügung. Es ist es sinnvoll, in der Modellierungssoftware einen speziellen Katalog von Verteilungen für Expertenschätzungen vorzuhalten.

Prinzipiell lässt sich jede Verteilung, welche sich zur Risikomodellierung nutzen lässt, auch durch eine Expertenschätzung kalibrieren. Praktisch sind dem allerdings enge Grenzen gesetzt. Die Parametrisierung der Verteilung muss über die Schätzung von Werten erfolgen, welche dem Experten intuitiv zugänglich sind und die Verteilung unmittelbar nachvollziehbar beeinflussen. Die Schätzung des EW sowie der Varianz erweisen sich oft als besonders schwierig und wenig intuitiv.

Der EW wird oft unbemerkt mit dem häufigsten Wert verwechselt und kann durch seltene Extremereignisse stark beeinflusst sein. Dieses Phänomen wird insbesondere bei den Schadenhöhenverteilungen deutlich. Die Varianz ist per se intuitiv schwierig zugänglich.

Wir betrachten hier die Verteilungen für die Schadenfrequenzen sowie für die Einzelschadenhöhen getrennt. 2.1 Frequenzverteilungen Ideale Frequenzverteilungen im Rahmen von Expertenbefragungen sind die Poissonverteilung und die Binomialverteilung. Beide Verteilungen sind einfach zu interpretieren. Meist ist es hinreichend, sich der Poissonverteilung zu bedienen, die nur einen Parameter benötigt, für die lediglich die zu erwartende Frequenz zu schätzen ist. Nur wenn der Experte eine deutlich kleinere oder deutlich größere Varianz als bei der Poissonverteilung – bei der die Varianz gleich dem Erwartungswert (EW) ist – vermutet, sollte die Binomialverteilung (Varianz < EW) bzw. die Negative Binomialverteilung (Varianz <> EW) genutzt werden.

Oft sieht man ein im Vergleich zu den genannten Frequenzverteilungen gehäuftes Ausbleiben von Ereignissen (Frequenz =0). In solchen Fällen kann die Verwendung sogenannter zero-inflated Verteilungen sinnvoll sein. Hier sind vom Experten der EW sowie die Wahrscheinlichkeit der Frequenz 0 abzuschätzen. Die Abbildung zeigt Histogramme einer Poissonverteilung und einer zero-inflated Poissonverteilung mit einem EW von jeweils 3.

Code zeigen
# Definieren einer Funktion rzipois zur Erzeugung von verzweigten Poisson-Zufallszahlen
rzipois <- function(n, mean, pz) {
  # Erzeuge Poisson-verteilte Zufallszahlen mit dem modifizierten Parameter
  # lambda = mean / (1 - pz) und multipliziere sie mit einer Bernoulli-Verteilung
  rpois(n, lambda = mean / (1 - pz)) * rbinom(n, prob = 1 - pz, size = 1)
}

# Setze das Layout für die Plots auf 1 Zeile und 2 Spalten
par(mfrow = c(1, 2))

# Erstelle ein Histogramm der verzweigten Poisson-Zufallszahlen
hist(rzipois(5000, mean = 3, pz = 0.1), breaks = 50, col = "darkred", main = "Zero Infl.Poisson") 

# Erstelle ein Histogramm der regulären Poisson-Zufallszahlen
hist(rpois(5000, lambda = 3), breaks = 50, col = "darkred", main = "Poisson-Verteilung")

Eine kleine (unvollständige) Taxononomie der für das Risikonanagementwichtigen Verteilungen ist in den folgenden Abbildungen gegeben.

[FrequenzverteilungenSchadenhöhenverteilungenKann sich das fragliche Risiko in dem betrachteten Zeithorizont maximal einmal realisieren, ist lediglich eine Eintrittswahrscheinlichkeit (Bernoulli-Schema) zu schätzen.

So schwierig es im Einzelfall sein mag, die Frequenzen bzw. Wahrscheinlichkeiten richtig einzuschätzen, so ist zumindest die Parametrisierung dieser Frequenzverteilungen vergleichsweise einfach zu verstehen. Das ist bei den Schadenhöhenverteilungen anders, weshalb man sich dort bei Expertenschätzungen häufig hierfür besonders ausgesuchter Verteilungen bedient.

Intuitiv besonders leicht zu greifende Schadenhöhenverteilungen sind die Gleichverteilung sowie die Dreiecksverteilungen. Sind nur Minimum und Maximum abschätzbar und ist sonst keinerlei Einschätzung der W-Verteilung möglich, so kann es sinnvoll sein, die Gleichverteilung zu nutzen. Lässt sich neben Minimum und Maximum auch der wahrscheinlichste Wert (Modus) einschätzen, so bietet sich die Dreieckverteilung an. Als Alternative zur Dreieckverteilung kann in diesen Fällen auch die Pertverteilung genutzt werden.

Die Dreieckverteilung läuft beim Modalwert spitzer zu und an den Rändern flacher aus. Am Beispiel (Min=20, Modus=50, Max=80) ergibt sich ein Vergleich der Dichten dieser beiden Verteilungen wie hier abgebildet. Wobei wir die Pertverteilung mit zwei verschiednen Shapeparametern (2 & 4) darstellen.

Code zeigen
# Unterdrücke Nachrichten beim Laden des mc2d-Pakets
suppressMessages(library(mc2d))

# Zeichne die PERT-Verteilung mit den Parametern (20, 50, 80)
curve(dpert(x, 20, 50, 80), 
      from = 0, to = 100, 
      xname = "x", 
      col = "darkblue", 
      lwd = 3, 
      ylim = c(0, 0.035), 
      ylab = "")

# Erlaube das Überlagern eines neuen Plots
par(new = TRUE)

# Zeichne die PERT-Verteilung mit einer anderen Form (shape=2)
curve(dpert(x, 20, 50, 80, shape = 2), 
      from = 0, to = 100, 
      xname = "x", 
      col = "lightblue", 
      lwd = 3, 
      ylim = c(0, 0.035), 
      ylab = "")

# Erlaube das Überlagern eines neuen Plots
par(new = TRUE)

# Zeichne die Dreieckverteilung mit den Parametern (20, 50, 80)
curve(dtriang(x, 20, 50, 80), 
      from = 0, to = 100, 
      xname = "x", 
      col = "darkred", 
      lwd = 3, 
      ylim = c(0, 0.035), 
      ylab = "Density", 
      main = "Vergleich von Pert & Dreieckverteilung")

# Füge eine Legende hinzu
legend('topright', c("Pert (4)", "Pert (2)", "Dreieck"), 
       lty = 1, col = c('darkblue', 'lightblue', 'darkred'), 
       bty = 'n', cex = 1, lwd = 3)

Obwohl R bereits ohne Nutzung besonderer Packages eine breite Vielfalt von Plotmöglichkeiten bietet, so lässt sich diese besonders durch die Nutzung des ggplot2 Pakets noch erheblich ausweiten. Nachstehend wenden wir das ggplot2 Paket in Verbindung mit dem Paket ggridges an, um einen sogenannten Ridgeplot der Dichten dieser drei Verteilungen zu erstellen. Jetzt für die Verteilungen mit min=10, mode=20 und max=80.

Die Parameter der Dreiecksverteilung und der Pertverteilung können ihrerseits als Gleichverteilung, Dreiecksverteilung oder Pertverteilung modelliert werden, um so z.B. die Unsicherheit der Parameterschätzung wiederzugeben. Die Abbildung vergleicht die Histogramme einer Dreiecksverteilung (Min =100, Mode=200, Max=500) mit einer Simulation, bei der das Maximum als Gleichverteilung zwischen 500 und 600 modelliert wurde.

Neben den genannten Verteilungen ist es aber auch bei Expertenschätzungen oft notwendig, weitere Verteilungstypen in Betracht zu ziehen. Hierzu gehören typischerweise die Gamma-, die Lognormal-, die Weibull- und Extremwertverteilungen.

Der Verteilungstyp kann sich dabei im Einzelfall aus bestimmten heuristischen Prinzipien oder durch Vergleich mit ähnlich gelagerten und bereits quantifizierten Risiken ergeben. So ist z.B. eine (verschobene) Lognormalverteilung nur dann ein geeigneter Kandidat, wenn ein Minimum existiert und eine rechtsschiefe Verteilung ohne Maximum bzw. ein sehr hohes theoretisches Maximum möglich ist, welches um ein Vielfaches größer ist als das 95% Quantil.

Setzt sich ein Risiko aus vielen ähnlich großen unabhängigen Einzelrisiken zusammen, so ist die Normalverteilung ein guter Kandidat.

11.1 Verteilungen mit maximaler Entropie

Eine wichtige Methode der Verteilungswahl besteht darin, diejenige Verteilung zu wählen, welche die durch die Expertenschätzungen vorgegebenen Bedingungen erfüllt und dabei ein Minimum an Information enthält. Die Verteilung soll somit lediglich die in der Schätzung enthaltende Information enthalten und keinerlei weitere implizite Annahmen wiederspiegeln. Ein Minimum an Information bzw. ein Maximum von Unsicherheit wird mathematisch durch das Entropiemaß beschrieben. Der Entropiebegriff stammt ursprünglich aus der Thermodynamik und wurde von Ludwig Boltzmann eingeführt. Seitdem fand er in verschiedenen Abwandlungen Anwendungen in der Informationstheorie, der Statistik aber auch in der reinen Mathematik. Die hier angesprochene Entropie von W-Verteilungen geht auf  E.T. Jaynes zurück und wurde in 1957 eingeführt. Allerdings kann nicht für alle Klassen von Verteilungen ein Vertreter mit maximaler Entropie gefunden werden. Die nachstehende Tabelle gibt eine Auswahl verschiedener, relevanter Szenarien:

Variable(n) der Expertenschätzung Verteilungstyp
Erwartungswert Exponentialverteilung
Minimum = 0  & Quantil Exponentialverteilung
Minimum > 0  & Quantil Verschobene Exponential- sowie Gammaverteilung
Minimum & Maximum Gleichverteilung
Minimum, EW, Maximum Allgemeine Betaverteilung
EW & Standardabweichung Normalverteilung
Minimum, EW, Maximum, Standardabweichung Allgemeine Betaverteilung
EW der Frequenz Poissonverteilung

Diese Tabelle ist wie folgt zu verwenden:

Schätzt der Experte z.B. ein Risiko mit einem Minimum, welches größer als Null ist und einen Quantilswert hat, so sind eine verschobene Exponentialverteilung und eine Gammaverteilung diejenigen Verteilungen, welche bei Erfüllung der durch die Schätzung gegebenen Bedingung ein Maximum an Entropie besitzen, also keine weitere Information enthalten. Hält man sich also an das Prinzip der maximalen Entropie, so ist eine solche Verteilung zu Modellierung zu nutzen.

Das Prinzip unter Berücksichtigung von Beschränkungen eine Verteilung mit maximaler Entropie zu wählen, lässt sich als Verallgemeinerung des von Pierre-Simon Laplace in 1812 eingeführten Indifferenzprinzips interpretieren. Das Indifferenzprinzip besagt, dass bei k=2,3,4… unterscheidbaren und sich gegenseitig ausschließenden möglichen Ereignissen die Eintrittswahrscheinlichkeit jedes Ereignisses ohne Vorliegen weiterer Informationen genau jeweils 1/k beträgt. Auch lässt sich dieses Prinzip als ein Spezialfall von Ockhams Rasiermesser21 interpretieren.

Für den Fall, dass der Experte sich eine genauere Bestimmung der Verteilung zutraut, kann es auch angemessen sein, die Verteilung als Histogrammverteilung zu bestimmen. Dazu verteilt der Experte die Wahrscheinlichkeitsdichte auf die Klassen eines Histogramms. Hierdurch können dann auch ungewöhnliche  z.B. multimodale Verteilungsformen in Anwendung kommen. Die Abbildung zeigt ein Beispiel einer solchen durch den Experten maßgeschneiderten Verteilung.

SHELF R-Shiny GUI: “Roulette”

Hierzu wurde das Paket SHELF genutzt, welches auch den Zugang zu einer R Shiny Anwendung bietet.

Nachfolgende Abbildung zeigt die Nutzung dieser Anwendung zum Fitten einer stückweise linearen Verteilungsfunktion, unter Vorgabe einer kleinen Liste geschätzter Quantile:

SHELF R-Shiny GUI: General

Durch einfaches Klicken auf die Abbildungen kommt man direkt zu dieser Anwendung auf der Webseite der Sheffield Elicitation Framework (SHELF), Copyright © 2022 .

** Parametrisierung der W-Verteilungen von Einzelrisiken

Während die typischen Schaden-Frequenzverteilungen -wie oben schon kurz beschrieben- intuitiv relativ einfach zu fassen sind und insoweit auch gut durch Experten kalibriert werden können, ist die Situation bei den Schadenhöhenverteilungen komplexer.

Die Konzepte Minimum, Modus und Maximum sind leicht zu verstehen und ihre Schätzung ist im Regelfall einfacher als beispielsweise die Schätzung des EW`es und der Standardabweichung (STABWN). Daher eignen sich die Dreieckverteilung und die Pertverteilung besonders gut zur Modellierung mittels Expertenschätzungen. Allerdings sind diese Verteilungen nicht für alle Risiken geeignet. Stattdessen braucht man zusätzliche Verteilungsfunktionen, wie z.B. eine Lognormal-, Weibull- oder eine Pareto-Verteilung.

Solche Verteilungen können mittels Expertenschätzungen am besten über ihre Quantile parametrisiert werden. Hierbei sollte über einen Liste typischer W-Verteilungen  ein Quantil-Fitting ausgeführt werden.  Mit einer Schätzung von zwei oder drei Quantilwerten lassen sich meist gleich mehrere W-Verteilungen mittels der Methode der (gewichteten) kleinsten Quadrate gut anpassen. Typische Quantile für solche Schätzungen sind etwa der Median (50%), 75% („4-jähriges Ereignis”) und 90% („10-jähriges Ereignis”).

Die Verteilung mit der besten Anpassung an die geschätzten Quantile ist dann typischerweise ein guter Kandidat zur Modellierung des betrachteten Risikos. Zumindest bei den größeren Risiken sollte der Experte sich aber die von ihm kalibrierten Verteilungen auch in Plots anschauen, um dann ggf. auf eine andere Verteilung auszuweichen.

Für sehr spezielle Risiken sind gesplittete Verteilungsfunktionen notwendig. Gesplittete Verteilungen sind solche Verteilungen, bei denen bis zu einer bestimmten Schadenhöhe z.B. mittels einer Erlang-Verteilung modelliert wird, um dann ab einem bestimmten Exzesspunkt in eine Extremwertverteilung, wie z.B. in die Pareto-Verteilung überzugehen.

11.2 Expertenschätzungen von Risikoabhängigkeiten

Die adäquate Aggregation von Risiken ist ein wesentlicher Baustein der analytischen Tätigkeit im Enterprise Risk Management (ERM). Nachdem man den Katalog der zu quantifizierenden Einzelrisiken festgelegt und die Risiken mittels Frequenz- und Schadenhöhenverteilungen modelliert hat, verbleibt die Frage der sachgerechten Aggregation dieser Risiken[1].

Die Aggregation der Risiken wird in der Praxis meist mittels Monte-Carlo-Simulation oder verwandter Verfahren wie beispielsweise Latin-Hypercube oder Sobol Simulationen bestimmt. Nachstehend werden wir vereinfachend immer von der Monte-Carlo-Simulation (MCS) sprechen.

Ziel der Aggregation ist es, für die jeweils betrachtete Aggregationsebene eine W-Verteilung des Gesamtrisikos auf dieser Ebene zu schätzen. Eine solche Ebene kann z.B. ein wohldefinierter separierbarer Teil der unternehmerischen Tätigkeit sein. Das jeweilige Gesamtrisiko setzt sich im Regelfall aus einem Katalog von Einzelrisiken (Risikoregister) zusammen, welche zumeist weder voneinander unabhängig sind, noch in deterministischer Weise zusammenhängen. Bevor eine MCS durchgeführt werden kann, ist der Zusammenhang zwischen den Risiken möglichst genau zu erfassen und quantitativ zu bemessen.

11.3 Kausalabhängigkeiten und Korrelationen

Gibt es einen klaren und identifizierbaren funktionalen Zusammenhang, so sollte dieser als solcher auch in der MCS berücksichtigt werden. Hierzu können z.B. auch sogenannte Treiber in das MCS Modell aufgenommen werden. Treiber sind stochastische Einflussfaktoren, welche in die Modellierung verschiedener Risiken mit einfließen. Die Treiber selbst sind dagegen keine Risiken im Sinne des MCS Modelles.

So kann etwa Inflation in der expliziten Form des BIP-Deflators ein Treiber sowohl für das Risiko steigender Rohstoffpreise als auch für das Risiko fallender Umsätze sein. Der Einfluss des BIP-Deflators auf diese beiden Risiken kann typischerweise über entsprechende Historien abgeschätzt werden. Im Allgemeinen hat ein Treiber keinen deterministischen, sondern lediglich einen stochastischen Einfluss auf das Risiko. So wird der BIP-Deflator mit den relevanten Rohstoffpreisen korrelieren, sie aber nicht vollständig bestimmen.

Am Beispiel zweier Risiken mit einem gemeinsamen Treiber lässt sich die Modellierung solcher treiberbasierten Risiken wie hier

schematisch darstellen. Neben dem mittels der Funktionen F1, F2 modellierten Einfluss des Treibers auf diese Risiken, können die Risiken natürlich weiteren Einflussfaktoren ausgesetzt sein.

Ist allerdings der Einfluss des Treibers hinreichend dominant, so wird man diesen im Allgemeinen gut mittels eines Scatterplots der simulierten Risiken erkennen können.

Es wird angenommen, daß mit einer ausgearbeiteten Risikotaxonomie gearbeitet wird und die Granularität der Risikomodelle vorgegeben ist. In der Praxis kann es aber sinnvoll sein, die gewählte Risikotaxonomie auch vor dem Hintergrund der Simulationsergebnisse neu zu definieren.

Neben dem mittels der Funktionen F1, F2 modellierten Einfluss des Treibers auf diese Risiken, können die Risiken natürlich weiteren Einflussfaktoren ausgesetzt sein.

Ist allerdings der Einfluss des Treibers hinreichend dominant, so wird man diesen im Allgemeinen gut mittels eines Scatterplots der simulierten Risiken erkennen können.

Auf diese Weise können Expertenschätzungen gewisser Variablen der Funktionen F1, F2 die Risikoabhängigkeit modellieren, ohne dass dabei Korrelationen direkt geschätzt werden.

Eine solche (quasi-) kausale Modellierung ist im Allgemeinen einer Modellierung unter Verwendung von Korrelationen vorzuziehen. Dies gilt auch deshalb, weil selbst enge kausale Zusammenhänge nicht notwendig zu hohen Korrelationen führen müssen. So ergibt sich für die Fehleranfälligkeit komplexer technischer Anlagen (z.B. Kraftwerke) häufig ein U-förmiger Zusammenhang zum Alter der Anlage (auch bekannt als Badewannenkurve): Eine relativ hohe Anfälligkeit bei sehr jungen und bei älteren Anlagen sowie eine reduzierte Anfälligkeit für mittelalte Anlagen.Trotz eines klaren Zusammenhangs zwischen Alter und Fehleranfälligkeit kann der Korrelationskoeffizient (lineare Korrelation oder Rangkorrelation) wegen der U-Form des Zusammenhanges sehr klein sein.

Umgekehrt gilt natürlich, dass eine hohe Korrelation zwischen zwei Größen nicht notwendig auf einen direkten Kausalnexus hinweist. Dennoch erleben wir alle fast täglich (z.B. auch in der politischen Diskussion) den Fehlschluss von Korrelationen auf einen direkten Kausalzusammenhang zwischen den betrachteten Größen. Es gilt auch umgekehrt, dass nicht jeder Kausalzusammenhang zu einer hohen Korrelation der betrachteten Größen führt. Gleichwohl ist aber festzuhalten: Korrelationen sind ein Indiz dafür, dass die betrachteten Größen sich gegenseitig beeinflussen oder gemeinsam von anderen Größen beeinflusst werden. Der Wissenschaftstheoretiker Hans Reichenbach war der erste, der versuchte die Zusammenhänge zwischen Kausalität und Korrelation präzise zu formulieren.22 Nach ihm ist das „Common Cause” Prinzip benannt, welches den Schluss von korrelierten Variablen auf gemeinsame Ursachen postuliert. Eine intensive Auseinandersetzung mit diesem Themenkomplex findet der theoretisch interessierte Leser insbesondere bei P. Suppes23 und aus jüngerer Zeit auch bei J. Pearl und C. Hitchcock24 .

In Ermangelung vorliegender Analysen zu gemeinsamen Risikotreibern wird aber häufig ein rein statistischer Zusammenhang z.B. in Form einer Korrelationsannahme genutzt. In diesen Fällen wird die bivariate Verteilung also nicht erst durch die MCS approximiert, sondern wird stattdessen als Teil des MCS Modelles z.B. in Form einer mathematisch beschriebenen Copula[3] bestimmt. Diese Copula kann durch ein mathematisches Anpassungsverfahren aus historischen Daten gewonnen werden, oder aber als Expertenschätzung in das MCS Modell einfließen.

Analoges gilt natürlich auch für den mehrdimensionalen Fall (mehr als nur 2 interdependierende Variablen). Hier werden die Standard Copulas unflexibler, aber die Verwendung von Vine Copulas kann hilfreich sein.[4] Für den bivariaten Fall lässt sich das Vorgehen schematisch wie folgt darstellen:

Hier wird also eine bivariate Verteilung, welche z.B. durch zwei Randverteilungen für die Einzelrisiken und eine bivariate Copula beschrieben wird als Eingabe für das MCS Modell genutzt.

Werden die Interdependenzen signifikant falsch eingeschätzt, so kann es zu groben Fehleinschätzungen der Gesamtrisikoverteilung kommen. Insbesondere können dadurch eklatante Fehlschätzungen der hohen Risikoquantile (z.B. > 95%) des aggregierten Risikos generiert werden. Dies kann den Wert der zuvor erarbeiten Einzelanalysen für das Gesamtrisikomanagement völlig zerstören zumindest aber stark einschränken.

Schon bei der Quantifizierung der Einzelrisiken ist es eine Standardsituation, dass nicht genügend relevante historische Daten vorliegen, um W-Verteilungen zu fitten. Dies gilt im erhöhten Maße für Risikoabhängigkeiten bzw. multidimensionale W-Verteilungen.

Abhängigkeiten werden in  vielen Risikomodellen nur wenig differenziert betrachtet.  Zumeist werden lineare Korrelationen bzw. Rangkorrelationen geschätzt und dann in der MCS genutzt.

Dies ist oft unzureichend und die Modellqualität kann durch Verwendung von Copulae oder auch Bayes’scher Netze (BN) verbessert werden.

Bereits zu einer validen Bestimmung eines Korrelationskoeffizienten braucht man allerdings umfangreiches relevantes Datenmaterial, um die Schätzungenauigkeit nicht zu groß werden zu lassen. Deshalb wird man meist Expertenschätzung vornehmen müssen.

Bei der Wahl der Copula durch den Experten kann ein Blick auf die Scatterplots der verschiedenen Copulatypen helfen. Sehr viel deutlicher lässt sich allerdings der Einfluss einer Copula mit der 11 sogenannten „Tail Concentration Function” darstellen: Im Einheitsquadrat [0,1]x[0,1] setzen wir für jedes t mit 0<= t <=0.5 : L(t)=p(U<z,V<z) = Wahrscheinlichkeit, dass die W-Verteilungen U und Z gleichzeitig kleiner als ihr zQuantil sind. Entsprechend für jedes 0.5< t <=1: L(t)=1-p(U>z,V>z) = Wahrscheinlichkeit, daß U und Z gleichzeitig größer als ihr z-Quantil sind.

Code zeigen
# Laden des copula-Pakets für die Arbeit mit Copulas
suppressMessages(library(copula))

# Definieren einer 2-dimensionalen Normal-Copula mit einer Korrelation von -0.7
cl <- normalCopula(c(-0.7), dim = 2, dispstr = "un")

# Simulation von 50.000 Zufallszahlen aus der definierten Copula
X <- rCopula(50000, cl)

# Definition der Verhältniszahlen (Links / Rechts)
U <- rank(X[, 1]) / (nrow(X) + 1)  # Rangordnung der ersten Dimension normalisiert auf [0,1]
V <- rank(X[, 2]) / (nrow(X) + 1)  # Rangordnung der zweiten Dimension normalisiert auf [0,1]

# Funktion zur Berechnung der empirischen Verteilungsfunktion für den unteren Schwanz
Lemp <- function(z) sum((U <= z) & (V <= z)) / sum(U <= z)

# Funktion zur Berechnung der empirischen Verteilungsfunktion für den oberen Schwanz
Remp <- function(z) sum((U >= 1 - z) & (V >= 1 - z)) / sum(U >= 1 - z)

# Erstellen einer Sequenz von Werten von 0.001 bis 0.5 in Schritten von 0.001
u <- seq(0.001, 0.5, by = 0.001)

# Berechnung der empirischen Verteilungsfunktionen für den unteren und oberen Schwanz
L <- Vectorize(Lemp)(u)          # Empirische Verteilungsfunktion für den unteren Schwanz
R <- Vectorize(Remp)(rev(u))     # Empirische Verteilungsfunktion für den oberen Schwanz (umgekehrt)

# Plotten der Ergebnisse
plot(c(u, u + 0.5 - u[1]), c(L, R), type = "l", ylim = c(0, 1), col = "red", lwd = 2,
     ylab = "", xlab = "LOWER TAIL               UPPER TAIL")
abline(v = 0.5)  # Vertikale Linie bei x = 0.5 hinzufügen

Setzt man die Korrelation auf +0.7 bzw. 0, so erhält man entsprechend folgende Plots:

Code zeigen
# Unterdrücke Nachrichten beim Laden des mc2d-Pakets
suppressMessages(library(mc2d))

# Zeichne die PERT-Verteilung mit den Parametern (20, 50, 80) und shape=4
curve(dpert(x, 20, 50, 80), 
      from = 0, to = 100, 
      xname = "x", 
      col = "darkblue", 
      lwd = 3, 
      ylim = c(0, 0.035), 
      ylab = "")

# Erlaube das Überlagern eines neuen Plots
par(new = TRUE)

# Zeichne die PERT-Verteilung mit shape=2
curve(dpert(x, 20, 50, 80, shape = 2), 
      from = 0, to = 100, 
      xname = "x", 
      col = "lightblue", 
      lwd = 3, 
      ylim = c(0, 0.035), 
      ylab = "")

# Erlaube das Überlagern eines neuen Plots
par(new = TRUE)

# Zeichne die Dreieckverteilung mit den Parametern (20, 50, 80)
curve(dtriang(x,20,50,80), 0, 100, xname = "x",col="darkred",lwd=3,ylim=c(0,0.035),ylab="Density",main="Vergleich von Pert & Dreieckverteilung")
legend('topright', c("Pert (4)","Pert (2)","Dreieck") , 
       lty=1, col=c('darkblue','lightblue', 'darkred'), bty='n', cex=1,lwd=3)

Hier der Plot für eine Clayton Copula:

Die nachstehenden Abbildungen zeigen simulierte Werte und die zugehörige Tail Concentration Function für verschiedene Copulae (von links oben nach unten rechts: Gauß, Frank, Gumbel und Clayton) jeweils mit einer Rang Korrelation von 0.75. Das gepunktete Dreieck entspricht einer Copula mit unabhängigen Variablen. Das unregelmäßige Ausfransen an den Enden ist auf die endliche Simulationsschrittzahl zurück zu führen.

Diese nachstehenden Abbildungen zeigen die simulierten Wertepaare einer Gauß Copula mit den unterschiedlichen Rangkorrelationen von -0.75, 0, 0.25 und 0.75. Bei negativer Korrelation verläuft die Kurve unterhalb des Dreiecks für den Fall unabhängiger Variablen, bei positver Korrelation darüber. Je weiter die Kurve sich von dem Dreieck entfernt, je höher ist die abschnittsweise Korrelation.

11.3.1 Simpsons Paradoxon

Das Simpson-Paradoxon ist ein statistisches Phänomen, bei dem sich ein beobachteter Trend oder Zusammenhang umkehrt, wenn Daten auf unterschiedlichen Ebenen analysiert werden. Es tritt auf, wenn eine nicht berücksichtigte Variable (Störvariable) mit der untersuchten Ergebnisvariable korreliert und ungleichmäßig auf die Gruppen verteilt ist.

Wir betrachten das Simpson Paradoxon anhand eines einfachen Beispiels von Pseudodaten mit 2 Variablen. Das Streudiagramm dieser Variablen möge wie folgt aussehen:

Code zeigen
# Notwendige Bibliotheken laden
library(ggplot2)
library(dplyr)
library(gridExtra)  # Für die Anordnung der Plots

Attache Paket: 'gridExtra'
Das folgende Objekt ist maskiert 'package:dplyr':

    combine
Code zeigen
# Datensatz erstellen
set.seed(123)  # Für Reproduzierbarkeit
n <- 200  # Anzahl der Proben pro Gruppe

# Gruppe A (positive Korrelation)
group_A <- data.frame(
  x = rnorm(n, mean = 2, sd = 1),
  y = rnorm(n, mean = 2, sd = 1)- (0.125 * (1:n))
)

# Gruppe B (negative Korrelation)
group_B <- data.frame(
  x = rnorm(n, mean = 10, sd = 1),
  y = rnorm(n, mean = 10, sd = 1) - (0.25 * (1:n))  # Einführung eines negativen Trends
)

# Die Datensätze kombinieren
data <- rbind(data.frame(group = "A", group_A), 
               data.frame(group = "B", group_B))

# Plot für die einzelnen Gruppen und die kombinierten Daten erstellen
p1 <- ggplot(data, aes(x=x, y=y, color=group)) +
  geom_point() +  # Streudiagramm der Punkte
  geom_smooth(method='lm', se=FALSE) +  # Lineare Regression ohne Konfidenzintervall
  labs(title="Separate Trends") +
  theme_minimal()

# Plot für die kombinierten Daten erstellen
p2 <- ggplot(data, aes(x=x, y=y)) +
  geom_point(aes(color=group)) +  # Streudiagramm der Punkte mit Farben für Gruppen
  geom_smooth(method='lm', se=FALSE,color = "darkgrey") +  # Lineare Regression ohne Konfidenzintervall
  labs(title="Gesamttrend") +
  theme_minimal()

# Die Plots anzeigen
grid.arrange(p1, p2, ncol=2)
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'

Code zeigen
# Korrelationen vergleichen
Korrelationen=as.matrix(c(cor(group_A)[1,2],
cor(group_B)[1,2],
cor(rbind( group_A, group_B))[1,2]))
row.names(Korrelationen)<-c("A","B","A&B")
colnames(Korrelationen)<-"Korrelation"
Korrelationen
    Korrelation
A    0.04276088
B    0.04291525
A&B -0.18420445

Die Daten lassen sich in offensichtlicher Weise in 2 Cluster unterteilen (die deutliche Clusterbildung ist dabei unwesentlich für das Simpson Paradox) . Jedes Cluster besitzt eine Korrelation von ca. + 0.75 während die gesamte Datenbestand eine Korrelation von ca. - 0.2 aufweist.

Hat der Experte bei seiner Schätzung immer nur Teilbereiche aber nicht den Gesamtzusammenhang vor Augen, so kann es also passieren, dass die Korrelation im gesamten Wertebereich insgesamt völlig falsch eingeschätzt wird. Solche Phänomene sind unter der Bezeichung „Simpson Paradoxon” bekannt geworden. Wie wollen den Leser mit der Nennung des Simpson Paradoxons dafür sensibilisieren, welche Fallstricke es bei der Modellierung von Korrelationen geben kann.

Ein bekanntes Beispiel für das Simpson-Paradoxon stammt aus den 1970er Jahren von der Universität von Kalifornien, Berkeley

  • Aggregierte Daten: Männer hatten insgesamt eine höhere Zulassungsquote als Frauen.

  • Analyse nach Fachbereichen: In den meisten einzelnen Fachbereichen hatten Frauen eine gleich hohe oder sogar höhere Zulassungsquote.

  • Erklärung: Frauen bewarben sich häufiger für konkurrenziertere Fachbereiche, was zu einer niedrigeren Gesamtzulassungsquote führte.

Dieses Beispiel verdeutlicht, wie wichtig es ist, Daten im Kontext zu betrachten und mögliche versteckte Variablen zu berücksichtigen. 25

12 Fallstudie

12.1 Die Challenger-Katastrophe

Die Challenger-Katastrophe ereignete sich am 28. Januar 1986, als der NASA Space Shuttle Orbiter Challenger nach 73 Sekunden Flugzeit auseinanderbrach und seine sieben Besatzungsmitglieder ums Leben kamen. Hauptursache des Unfalls war eine technische Schwäche des Raketensystems. Bei den ungewöhnlich kalten Bedingungen während der Startvorbereitungen wurden die Gummidichtungen zwischen den einzelnen Komponenten der Hauptraketen spröde.

Der Unfall führte zu einer Unterbrechung des Shuttle-Programms von 32 Monaten. Die Presidential Rogers Commission (u. a. mit dem Astronauten Neil A. Armstrong und dem brillanten Physiker Richard P. Feynman) wurde zur Untersuchung der Katastrophe eingesetzt. In ihrem Bericht stellte die Kommission fest, daß der Zerfall mit dem Versagen eines Dichtungsringes (O-Ring) im Feststoffraketenmotor aufgrund der ungewöhnlich kalten Temperaturen (-0,6 Grad Celsius) während des Starts begann. Dieses Versagen führte zu einem Ausbruch von brennendem Gas durch den Feststoff-Raketenmotor, der die gesamte Struktur des Shuttles gefährdete, so daß es aufgrund der extremen aerodynamischen Kräfte zerfiel.

Das Problem mit den Dichtungsringen war bekannt: In der Nacht vor dem Start gab es eine dreistündige Telefonkonferenz zwischen Ingenieuren und dem NASA-Management, in der die Auswirkungen der für den Start vorhergesagten niedrigen Temperaturen auf die Leistung der Dichtungsringe erörtert wurden. Feynman demonstrierte unter Verwendung von Eiswasser vor den laufenden Pressekameras, wie spröde die Dichtungsgummis bei niedrigen Temperaturen werden. Später notierte Feynman:

So, what was really happening was that NASA had developed an attitude: If the seals leaked a little and the flight was successful, it meant that the seal situation wasn’t serious. Therefore, the seals could leak and it would be all right - it was no worse than the time before. Such an attitude is, of course, extremely dangerous. One or two out of five seals leaked - and only some of the time – so it’s obviously a probabilistic matter, a thing you have no control over, an uncertainty. And it’s not obvious that the next time you fly, the uncertainty won’t click over a little bit more, statistically, and the seal will fail. And it did, in fact, fail.

Vgl.: Feynman

Die Abbildung zeigt die Anzahl der Zwischenfälle bei den O-Ringen im Vergleich zu den Temperaturen. Abbildung a enthält nur Flüge mit Zwischenfällen. Abbildung b umfasst dagegen alle Flüge (mit und ohne Zwischenfälle). Die Rogers-Kommission stellte fest: Die Flüge ohne Zwischenfälle wurden aus der Darstellung ausgeschlossen, weil man der Meinung war, daß diese Flüge keine Informationen über den Temperatureffekt lieferten.

Berücksichtigt man alle Flüge (allerdings ohne den Flug vom 28.Januar 1986), so erhält unter Nutzung einer Logistischen Regression das nebenstehende Diagramm. Dabei wird lediglich das Auftreten eines Fehlers im Düsenbereich (fail nozzle) betrachtet. Aufgrund der (seinerzeit richtig prognostizierten) Temperaturverhältnisse am fraglichen Tag ergibt sich nach diesem Regressionsmodell eine Wahrscheinlichkeit von fast 100% für einen Schaden. Obschon eine Extrapolation in einen Wertebereich weit jenseits von den zur Prädiktion genutzten Daten unsicher ist, hätte bereits eine solche einfache Analyse ein dringendes Warnsignal setzen können.

Das NASA-Management stand unter erheblichen Druck, da es bereits mehrfach zu Verschiebungen des Starts gekommen war. Es ist daher zu vermuten, daß bei den einschlägigen Besprechungen eine Schweigespirale entstand und so verhindert wurde, daß die Argumente gegen einen Start mit der notwendigen Vehemenz vorgetragen wurde In der entscheidenden Videokonferenz zwischen den Ebenen IV (Thiokol) und III (NASA) 15 Stunden vor dem Start, erläuterten die beiden Thiokol-Ingenieure Roger M. Biosjoly und Arnold R. Thompson ausführlich über das unkalkulierbare Risiko eines Starts bei Außentemperaturen unter Temperaturen unter 12 °C. Die NASA-Manager waren entsetzt und machten unmissverständlich klar, dass sie aus wirtschaftlichen Gründen auf der frühestmöglichen Startfreigabe bestanden - trotz der gefährlichen Kälte. Der Booster-Manager der NASA, Lawrence B. Mulloy, reagierte wütend auf das Zaudern von Thiokol mit dem Vorwurf:

The eve if a launch is a hell of a time to be inventing new criteria. My God, Thiokol, when do you want me to launch, next April?

13 Epilog

13.1 Wissenschaftstheorie und Risikomanagement

Für die Wissenschaftstheorie sind die Rolle der Statistik in den Wissenschaften und natürlich auch der Kausalbegriff zentrale Themen. Schon deshalb kann es für den aufgeschlossenen Risikomanager spannend sein, sich hier an der einen oder anderen Stelle einzulesen. Die Statistik spielt in der modernen Wissenschaft eine fundamentale Rolle, insbesondere bei der Analyse von Daten, der Überprüfung von Hypothesen und der Vorhersage von Trends. Für Risikomanager ist das Verständnis statistischer Methoden und ihrer Grenzen von entscheidender Bedeutung, da sie häufig mit Wahrscheinlichkeiten, Korrelationen und Prognosen arbeiten. Der Kausalbegriff, also die Frage nach Ursache-Wirkungs-Beziehungen, ist ebenfalls von großer Relevanz. In der Risikoanalyse ist es oft entscheidend, nicht nur Korrelationen zu erkennen, sondern auch kausale Zusammenhänge zu verstehen. Dies ermöglicht es, Risiken nicht nur zu identifizieren, sondern auch ihre Ursachen zu adressieren. Weitere wichtige Aspekte der Wissenschaftstheorie für Risikomanager sind:

Gerade bei den Quantifizierungsversuchen von Risiken verengt sich häufig der Blick auf einen oft zu kleinen Kanon von Methoden. Bei aktuariellen Analysen gibt es einen Methodenzwang, der zum Teil durch gesetzliche Vorschriften, zum Teil aber auch durch einen berufsständischen Konformitätsdruck ausgelöst wird.

In einem hochgradig durchstrukturierten Umfeld mit einem in der Regel ausreichenden Datenbestand mag dies noch eine gewisse Berechtigung haben, und die damit verbundenen Einschränkungen wirken sich nicht immer negativ aus.

Im Bereich des ERM wird ein solcher Methodenzwang aber äußerst schädliche Auswirkungen haben. Es steht zu befürchten, dass sich die Enge des Methodenkorridors auch auf das Risikomanagement außerhalb des Finanzwesens ausweitet.

So etwas könnte z.B. bei der Erweiterung und Fortentwicklung der ESG-Regulatorik geschehen. Ein Blick auf Einsichten der Wissenschaftstheorie kann hier hilfreich sein:

Anwendbarkeit & sprachliche Präzision (Carnap)

Wissenschaftstheorie hebt vielfach die Anwendbarkeit der Theorien hervor, um so einem leeren Theoriengebilde vorzubeugen. (Kant: Anschauungen ohne Begriffe sind blind, Begriffe ohne Anschauungen sind leer.) Risikomanager sollten die tatsächlich bewegbaren Stellschrauben im Auge behalten.Intersubjektive Nachprüfbarkeit

Die Nachvollziehbarkeit der Risikobewertungen und -entscheidungen ist wichtig, um Vertrauen und Akzeptanz bei den Stakeholdern zu gewährleisten. Intersubjektive Bewertungen besitzen einen höheren Grad der Validität. Risikomanager sollten ihre Ergebnisse klar und deutlich formulieren und kommunizieren.

Falsifikation (Popper)

Hypothesen und Theorien müssen widerlegbar sein. Risikomanager sollten ihre Modelle so gestalten, dass es klar definierte Kriterien der Widerlegung bzw. des Anpassungsbedarfs gibt. Eine offene Fehlerkultur ist essenziell für ein gut funktionierendes Risikomanagement.Paradigmenwechsel (Fleck & Kuhn) .

Paradigmen gibt es auch im Risikomanagement. Es kann entscheidend sein, offen für einen Paradigmenwechsel zu sein. (Kleines Beispiel: Zinsmodelle, die auch negative Zinsen zulassen). > Risikomanager sollten stets bereit sein, auf systemische Änderungen zu reagieren.

Kritik an der Dominanz von Theorien (Feyerabend)

Feyerabend kritisierte die Dominanz von Theorien über die Praxis. Für das Risikomanagement bedeutet dies, dass praktische Erfahrung und Kontextwissen ebenso wichtig sind wie theoretische Modelle. Anstatt sich starr an theoretische Modelle zu halten, sollte das Risikomanagement flexibel und anpassungsfähig sein, um auf konkrete Situationen und sich ändernde Bedingungen reagieren zu können.

Die hier formulierten Schlussfolgerungen klingen in ihrer Kürze unvermeidbar etwas banal und sollen nur anzeigen, in welchen Bereichen eine Beschäftigung mit der Wissenschaftstheorie für den Risikomanager tatsächlich spannend sein kann.

13.2 Sprache und Risikomanagement

Die Sapir-Whorf-Hypothese, also die Annahme, dass die Sprache die Wahrnehmung der Welt entscheidend beeinflusst, war besonders in den 50er Jahren des 20. Jhd. populär und verdankte diese Popularität insbesondere dem Nicht-Linguisten Benjamin Lee Whorf *), der als Ingenieur für eine Versicherungsgesellschaft arbeitete und feststellte, wie wichtig Kommunikation und Sprache Im Risikomanagement sein können. Whorfs linguistische Interessen vertieften sich und er studierte bei dem Ethnologen und Linguisten Edward Sapir, ohne seine Arbeit bei der Versicherung aufzugeben.

Durch den Vergleich von Hopi-Sprache und SAE (Standard Average European) meinte Whorf nachweisen zu können, dass das linguistische System (die Grammatik) jeder Sprache nicht nur ein reproduktives Instrument ist, mit dem Gedanken ausgedrückt werden. Die Sprache selbst ist es demnach, die den Gedanken formt und Schema für die geistige Aktivität des Individuums ist. Wahrnehmungen und deren Analysen werden durch die Sprache determiniert und sie bestimmt, welche Mittel uns zur Verfügung stehen, unsere Umwelt zu strukturieren.

Ähnliche Überzeugungen findet man auch in der Sprachphilosophie (z.B. bei Wittgenstein).

Der britische Soziologe Basil Bernard Bernstein übertrug die Sapir-Whorf-Hypothese, die den sprachlichen Determinismus auf Kulturkreise bezog, auf soziologische Schichten innerhalb eines Kulturkreises und sprach vom restringierten Code der Unterschicht und dem elaborierten Code der Oberschicht (Bernstein-Hypothese). 26

Wenngleich der von Whorf behauptete sprachliche Determinismus wohl zu Recht kritisiert wurde, und die Sapir-Whorf-Hypothese als auch die Bernstein-Hypothese in ihrer Absolutheit kaum haltbar sind, so kann dennoch angenommen werden, dass die Sprache unsere Weltwahrnehmung nicht unwesentlich beeinflusst.

Gerade bei abstrakten Entitäten, also z.B. Risiken, kann Realität, anders als bei Gegenständen, die man mit den Händen greifen kann, nur vermittels Sprache begriffen werden. Divergierende Einschätzungen können dann gerade auch in multinationalen Unternehmen schnell zu Missverständnissen führen.  Die Konzernsprache ist zumeist Englisch / Amerikanisch und wird von den Mitarbeitern explizit oder auch nur implizit in die jeweilige Muttersprache übersetzt und rückübersetzt. Anglizismen als Teil des Idiolekts weichen in ihrem semantischen Gehalt und syntaktischen Funktionalität oft deutlich vom englischen Ursprungsbegriff ab.

Ein gleiches Wortverständnis bei Mitarbeitern unterschiedlicher Kulturkreise sollte durch standardisierte Begriffsdefinitionen, Schulungen, einfache und klare Kommunikation und etablierten, Feedbackmechanismen sichergestellt werden.

14 Anhang

14.1 R Einführungen

Eine knappe erste Einführung in R der TU Dresden findet sich hier:

R TU-Dresden

Ähnlich hier von der LMU und der Universität Dortmund:

R LMU-München

R UniDo

14.2 R Pakete für das Risikomamagement

Diese Liste ist nicht vollständig. Für viele Spezialanwedungen kann es sinnvoll sein, weitere Pakete hinzuzuziehen. Zudem ist zu beachten, daß sich die Vielfalt der Pakete ständig ausweitert.

actuar

Versicherungsmathematische Funktionen und Heavy Tailed Distributions Funktionen und Datensätze für die Versicherungsmathematik: Modellierung von Schadenverteilungen; Risikotheorie und Ruintheorie; Simulation von zusammengesetzten Modellen, diskreten Mischungen und zusammengesetzten hierarchischen Modellen; Credibilitytheorie. Unterstützung zahlreicher zusätzlicher Wahrscheinlichkeitsverteilungen zur Modellierung der Größe und Häufigkeit von Versicherungsschäden: 23 kontinuierliche Verteilungen mit starkem Schwanz; die diskrete Poisson-inverse Gauß-Verteilung; nullabgeschnittene und nullmodifizierte Erweiterungen der diskreten Standardverteilungen. Unterstützung für phasenartige Verteilungen, die häufig zur Berechnung von Ruinwahrscheinlichkeiten verwendet werden.

Amelia

Ein Werkzeug, das fehlende Daten in einem einzelnen Querschnitt (z. B. eine Erhebung), aus einer Zeitreihe (z. B. Variablen, die für jedes Jahr in einem Land jedes Jahr in einem Land erhoben werden), oder aus einem Zeitreihen-Querschnittsdatensatz (z. B. nach Jahren für jedes einzelne Land erhoben). Amelia II implementiert unseren Bootstrapping-basierten Algorithmus, der der im Wesentlichen die gleichen Antworten liefert wie die Standardansätze IP oder EMis, in der Regel erheblich schneller ist als bestehende Ansätze und viel mehr Variablen verarbeiten kann. Anders als Amelia I und andere statistisch strengen Imputations-Software sdoorzt es praktisch nie ab (aber bitte lassen Sie uns wissen, wenn Sie das Gegenteil feststellen!). Das Programm verallgemeinert bestehende Ansätze, indem es Trends in Zeitreihen über die Beobachtungen innerhalb einer Querschnittseinheit hinweg, sowie Prioritäten die es den Experten ermöglichen, ihre Annahmen über die Werte fehlender Zellen der fehlenden Zellen in ihren Daten einbeziehen können. Amelia II enthält auch nützliche Diagnostik der Eignung von Modellen mit Mehrfach-Imputation. Das Programm funktioniert über die R-Befehlszeile oder über eine grafische Benutzeroberfläche, die R-Kenntnisse nicht erforderlich sind.

ADGofTest

Anderson-Darling-GoF-Test mit p-Wert-Berechnung auf der Grundlage von Marsaglias Arbeit “Evaluating the Anderson-Darling Distribution” von 2004

animation Eine Galerie von Animationen in der Statistik und Programme zum Erstellen Animationen.

BCEA Erstellt eine wirtschaftliche Bewertung einer Stichprobe geeigneter Variablen für Kosten und Wirksamkeit/Nutzen für zwei oder mehr Interventionen, z.B. aus einem Bayes’schen Modell in Form von MCMC-Simulationen. Dieses Paket berechnet die kostengünstigste Alternative und erstellt grafische Zusammenfassungen und probabilistische Sensitivitätsanalysen, siehe Baio et al.

causaleffect

Funktionen zur Identifizierung und zum Transport von kausalen Effekten. Bietet einen Algorithmus zur Identifizierung von kausalen Effekten (IDC) 27, einen Algorithmus zur Übertragbarkeit von mehreren Domänen mit begrenzten Experimenten von Bareinboim, E. und Pearl, J. 28http://ftp.cs.ucla.edu/pub/stat_ser/r443.pdf und einen Algorithmus zur Wiederherstellung von Selektionsverzerrungen von Bareinboim, E. und Tian, J. (2015) http://ftp.cs.ucla.edu/pub/stat_ser/r445.pdf. Alle zuvor genannten Algorithmen basieren auf einem Algorithmus zur Identifizierung kausaler Effekte von Tian, J. (2002)

copula Klassen (S4) der häufig verwendeten elliptischen, archimedischen, Extremwert- und andere Copula-Familien sowie deren Rotationen, Mischungen und Asymmetrisierungen. Verschachtelte archimedische Copulas, verwandte Werkzeuge und spezielle Funktionen. Methoden für Dichte, Verteilung, Zufalls Zufallszahlengenerierung, bivariate Abhängigkeitsmaße, Rosenblatt-Transformation, Kendall-Verteilungsfunktion, perspektivische und Konturplots. Anpassen von Copula-Modellen mit potentiell teilweise festen Parametern, einschließlich Standardfehler. Tests auf serielle Unabhängigkeit, Copula-Spezifikationstests (Unabhängigkeit, Austauschbarkeit, radiale Symmetrie, Extremwertabhängigkeit Extremwertabhängigkeit, Goodness-of-Fit) und Modellauswahl auf der Basis Kreuzvalidierung. Empirische Copula, geglättete Versionen und nichtparametrische Schätzer der Pickands-Abhängigkeitsfunktion.

critpath

Lösung des Problems des Projektmanagements mit den Methoden CPM (Critical Path Method), PERT (Program Evaluation and Review Technique) und LESS (Least Cost Estimating and Scheduling). Das Paket legt den kritischen Pfad, den Zeitplan und das Gantt-Diagramm fest. Darüber hinaus erlaubt es, ein Diagramm auch mit markierten kritischen Aktivitäten zu zeichnen.

DataExplorer

Paket zur schnellen Exploration und Manipulation von Daten.

DescTools

Eine Sammlung verschiedener grundlegender statistischer Funktionen und komfortabler Wrapper zur effizienten Beschreibung von Daten. Die Absicht des Autors war es, eine Toolbox zu erstellen, die die (notorisch zeitaufwendigen) ersten deskriptiven Aufgaben in der Datenanalyse, bestehend aus der Berechnung von deskriptiven Statistiken, dem Zeichnen von grafischen Zusammenfassungen und dem Berichten der Ergebnisse, erleichtert. Das Paket enthält außerdem Funktionen zur Erstellung von Dokumenten mit MS Word (oder PowerPoint) und Funktionen zum Import von Daten aus Excel. Viele der enthaltenen Funktionen sind verstreut in anderen Paketen und anderen Quellen zu finden, die zum Teil von R-Titanen geschrieben wurden. Der Grund für die Sammlung dieser Funktionen in diesem Paket war in erster Linie, sie in EINEM Paket zu konsolidieren statt in Dutzenden von Paketen (die ihrerseits von anderen Paketen abhängen können, die überhaupt nicht benötigt werden) und eine gemeinsame und konsistente Schnittstelle zu schaffen, was die Benennung von Funktionen und Argumenten, die Behandlung von NA, Recyclingregeln usw. betrifft. Die Google Style Guides wurden als Benennungsregeln verwendet (in Ermangelung überzeugender Alternativen). Der “BigCamelCase”-Stil wurde folglich auch auf Funktionen angewandt, die aus anderen R-Paketen entlehnt wurden.

distributional Vektorisierte Verteilungsobjekte mit Werkzeugen zur Manipulation, Visualisierung und Verwendung von Wahrscheinlichkeitsverteilungen. Entwickelt, damit Modell Vorhersageausgaben Verteilungen und nicht ihre Parameter zurückgeben, so dass die Benutzer direkt mit Vorhersageverteilungen in einem datenorientierten Arbeitsablauf. Neben der Bereitstellung allgemeiner Ersetzungen für p/d/q/r-Funktionen können auch andere nützliche Statistiken berechnet werden, darunter Mittelwerte, Varianzen, Intervalle und Regionen mit höchster Dichte.

https://pkg.mitchelloharawild.com/distributional/

evaluator Ein quelloffenes Risikoanalyse-Toolkit auf der Grundlage der OpenFAIR-Ontologie https://publications.opengroup.org/c20b und dem Risikoanalyse-Standard https://publications.opengroup.org/c20a. Befähigt eine Organisation zur eine quantifizierbare, wiederholbare und datengesteuerte Risikobewertung durchzuführen.

evd

Erweitert Simulation, Verteilung, Quantile und Dichte Funktionen auf univariate und multivariate parametrische Extremwert Extremwertverteilungen und bietet Anpassungsfunktionen, die die Maximum-Likelihood-Schätzungen für univariate und univariate und bivariate Maximalwertmodelle und für univariate und bivariate Schwellenwertmodelle.

explore

Vereinfacht die explorative Datenanalyse. Generiert interaktive R Shiny Module.

fitdistrplus

Hilfe zur Anpassung einer parametrischen Verteilung an nicht-zensierte oder zensierte Daten

Erweitert die Funktion fitdistr() (des Pakets MASS) um mehrere Funktionen, die bei der Anpassung einer parametrischen Verteilung an nicht zensierte oder zensierte Daten helfen. Zensierte Daten können linkszensierte, rechtszensierte und intervallzensierte Werte mit mehreren unteren und oberen Schranken enthalten. Zusätzlich zur Maximum-Likelihood-Schätzung (MLE) bietet das Paket die Methoden Moment-Matching (MME), Quantile-Matching (QME),
Maximum-Goodness-of-Fit-Schätzung (MGE) und Maximum-Spacing-Schätzung (MSE) (nur für nicht zensierte Daten verfügbar). Gewichtete Versionen von MLE, MME, QME und MSE sind verfügbar. Siehe z. B. Casella & Berger (2002), Statistical inference, Pacific Grove, für eine allgemeine Einführung in die parametrische Schätzung.

Übersetzungen mit www.DeepL.com/Translator, zum Teil nachgebessert.

goftest

Cramer-Von Mises and Anderson-Darling tests of goodness-of-fit for continuous univariate distributions, using efficient algorithms.

https://github.com/baddstats/goftest

Hmisc

Enthält viele nützliche Funktionen für Daten Analyse, High-Level-Grafiken, Dienstprogramme, Funktionen zur Berechnung des Stichprobenumfangs und der Aussagekraft, Simulation, Importieren und Beschriften von Datensätzen, Imputieren fehlender Werte, fortgeschrittene Tabellenerstellung, Clustering von Variablen, Manipulation von Zeichenketten, Konvertierung von R-Objekten in LaTeX- und HTML-Code, Umkodierung von Variablen, Caching, vereinfachtes paralleles Rechnen, Ver- und Entschlüsselung von Daten mit einem sicheren Arbeitsablauf, allgemeine statistische Schätzung mit gleitenden Fenstern und Unterstützung bei der Interpretation der Hauptkomponentenanalyse.

https://hbiostat.org/R/Hmisc/

missForest

Die Funktion ‘missForest’ in diesem Paket wird verwendet, um fehlende Werte zu imputieren, insbesondere im Fall von Daten mit versgemischten Datentypen. Sie verwendet einen Random Forest, der auf den beobachteten Werten einer einer Datenmatrix trainiert wurde, um die fehlenden Werte vorherzusagen. Es kann verwendet werden für kontinuierliche und/oder kategoriale Daten einschließlich komplexer Interaktionen und nicht-lineare Beziehungen. Sie liefert einen Out-of-bag (OOB)Imputationsfehlerschätzung ohne die Notwendigkeit eines Testsatzes oder aufwendige Kreuzvalidierung. Es kann parallel ausgeführt werden, um Berechnungszeit zu sparen.

https://www.r-project.org, https://github.com/stekhoven/missForest

mc2d

Werkzeuge für zweidimensionale Monte-Carlo-Simulationen Ein komplettes Framework zur Erstellung und Untersuchung
zweidimensionaler Monte-Carlo-Simulationen, auch bekannt als Monte-Carlo-Simulationen zweiter Ordnung. Enthält auch verschiedene Verteilungen (Pert, Dreiecksverteilung, Bernoulli, empirische diskrete und kontinuierliche Verteilungen).

mice

Mehrfache Imputation unter Verwendung von Fully Conditional Specification (FCS) implementiert durch den MICE-Algorithmus wie beschrieben in Van Buuren und Groothuis-Oudshoorn (2011) doi:10.18637/jss.v045.i03. Jede Variable hat ihr eigenes Imputationsmodell. Eingebaute Imputationsmodelle sind vorgesehen für kontinuierliche Daten (Predictive Mean Matching, Normal), binäre Daten (logistische Regression), ungeordnete kategoriale Daten (polytomous logistic regression) und geordnete kategoriale Daten (Proportional Odds). MICE kann auch imputieren kontinuierliche zweistufige Daten (Normalmodell, Pan, Variablen der zweiten Stufe). Passive Imputation kann verwendet werden, um die Konsistenz zwischen Variablen aufrechtzuerhalten. Zur Überprüfung der Qualität der Imputationen stehen verschiedene Diagnoseplots Imputationen zu überprüfen.

https://github.com/amices/mice, https://amices.org/mice/, https://stefvanbuuren.name/fimd/

mistr

Ein flexibler Berechnungsrahmen für Mischverteilungen mit dem Schwerpunkt auf zusammengesetzten Modellen.

mvtnorm

Berechnet multivariate normale und t-Wahrscheinlichkeiten, Quantile, Zufallsabweichungen, und Dichten. Log-Likelihoods für multivariate Gauß-Modelle und Gauß-Kopulae parametrisiert durch Cholesky-Faktoren von Kovarianz- oder Präzisionsmatrizen sind implementiert für intervallzensierte und exakte Daten oder eine Mischung daraus. Score-Funktionen für diese log-Likelihoods sind verfügbar. Eine Klasse, die mehrere untere Dreiecksmatrizen und entsprechende Methoden sind Teil dieses Pakets. Importe: stats

http://mvtnorm.R-forge.R-project.org

randtoolbox

Toolbox für Pseudo- und Quasi-Zufallszahlengenerierung und Zufallsgeneratortests

openxlsx

Lesen, Schreiben und Bearbeiten von xlsx-Dateien

PerformanceAnalytics

Sammlung ökonometrischer Funktionen für die Leistungs- und Risiko Analyse. Zusätzlich zu den Standard-Risiko- und Leistungsmetriken soll dieses soll dieses Paket Praktikern und Forschern dabei helfen, die neuesten Forschung in der Analyse von nicht-normalen Renditeströmen. Im Allgemeinen wird es am meisten Renditedaten (und nicht Preisdaten) auf einer regelmäßigen Skala getestet, aber die meisten Funktionen funktionieren auch mit unregelmäßigen Renditedaten, und immer mehr immer mehr Funktionen arbeiten mit GuV- oder Preisdaten, wenn möglich.

https://github.com/braverock/PerformanceAnalytics

projmanr Berechnet den kritischen Pfad für eine Reihe von Aufgaben, erstellt Gantt-Diagramme und generiert Netzdiagramme, um ähnliche Funktionen wie die grundlegenden Werkzeuge von “MS Project” zu bieten.

qrng

Functionalitäten zur von (randomized) quasi-Zufallszahlen in hohen Dimensionen.

Toolbox für Pseudo- und Quasi-Zufallszahlengenerierung und Zufalls Generator-Tests

readxl

Importiert Excel-Dateien in R. Unterstützt ‘.xls’ über die eingebettete ‘libxls’ C-Bibliothek https://github.com/libxls/libxls und ‘.xlsx’ über die die eingebettete ‘RapidXML’ C++ Bibliothek https://rapidxml.sourceforge.net/. Funktioniert auf Windows, Mac und Linux ohne externe Abhängigkeiten.

randomForest

Klassifizierung und Regression auf der Grundlage eines Random Forest mit zufälligen Eingaben, basierend auf Breiman

https://www.stat.berkeley.edu/\~breiman/RandomForests/

rpart

Rekursive Partitionierung für die Klassifizierung, Regression und Überlebensbäume. Eine Implementierung des größten Teils der Funktionalität des 1984 erschienenen Buches von Breiman, Friedman, Olshen und Stone https://github.com/bethatkinson/rpart, https://cran.r-project.org/package=rpart

SHELF Implementiert verschiedene Methoden zur Ermittlung einer Wahrscheinlichkeits Wahrscheinlichkeitsverteilung für einen einzelnen Parameter von einem Experten oder einer Gruppe von Experten. Der Experte gibt eine kleine Anzahl von Wahrscheinlichkeitsurteilen ab, die den Punkten auf seiner kumulativen Verteilungsfunktion funktion. Eine Reihe von parametrischen Verteilungen kann dann angepasst und angezeigt werden, wobei die Rückmeldungen in Form von angepassten Wahrscheinlichkeiten und Perzentilen. Für mehrere Experten kann ein gewichteter linearer Pool berechnet werden. Enthält auch Funktionen zur Erhebung von Überzeugungen über Populationsverteilungen, die Erhebung von multivariaten Verteilungen mit einer Gauß’schen Copula, zur Ermittlung einer Dirichlet-Verteilung und zur Ermittlung von Verteilungen für Varianzparameter in einem Modell mit zufälligen Effekten Meta-Analyse-Modell. R Shiny Apps für die meisten der Methoden sind enthalten.

simmer

Diskrete-Ereignis-Simulation für R

Ein prozessorientiertes und trajektorienbasiertes Paket zur ereignisdiskreten Simulation (DES) für R. Es ist als generisches und dennoch leistungsfähiges Framework konzipiert. Die Architektur umfasst einen robusten und schnellen, in C++ geschriebenen Simulationskern mit automatischen Überwachungsfunktionen. Es bietet eine reichhaltige und flexible R-API, die sich um das Konzept der Trajektorie dreht, einem gemeinsamen Pfad im Simulationsmodell für Entitäten desselben Typs.

SCperf

Funktionen zur Planung und Verwaltung von Beständen in einer Lieferkette.

simmer

Discrete-Event Simulation mit R

simmer.plot

Plot-Methoden für das Paket simmer

simulator

Ein Rahmen für die Durchführung von Simulationen, wie sie in methodischen Statistikarbeiten üblich sind. Die Gestaltungsprinzipien dieses Pakets werden in Bien, J. (2016) “The simulator: An Engine to Streamline Simulations”, das unter <arXiv:1607.00021> verfügbar ist.

SmartEDA

Zusammenfassungen uns Explorationen von Daten

stats

Statistische Funktionen (Teil von R)

writexl

Unabhängiger Datenrahmen-zu-xlsx-Exporter basierend auf ‘libxlsxwriter’. Schnell und kein Java oder Excel erforderlich.

XLConnect

Umfangreiche Funktionen zum Lesen, Schreiben und Manipulieren von Excel-Dateien

xlsx

Lesen, Schreiben, Formatieren von Excel 2007- und Excel 97/2000/XP/2003-Dateien

zoo

Eine S3-Klasse mit Methoden für vollständig geordnete indizierte Beobachtungen. Sie ist insbesondere für unregelmäßige Zeitreihen von numerischen Vektoren/Matrizen und Faktoren. Die wichtigsten Designziele von zoo sind die Unabhängigkeit von einer bestimmten Index/Datum/Zeit-Klasse und Konsistenz mit ts und Base R durch Bereitstellung von Methoden zur Erweiterung von Standards.

14.3 LLMs und R

Mit Unterstütung von Large Language Models (LLMs) lässt die Erstellung und Prüfung von R Code oft deutlich vereinfachen.

Das R Paket gander macht die Integration von LLM chats in RStudio und auch Positron besonders einfach. definedutische

gander ermöglicht die Verarbeitung von Datensätzen, die größer als der verfügbare Arbeitsspeicher sind, indem es Daten in Chunks verarbeitet.

Das Paket nutzt C++-Implementierungen für rechenintensive Operationen, was zu einer schnelleren Ausführung im Vergleich zu reinem R-Code führt.

gander in Aktion

14.4 Untersuchung zur Verwendung von Risiko und Gefahr

“Risiko” - Wortwolke

“Gefahr”- Wortwolke

Verwendung von “Risiko” und “Gefahr” im Zeitverlauf

Footnotes

  1. Dem Linguisten Roman Jacobson folgend, meinen wir, dass dem Gendern eine Fehlinterpretation des Verhältnissses von Genus einerseits und Geschlecht bzw. Gender andererseits zugrundeliegt.↩︎

  2. Robert Musil über Panik, aus: Über die Dummheit (Vortrag in Wien, 1937):

    Psychologisch wird das, was sich beim Eintreten einer Panik abspielt, als ein Aussetzen der Intelligenz, und überhaupt der höheren geistigen Artung, angesehen, an deren Stelle älteres seelisches Getriebe zum Vorschein kommt; aber es darf wohl hinzugefügt werden, daß mit der Lähmung und Abschnürung des Verstandes in solchen Fällen nicht sowohl ein Hinabsinken zum instinktiven Handeln vor sich geht als vielmehr eines, das durch diesen Bereich hindurch bis zu einem Instinkt der letzten Not und einer letzten Notform des Handelns führt. Diese Handlungsweise hat die Form völliger Verwirrung, sie ist planlos und scheinbar von der Vernunft wie von jedem rettenden Instinkt verlassen; aber ihr unbewußter Plan ist der, die Qualität der Handlungen durch deren Zahl zu ersetzen, und ihre nicht geringe List beruht auf der Wahrscheinlichkeit, daß sich unter hundert blinden Versuchen, die Nieten sind, auch ein Treffer findet. Ein Mensch in seiner Kopflosigkeit, ein Insekt, das so lange gegen die geschlossene Fensterhälfte stößt, bis es durch Zufall bei der geöffneten ins Freie »stürzt«, …..↩︎

  3. Gialunca Baio et al :Bayesian Cost-Effectiveness Analysis with the R package BCEA, Springer 2017↩︎

  4. Ilya Shpitser and Judea Pearl: Identification of Conditional Interventional Distributions, University of California, Los Angeles 2006, LINK↩︎

  5. Barenboim,E , Pearl, J. :↩︎

  6. Boris W Gnedenko (1997), Lehrbuch der Wahrscheinlichkeitstheorie, Harri Deutsch; Auflage: 10., korr. Aufl., Frankfurt a.M.↩︎

  7. Deutsches Institut für Normung e.V. : DIN EN 1050 - Leitsätze zur Risikobeurteilung, 1997,Berlin↩︎

  8. Luhmann, N. (1991): Soziologie des Risikos, New York 1991↩︎

  9. http://wortschatz.uni-leipzig.de/↩︎

  10. Juergen Weichselgartner, Naturgefahren als soziale Konstruktion, Dissertation Universität Bonn, Shaker Verlag, Aachen 2002.↩︎

  11. Evaluierung der Kommunikation über die  Unterschiede zwischen „risk” und „hazard”, Berlin 2009 (BfR-Wissenschaft 02/2009), Herausgegeben von Ellen Ulbig, Rolf F. Hertel, Gaby-Fleur Böl, Projektdurchführung: Peter M. Wiedemann, Holger Schütz, Albena Spangenberg  (Forschungszentrum Jülich GmbH, Programmgruppe Mensch, Umwelt, Technik, Jülich)↩︎

  12. https://www.bfr.bund.de/de/presseinformation/2010/04/_risiko__oder__gefahr___experten_trennen_nicht_einheitlich-48560.html↩︎

  13. vgl. The Monty Hall Dilemma Revisited: Understanding the Interaction of Problem Definition and Decision Making, Peter R. Mueser und Donald Granberg, 1999 , Link↩︎

  14. Ein mögliches Ereignis ist dabei im Regelfall ein Ereignis, welches sich möglicherweise in der Zukunft ereignen wird. Dies ist aber nicht notwendig so, es kann sich auch um ein mögliches vergangenes Ereignis handeln, zu dessen etwaigen Eintritt noch keine Informationen vorliegen.↩︎

  15. Kaplan, S. & Garrick, B.J. (1981): On the quantitative definition of risk. Risk Analysis, 1, 1127.↩︎

  16. Karolina Szczęsna: Principal Component Analysis (PCA), 2022, RPubs

    PCA↩︎

  17. Marcel Hortstmann, Universität Münster (2008): Quasi Monte Carlo Methoden↩︎

  18. Zum theoretischen Hintergrund: H. Niederreiter, “Point sets and sequences with small discrepancy,” Monatshefte für Mathematik, vol. 104,no. 4, Dec. J. H. Halton, “On the efficiency of certain quasi-random sequences of points in evaluating multi-dimensional integrals,” Numerische Mathematik, vol. 2, no. 1, Dec.↩︎

  19. vgl.: Michel Crouhy/Dan Galai/Robert Mark: Model Risk, in: Journal of Financial Engineering, (1998); Vol. 7 (3/4), S. 267-288↩︎

  20. “Ich lernte etwas, an jenem grauen Nachmittag in dem nackten Klassenzimmer… über die ohnmächtige tiefe, rasende Wut, die die richtige Frage immer bei dem auslösen kann, der sie nicht zu beantworten vermag” aus Lars Gustafssons : “Dr. Weiss’ letzter Auftrag”↩︎

  21. Ockhams Rasiermesser ist ein auf Wilhelm von Ockham (1288–1347) zurückgehendes heuristisches Prinzip der ontologischen Sparsamkeit und der Einfachheit von Theorien.  Dieses Prinzip spielt in verschiedenen präzisierten Versionen eine wichtige Rolle in der modernen Wissenschaftstheorie. VGL. z.B. Goodman (1955).↩︎

  22. Reichenbach, H. 1956. The direction of time. Berkeley, I dependency-based causality seems to clash with the direc- CA: University of California Press↩︎

  23. Suppes, P. 1970. A probabilistic theory of causality. AmArtificial Intelligence 35(2):259-71. sterdam: North Holland.↩︎

  24. Pearl, J. (1988). Embracing causality in default reasoning. Artificial Intelligence, 35(2), 259-271.↩︎

  25. Der Fall erregte in den 1970er Jahren erhebliche Aufmerksamkeit und führte zu einem spektakulären Rechtsstreit. Der Fall hatte weitreichende Auswirkungen auf die Gleichstellungspolitik im Hochschulwesen:

    • Er trug zur Entwicklung von Gleichstellungsgesetzen bei.

    • Die Debatte beeinflusste die Einführung von Zulassungsquoten für Minderheiten.

    • Es kam zu Veränderungen in Lehrplänen, um Diversität zu fördern.

    Obwohl sich dann herausstellte, dass  Männer (und nicht Frauen) diskriminiert wurden, kam es allerdings nicht zu entsprechend abgeänderten Vorwürfen gegen die University of California, Berkeley.↩︎

  26. Whorf, BL (1956): Sprache - Denken - Wirklichkeit. Beiträge zur Metalinguistik und Sprachphilosophie; Rowohlts Enzyklopädie; Hamburg.↩︎

  27. Ilya Shpitser and Judea Pearl: Identification of Conditional Interventional Distributions, University of California, Los Angeles 2006, LINK↩︎

  28. Barenboim,E , Pearl, J. :↩︎