 Herzlich Willkommen zurück. Wir befinden uns hier immer noch in der Vorlesungsreihe stochastische Prozesse im Teil 1. Nun jedoch beim ersten Teil unserer Coding-Videos in Python. In diesem Video werden wir uns mit den Random Works befassen und wie Sie diese in Python implementieren können. Wir beginnen zunächst mit der Implementation diverser Pakete, die Sie hier für benötigen werden. Die üblichen verdächtigen NumPy, Matplotlib und Pandas kennen Sie bereits schon. Wir haben hier noch ein 3D-Kit, was wir implementieren werden, was wir später in den anderen Code Snippets benötigen werden. Und wir haben hier noch aus den Itta Tools einen Cycle, der es uns erlaubt, bunte Farben zu malen. Auch dieses Paket werden wir für die folgelschnippets benötigen. Wir fangen hier direkt an, dass wir erstmal ein paar Parameter für den Random Work definieren. Wir befinden uns erstmal noch im 1-dimensionalen Raum, das heißt die Dimension ist 1. Hier können wir die Anzahl der Schritte festlegen, der Bereich, in dem die Schritte stattfinden können. Das heißt wir können entweder einen Schritt zurückgehen, ob der Stelle stehen bleiben oder einen Schritt nach vorne gehen. Das ist das, was wir beim Drunk Hats Walk auch schon gesehen haben. Hier stellen wir nochmal den Ursprung fest, wovon wir denn loslaufen. Und hier simulieren wir unsere Schritte, das heißt wir erzeugen hier eine Ansammlung der Schritte, das bedeutet wir entscheiden, so oft wir eben laufen hier 100 mal zufällig, ob wir eine minus 1, eine 0 oder eine 1 wählen. Und wir sumieren das hier zusammen in einen Pfad, in einen Start und in einen Stop. Das heißt dieser Pfad beginnt hier bei unserem Ursprung, den wir hier oben festgelegt haben, oder gehen wir minus 1, 0 oder 1 bei jedem Schritt. Und das Ganze lassen wir uns hier unten natürlich als Ketterplot ausgeben. Ich habe das hier nochmal ein bisschen bunt gemacht. Plus ich habe hier noch einen Start und einen Endmarker dazu gepackt, ganz salopp gesagt, dass Sie auch sehen, wo die Bewegung anfängt, wo sie aufhört. Hier haben Sie natürlich ganz viele Parameter, wo Sie herzlich eingeladen sind an diesen auch rumzuspielen, sage ich mal. Und ich habe Ihnen hier auskommentiert noch zugefügt, dass Sie dieses Bild sich auch speichern können, der von Ihnen gewünschten Qualität. Ich hätte gesagt, wir beginnen jetzt erst einmal mit 100 Schritten und gucken, was da rauskommt. Und wir sehen hier, wir haben hier einen abwärtsgerichteten Random Walk erwischt, ich mache das mal größer. Wir sehen hier den Startwert und wir sehen nach 100 Schritten, wie weit wir gefallen oder wo wir rausgekommen sind. Ich werde jetzt hier einfach mal, nehmen wir mal, doch nehmen wir mal eine Million Schritte und lassen den Code einfach nochmal laufen. So, hier sehen wir dann, was passiert, wenn wir eine Million Schritte gehen. Bei ebenen Schritt wird entschieden, gehen wir eins nach oben, eins nach unten oder bleiben wir auf der Stelle stehen. Und Sie sehen hier wunderbar, dass das auch durchaus größere Bewegungen darstellen kann, welche man durchaus als Aktienkurs interpretieren könnte. Wenn ich Ihnen jetzt nur diese Bewegung hier aufzeigen würde, ohne die Achsenbeschriftung, dann wäre es für Sie auf den ersten Blick nicht möglich hier herauszufinden, ob es sich um eine Zuweisbewegung handelt oder nicht. Wir werden später noch sehen im Kapitel über Signalanalyse, dass es durch Ausmöglichkeiten gibt, das herauszufinden. Soviel zum eindimensionalen Random Walk. Ich hätte gesagt, wir springen hier direkt mal in unser zweites Skript und schauen uns einen Random Walk im zweidimensionalen an. Wir schalten dann auch glatt mal in das zweite Skript hinein. Das ist effektiv genau das Gleiche wie das erste, nur mit dem Unterschied, dass wir hier jetzt zwei Dimensionen uns anschauen. Da ziehen wir natürlich dann auch die gleiche Schrittweite, nur eben in zwei verschiedene Richtungen. Und deswegen haben wir unten auch ein bisschen mehr stehen. Ich lasse das jetzt einfach mal laufen und wir sehen bei 100 Schritten, wo es losgeht und dass wir uns zufällig in zwei verschiedene Richtungen bewegen. Sieht ganz interessant aus. Ich höhe hier auch einfach mal die Schrittzahlen auf eine Million und wir lassen das nochmal laufen. Rechnet hier jetzt natürlich ein bisschen länger. Ich mache das auch mal groß und dann sehen wir hier, dass schon relativ viel abgedeckt ist. Ich spiele jetzt hier einfach mal ein bisschen mit den Einstellungen rum, damit wir hier das Ganze auch mal ordentlich sehen können. Das war ein bisschen zu viel. Jetzt nehme ich das nochmal zurückdrehen. So, jetzt haben wir auch noch einen Fun Effect hier in diesem Video. Ich denke so können wir uns das ganz schön anschauen. Wir sehen hier, wo es losgeht und wir sehen hier eine Million zufällige Schritte in zwei Dimensionen. Ich hätte gesagt, wir machen das nochmal um zwei Nullen kürzer, damit wir auch ein bisschen mehr erkennen können, dass wir das nochmal laufen. Das ist doch ein schönes Bild. Lassen Sie mich hier noch ein bisschen die Skalierung anpassen. So, hier sehen wir wieder unseren Startpunkt und hier sehen wir, wie wir uns auf unserer Trunk Hards Irrefahrt durch eben das zweidimensionale bewegen und sehen hier grafisch abgetragen den Random Walk in zwei Dimensionen. Und ich würde vorschlagen, wir springen direkt in das dritte Skript und schauen uns das Ganze mal in drei Dimensionen an. Wenn wir uns nun den dreidimensionalen Walk anschauen, den Random Walk in drei Dimensionen, ändert sich wie gesagt nicht viel. Wir stellen hier oben die Dimensionen drei ein und geben hier unten mal noch ein, zwei Achsenbeschriftungen mehr dazu. Der restliche Code ändert sich nicht viel, bis auf das, dass wir hier unten nun den Plot 3D benötigen. Das ist dieses Paket, was wir hier schon ganz am Anfang mal angesprochen haben. Und ich fackel jetzt nicht lange und erzähle nicht viel. Ich habe Ihnen in der Vorlesung genug zu Random Walk erzählt. Gucken wir uns das lieber an. Und wir sehen hier wunderschön, hier geht es los und wir haben nun in drei Dimensionen zufällige Bewegungen x, y und z. Und die Funktionalität ist hier genau dieselbe. Es wird zufällig entschieden, minus 1, 0 und plus 1, nur halt eben in drei Dimensionen. Das können Sie sich jetzt natürlich auch für höhere Dimensionen exakt genauso vorstellen. Hier ist es dann auch möglich, eine Approximation zur Branche Molekular Bewegung zu machen, indem man sich diese Bewegung hier auf einer enddimensionalen Kugel vorstellt. Und wenn gewisse Randbedingungen erfüllt sind, kann man sagen, das ist eine Branche Molekular Bewegung. Das habe ich mir für die Vorlesung auch gespart. Wie wir hier sehen, sieht das eigentlich ganz schick aus. Ich mache das mal zu und wir machen hier mal, sagen wir mal 30.000 Bewegungen. Und lassen das nochmal durchlaufen. Und hier sehen wir schon, dass wir nicht mehr so viel sehen können. Also der Start ist hier schon fast verborgen und das Ende ist hier oben, sieht man hier noch ganz leicht. Das heißt, je höher Sie die Bewegungen stellen, desto weniger werden Sie eigentlich wahrnehmen. Und wir werden auch im Teil der Fraktale kennenlernen, dass man das durchaus miteinander in Verbindungen setzen kann. Jetzt warten wir mal, bis er das hier durchgerechnet hat. Ich hoffe, ich habe jetzt nicht 1 0 zu viel hier eingetragen. Wunderbar. Und nun sehen wir hier mal eine geballte Realisation, die sehr, sehr viele Schritte hat. Und somit können Sie hier auch rumspielen. Sie können hier die Farben ändern. Sie können die Marker ändern. Sie können hier die Alpha und Weiten ändern. Und Sie können natürlich auch hier an den zuziehenden Sets rumspielen. Das obliegt ganz Ihnen. Das letzte, was ich Ihnen jetzt noch zeigen möchte und dazu brauchen wir auch den Circle ist, wie ich in der einen Dimension mehrere Runs auf einmal durchführe. Und dazu kommen wir gleich. Hier im vierten Programm machen wir nämlich Folgendes. Ich fange hier mal oben an. Wir benutzen jetzt hier auch mal das Cycle. Dieser Cycle hier ist eigentlich nichts anderes wie ein Stück Text, wo verschiedene Farbkodierungen drinstehen. Und wenn wir später auf viele Random Walks auf einmal plotten, iteriert der hier quasi durch und schnappt sich hier eine Farbe nach der anderen. Wir bleiben hier in einer Dimension. Dann haben Sie den Code, wenn Sie möchten, auch auf multiple Walks in höheren Dimensionen erweitern. Wir geben hier die Anzahl der Läufe ein. Das heißt, wie viele Pfade und wie viele Realisierungen eines Random Walks möchten wir denn sehen? Wie viele Schritte soll das Ganze haben? Aus welcher Bandbreite soll die Schrittweite sein? Also das belassen wir bei minus 1, 0 und 1. Das Ganze hier ist hier noch erweitert um das Maximum und das Minimum. Das habe ich mal versucht zu plotten. Allerdings ist es so, wenn Sie wirklich für 1.000 Schritte ein Maximum einzeichnen, endet das auch bei plus 1.000 und dann sehen Sie außer dem Maximum relativ wenig. Aber damit können Sie gerne mal rumspielen. Ich habe Ihnen hier noch die Standardabweichungen dazu geparkt. Dann können Sie nämlich dieses Bildchen, was wir in den Vorlesungsunterlagen gesehen haben, nachvollziehen. Ich habe hier nochmal die Figur dargestellt und was wir hier in dieser Vorschleife machen ist, wir wählen einen Random Walk aus, ordnen dem eine Farbe zu realisieren den Lauf und plotten ihn. Und das machen wir für alle Random Walks, die wir hier oben eingestellt haben. Das heißt, um das zusammenzufassen, wir haben hier Farben, wir haben hier unsere Dimension, die Anzahl der Läufe, die Schritte und hier iterieren wir quasi durch. Für jeden Random Walk, den wir als Anzahl der Walks gewählt haben, ordnen wir dem eine Farbe zu, setzen den Ursprung, simulieren den Lauf, plotten ihn. Und das Einzige, was hier noch neu ist, dass wir uns diese Borders mit angucken, eben diese Standardabweichungsborders und wir lassen das jetzt einfach mal laufen. Wir haben hier 20 Runs und 1000 Schritte. Und ich möchte jetzt nicht Tadar sagen, ich sage jetzt aber trotzdem Tadar. Hier sehen Sie unser schönes Bildchen. Wir haben hier den Start, den Origin, der ist bei Null, das heißt, alle unsere Walks beginnen bei Null und entwickeln sich über 1000 Schritte. Und bei jedem einzelnen Schritt hat der Walk die Wahl, ich bleibe bei Null. Das heißt, ich verändere mich nicht oder ich gehe eins nach oben oder ich gehe eins nach unten. Und nachdem wir hier von einer Normalverteilung ausgehen, sehen wir auch, dass die meisten Bewegungen sich hier innerhalb der ersten Standardabweichung bewegen. Und ich hätte jetzt fast gesagt, wir schließen das nochmal. Wir machen jetzt hier, lassen Sie uns mal 100 draus machen, alles ab 150 mit einem Kern gerechnet und mehr Schritten wird dann etwas rechnen intensiv und ich möchte das Video auch nicht unnötig in die Länge ziehen. Wir lassen das nochmal durchlaufen und schauen uns hier das Ergebnis an. Ich mache das nochmal groß und passe hier die Ränder noch ein bisschen an, damit das ordentlich aussieht. So, um eine Aussage von gerade eben und die Aussage aus der Vorlesung nochmal zu untermauern, Sie sehen hier unsere schwarze Parabel hier, das ist plus Wurzel T und minus Wurzel T. Wir können hier sehen, dass der Großteil hier innerhalb dieser Bandbreite verläuft. Lassen Sie sich davon nicht täuschen, wenn wir hier das Maximum, das Minimum einzeichnen würden, würden wir hier unsere roten Linien aus den Vorlesungsunterlagen sehen und bedenken Sie doch, wenn wir hier diese Anzahl der Schritte gegen unendlich laufen lassen, dass sowohl diese Grenze, diese Grenze als auch das Maximum und das Minimum unendlich oft berührt wird. Allerdings können Sie hier schön sehen, dass der Großteil der Läufe sich tatsächlich normal verteilt verhält. Sie sind alle normal verteilt, aber Sie sehen hier, was ich damit meine. Und damit sind wir für den Teil der Random Walk Videos eigentlich auch schon zu Ende. In der nächsten Videoserie befassen wir uns hier direkt mit den Brownschen Molekularbewegungen und ich wünsche Ihnen bis dahin alles Guter und viel Spaß beim Ausprobieren, Rumspielen und wenn Sie Fragen haben, nutzen Sie gerne das Forum in unserem Moodl-Kurs. Vielen Dank.