Korrelationen und Simulationen II

Im letzten Blog haben wir dargestellt, wie Korrelationen auch mittels Rängen dargestellt werden können. Unbeantwortet ist aber geblieben, wie Korrelationen in MC FLO bei der Simulation gebildet werden. Falls Sie die Antwort interessiert, sollten Sie weiterlesen.

Natürlich wollen wir auch hier nicht auf ein Beispiel verzichten. Stellen wir uns vor, dass wir zwei Datensätze (Menge, Preis) mit jeweils fünf Ausprägungen anhand einer Simulation generiert haben, wobei uns die zugrunde liegende Verteilungsannahme hier nicht interessieren soll. Wenn wir die einzelnen Paare (etwa 2100 und 198) als Punkte graphisch darstellen lassen, sieht dies in Excel wie folgt aus:

Menge Preis
2100 198
4500 183
2800 89
2540 123
2854 144

Zusätzlich zu den Punkten haben wir eine Regressionsgerade dargestellt, welche die lineare Abhängigkeit der abhängigen Variable (hier Preis) und der unabhängigen Variable (hier Menge) darstellt. Wie unschwer zu erkennen ist, lässt sich kein starker Zusammenhang identifizieren. So haben wir bei hohen Preisen (hier definiert als Preise grösser CHF 150) in einem Fall sowohl eine hohe (4500) und in einem anderen Fall eine geringe Absatzmenge (2100) zu verzeichnen.


Um im Rahmen einer Simulation eine hohe Korrelation zu erreichen ohne die Grundverteilung der beiden Datensätze anzutasten, können wir die Reihenfolge der einzelnen Ausprägungen ändern und somit neue Paare generieren. Bei einer möglichst hohen positiven Korrelation würden wir daher die Menge und die Preise aufsteigend sortieren.

Menge Preis
2100 89
2540 123
2800 144
2854 183
4500 189

Bei einer erwünschten höchstmöglich negativen Korrelation würden wir hingegen eine Datenreihe aufsteigend, die andere hingegen absteigend sortieren und dann die entsprechenden Wertepaare bilden.

Menge Preis
2100 189
2540 183
2800 144
2854 183
4500 89

Im ersten Fall haben wir eine Korrelation von 0.83, im zweiten Fall eine solche von -0.89. Durch eine andere Anordnung lassen sich in diesem Beispiel somit Korrelationen zwischen -0.89 und 0.83 erzeugen. So einfach. Leider steigt der Rechenaufwand mit zunehmender Zahl Datenpunkte enorm an. Bei n=5 (wie hier der Fall) müssten bei zwei Datensätzen 25 Datenpaare (5^2) gebildet und geprüft werden. Bei 1000 Datensätzen pro Verteilung wären es bereits 1 Millionen Datenpaare. Und dies bei nur zwei Datensätzen (hier Preis und Menge). Es liegt auf der Hand, dass diese Methode bei vielen Datensätzen und Datenpunkten je Datensatz in der Praxis nicht geeignet ist.


Eine einfachere Möglichkeit bestünde darin,  die gesuchte Grösse direkt zu bestimmen. So könnte etwa ein Datensatz fixiert und mittels Multiplikation der andere Datensatz so verändert werden, dass die gesuchte Korrelation resultiert. Jedoch wird bei der direkten Multiplikation der zweite Datensatz in der Struktur verändert, was der ursprünglich definierten Verteilungsannahme widersprechen würde.


Statt direkt auf die Datensätze zurückzugreifen, ist es ratsam, diese in einem ersten Schritt Rängen zuzuweisen und dann die Rangzahlen einer Multiplikation zu unterziehen. Für den veränderten zweiten Datensatz müssten dann wieder Ränge gebildet und anhand des Ranges der originäre Datensatz herangezogen werden. Und schon hätten wir das Ergebnis (diese Vorgehensweise entspricht der im letzten Blog dargestellten Erzeugung des Rangkorrelationskoeffizienten).


Als ersten Schritt wollen wir die Rangzuordnung der Datensätze Menge und der Preise ermitteln (hier in aufsteigender Reihenfolge):

Menge       Preis         Rang Menge Rang Preis
2100 198 1 5
4500 183 5 4
2800 89 3 1
2540 123 2 2
2854 144 4 3

Die Menge 2100 entspricht dem kleinsten Wert im Datensatz Menge, daher wird ihr der Rang 1 zugewiesen, usw. Wir möchten, dass zwischen Menge und Preis eine Korrelation von 0.75 gebildet werden soll.  Hierzu muss die Korrelationsbeziehung als Matrix dargestellt und diese durch „Zerlegung“  in eine spezielle Matrix überführt werden, welche dann durch Multiplikation unser (vorläufiges) Ergebnis produziert

Ausgangsmatrix
1       0.75
0.75 1
Zerlegung (Cholesky)
1         0.75
0     0.661

Multiplikation der Ränge mit der zerlegten Matrix ergibt dann die Werte, welche untenstehend unter der Bezeichnung „Matrixmultiplikation“ aufgeführt sind. Wir sehen sofort, dass beim ersten Datensatz (Menge) beginnend mit Rang 1 keine Änderung gegenüber der Ursprungsmatrix oben ersichtlich ist, hingegen bei den Datenpunkten zum Datensatz Preis schon. Die Ergebnisse des zweiten Datensatzes, beginnend mit 4.057 werden nun wiederum Rängen zugeordnet und die resultierenden Ränge mit den Ursprungsdaten verknüpft.

Matrixmultiplikation Neuer Rang 2 Neuer Wert 1 Neuer Wert 2
1 4.057 3 2100 144
5 6.396 5 4500 198
3 2.911 2 2800 123
2 2.823 1 2540 89
4 4.984 4 2854 183

So wird der Wert 4.057 dem Rang 3 zugeordnet. In der Ursprungstabelle ist unter Rang 3 der Preis von CHF 144 hinterlegt. Somit lautet das erste Datenpaar [2100, 144]. Für alle Datenpaare ergibt sich dann folgendes Bild und die entsprechende (lineare) Beziehung. Und: tatsächlich sind die Datensätze positiv korreliert: 

(Annex: Wer dies nachrechnet wird feststellen, dass der lineare Korrelationskoeffizient nach Pearson einen Wert von 0.65 und der Spearman Korrelationskoeffizient einen solchen von 0.7 ausweist, also in beiden Fällen nicht der gesuchten Grösse von 0.75 entspricht. Dies ist der geringen Anzahl möglicher Datenpaare geschuldet. Mit zunehmender Anzahl n in einer Simulation wird die Differenz des Spearman Korrelationskoeffizienten zur gesuchten Grösse immer kleiner.)

 

Der Vorteil der Variante über die Rangbildung ist offensichtlich: zum einen kann direkt auf eine (für den Computer schnell durchführbare) Multiplikation zurückgegriffen werden, ohne verschiedene Datenpaare ausprobieren zu müssen, zum anderen werden die Ursprungsdaten mit der vorab umgesetzten Rangzuordnung nicht verändert. Die Korrelationsbildung kann daher mit diesem Verfahren für jede beliebige Verteilung durchgeführt werden.


Mathematiker und Statistiker haben sogar eine verfeinerte Methode entwickelt, welche nicht erheblich langsamer ist, dafür aber Wertepaare generiert, die bei grossen Datenmengen und bei Normalverteilungen als Randverteilung eine ellipsenförmige Struktur bilden.  Dieser Ansatz wurde von den Mathematikern Iman-Conover entwickelt und ist in MC FLO mit Version Sotelo III in einer nun optimierten Version vollständig umgesetzt (für interessierte Leser sei folgender Artikel empfohlen: Stephen J. Mildenhall: Correlation and Aggregate Loss Distributions With An Emphasis On The Iman-Conover Method, November 2005, aufgerufen unter: http://mynl.com/wp/ic.pdf).  Die Grundessenz des Iman-Conover Ansatzes ist anhand des oben beschriebenen Verfahrens aber bereits beschrieben.


Anbei das Resultat der Korrelation von zwei Standardnormalverteilungen mit (Rang-) Korrelationskoeffizient von 0.7 und 100'000 Iterationen gemäss dem Iman-Conover Ansatz.  Die Generierung der entsprechenden Wertepaare wurde dabei innert ca. 2 Minuten abgeschlossen. 

Folgend als weiterer Vergleich die resultierenden Wertepaare bei einer PERT Verteilung (my_1) und Exponentialverteilung (my_2) mit Rangkorrelationskoeffizient -0.98. Wie ersichtlich, weicht die Rangkorrelation von der linearen Korrelation (siehe Regressionsgleichung) doch erheblich ab.

Und wie sieht dies bei Zeitreihen aus?


Zeitreihen bilden ein besonderes Phänomen dar. Zum einem sind Zeitreihen immer mit der Zeit „verknüpft“, was bei den gängigen Verteilungen nicht der Fall ist. Zum anderen kann die Realisierung in Zeitpunkt t von der Realisierung in Zeitpunkt t-1 abhängig sein. Also umgangssprachlich: Die Produktivität eines Arbeitsvorgangs eines Tages wird zu einem Teil von der Produktivität des entsprechenden Arbeitsvorgangs des Vortags bestimmt („Autokorrelation“). Eine direkte Korrelationsbestimmung über die Ursprungsdaten, respektive über deren Ränge, würde aber zu einer Verzerrung bei Zeitreihen führen, da entweder die zeitliche Abhängigkeit verloren ginge oder die Grundannahmen der Verteilung (etwa die Autokorrelation) verfälscht werden würden. 


Zur Hilfe kommt uns jedoch, dass in Zeitreihen zur Bestimmung des konkreten Wertes eine Zufallsgrösse benötigt wird.  Diese beeinflusst, wie der Preis einer Aktie oder die Produktivität am Folgetag zusammengesetzt wird. Daher liegt es nahe, bei Korrelationen von Zeitreihen genau diese Zufallsgrössen zu nehmen und dem oben erwähnten Verfahren zu unterziehen. In MC FLO (Version Sotelo III) werden daher in einem ersten Schritt die Zufallsgrössen korreliert und dann zum gewünschten Wert zusammengesetzt. So können Sie nun mühelos auch Zeitreihen oder entsprechende Prozesse simulieren.


Folgend haben wir zwei Zeitreihen über 250 Tage dargestellt, welche jede für sich genommen einem Wiener Prozess folgen und einer (Rang-)Korrelation von 0.9 unterzogen wurden.

Wie bereits in anderen Beiträgen dargestellt, ist die Abbildung einer Korrelationsbeziehung zwischen Variablen ein wichtiges Instrument, um zukünftige mögliche Ereignisse besser erfassen zu können. Mittels des Rangkorrelationskoeffizienten können Sie nun spielerisch bestehende Daten auf Korrelationen überprüfen und in Ihrer Simulation berücksichtigen.

 

Seien Sie mit MC FLO einen Schritt voraus.
Wir hoffen, dass Sie Spass und Freude an diesem Artikel und der neuen Version von MC FLO haben.


Schreiben Sie uns, falls wir noch etwas besser machen können. 

Kommentar schreiben

Kommentare: 0