Neben der verlässlichen Berechnung von Risikowerten kommt der Visualisierung der Ergebnisse eine entscheidende Bedeutung zu, wenn die richtigen Steuerungsimpulse gesetzt werden sollen. Hierzu bietet R eine Unzahl von Möglichkeiten. Ich bin vor einigen Tagen hier auf einen Artikel zu ggplot2 gestoßen und musste das direkt selbst ausprobieren (bitte tapfer durchhalten, der Graph kommt ganz unten…):
# Package ggplot2 laden require(ggplot2) # Mittelwert und Standardabweichung setzen my.mean <- 0.10 vola.1m <- 0.0015 #Schwellwerte definieren my.red <- 0.08 my.yellow <- 0.09 # Zeitraueme definieren my.hist <- 24 my.future <- 24 # Zeitreihe aufstellen my.dates <- seq(as.Date("2010-01-01"), length.out=my.hist+my.future, by="1 month") #Reproduzierbarkeit sicherstellen set.seed(12345) # Eigenmittelquoten des simulieren, hier vereinfacht als # Normalverteilt angenommen my.emquote <- c(rnorm(n=my.hist, mean=my.mean, sd=vola.1m), rep(NA,times=my.future)) # Den letzten Wert der Simulation als Ausgangsbasis nehmen, # sieht in der Grafik hinterher einfach netter aus... my.new.mean <- my.emquote[my.hist] # Aus der Normalverteilung das 99%-Quantil ableiten, # Standardabweichung wird ueber Wurzel-t-Funktion ermittelt. my.emquote.99 <- c(rep(NA,times=my.hist-1), my.new.mean, sapply(1:my.future, function(x) {qnorm(p=0.99, mean=my.new.mean, sd=vola.1m*(x/1)^0.5)})) # Dito 1%-Quantil... my.emquote.01 <- c(rep(NA,times=my.hist-1), my.new.mean, sapply(1:my.future, function(x) {qnorm(p=0.01, mean=my.new.mean, sd=vola.1m*(x/1)^0.5)})) # ...und 75%-Quantil... my.emquote.75 <- c(rep(NA,times=my.hist-1), my.new.mean, sapply(1:my.future, function(x) {qnorm(p=0.75, mean=my.new.mean, sd=vola.1m*(x/1)^0.5)})) # ...und 25%-Quantil... my.emquote.25 <- c(rep(NA,times=my.hist-1), my.new.mean, sapply(1:my.future, function(x) {qnorm(p=0.25,mean=my.new.mean, sd=vola.1m*(x/1)^0.5)})) # Alle Vektoren huebsch in einen Data-Frame packen. my.data<-data.frame(dates=my.dates, quoten=my.emquote, quoten.01=my.emquote.01, quoten.99=my.emquote.99, quoten.25=my.emquote.25, quoten.75=my.emquote.75, grenze.rot=my.red, grenze.gelb=my.yellow) # Dann den Plot definieren: my.plot<-ggplot( # Data-Frame als Grundlage my.data, # x-Achse ist die Zeitreihe aes(x=my.dates)) + # Titel fuer die Grafik labs(title = "Simulation Eigenmittelquote") + # y-Achse formatieren scale_y_continuous(breaks = seq(0.07, 0.12, by =0.01 ), limits = c(0.07,0.12), labels = seq(7,12, by =1)) + # Grafikparameter fuer die Zukunft scale_fill_manual("Konfidenz", breaks = c("98% Konfidenz", "50% Konfidenz", "Gruene Zone", "Gelbe Zone", "Rote Zone"), values = c('98% Konfidenz' = "grey", '50% Konfidenz' = "darkgrey", 'Gruene Zone' = "green", 'Gelbe Zone' = "yellow", 'Rote Zone' = "red")) + # Grenze gruen geom_ribbon(aes(ymax=0.12, ymin=grenze.gelb, fill="Gruene Zone"), alpha=0.1) + #Grenze gelb geom_ribbon(aes(ymax=grenze.gelb, ymin=grenze.rot, fill="Gelbe Zone"), alpha=0.1) + #Grenze gelb geom_ribbon(aes(ymax=grenze.rot, ymin=0.07, fill="Rote Zone"), alpha=0.1) + # Linie fuer die histrische Eigenmittelquote geom_line(aes(y = my.emquote), size = 1, linetype = 1, alpha = 1, colour="darkgrey") + #Flaeche fuer 98%-Konfidenz geom_ribbon(aes(ymax = my.emquote.99, ymin = my.emquote.01, fill = "98% Konfidenz"), colour = "grey", linetype = 3, alpha = 0.4) + #Flaeche fuer 50%-Konfidenz geom_ribbon(aes(ymax = my.emquote.75, ymin = my.emquote.25, fill = "50% Konfidenz"), colour = "darkgrey", linetype = 3, alpha = 0.4) + # Beschriftung der y-Achse ylab(paste("Eigenmittelquote in %", sep = "")) + #Beschriftung der x-Achse xlab(paste("Zeit")) my.plot
Und schon ist die Grafik da. Man sieht (meiner Meinung nach deutlich) die drei Zonen: grün für die unkritischen Werte, gelb als Warnzone, rot als inakzeptablen Bereich. Die historischen Ist-Werte für die Eigenmittelqoute ist als graue Linie dargestellt, die unsicheren zukünftigen Werte werden als graue Bereiche dargestellt: