#------------------------------# # week4: Kurzeinfuehrung # # zur R-Software # #------------------------------# 1) Installation von R: Auf den Hochschulrechnern ist das R schon installiert. Wenn Sie auf Ihrem eigenem Geraet das R noch nicht installiert haben, koennen Sie das folgendermassen machen: Gehen Sie auf die VL-homepage und klicken Sie ganz unten auf "Die R-Software kann hier heruntergeladen werden". Dann, wenn Sie etwa wie ich ein Windows-PC haben, "Download R for Windows" und dann "install R for the first time". Ganz oben finden Sie dann einen Download-Link, aktuell ist das etwa "Download R-4.5.0 for Windows" und Sie bekommen die Datei R-4.5.0-win.exe, die Sie dann etwa per Doppelklick starten koennen. Waehlen Sie am besten die Default- Einstellungen und beantworten Sie eventuelle Fragen nach dem Einrichten eines neuen Folders mit "Ja". Das Ganze ist dann so in 1 bis 2 Minuten etwa erledigt, auf meinen Geraeten habe ich da bisher noch nie Probleme gehabt. Falls es doch Probleme geben sollte, koennen Sie etwa auch nach "Installation R Mac" oder etwa "Installation R Windows" googeln und sich unter Videos dann, je nach Geschmack, ein kuer- zeres oder laengeres Erklaervideo dazu anschauen. 2) Etwas Hintergrund zur R-Programmiersprache: Schauen Sie sich vielleicht mal ein bischen auf der Wikipedia- Seite um, https://de.wikipedia.org/wiki/R_(Programmiersprache) Also scrollen Sie einfach mal durch, da steht ja schon ziemlich viel drauf. Hier auszugsweise ein paar Saetze daraus (die Sachen in Klammern sind Kommentare von mir): * R wurde von Statistikern fuer statistische Fragestellungen entworfen und geht somit direkt auf die Beduerfnisse ein, die fuer solche Zwecke benoetigt werden, wenige Zeilen Code sind notwendig fuer komplexe statistische Probleme. Aufgrund des unkomplizierten Vorgehens werden viele neue statistische Methoden als Erstes in R implementiert. * R ist von der US Food and Drug Administration (untersteht dem amerikanischen Gesundheitsministerium) fuer medizinische Zwecke validiert. (also die benutzen das etwa um Medikamente zuzulassen) * Beschaeftigte mit guten R-Kenntnissen, die an der Dice Tech Salary Survey (2013) teilnahmen, hatten ein hoeheres Durchschnittseinkommen als Beschaeftigte mit anderen IT-Fertigkeiten. * Die Standardbibliothek von R besteht aus 29 Paketen. Die wichtigsten 14 Pakete sind bei jedem Programmstart geladen, die weiteren 15 Pa- kete werden empfohlen. * Zentrales Archiv fuer Pakete ist das Comprehensive R Archive Network (CRAN) mit Haupt-Server an der Wirtschaftsuniversitaet Wien und zahlreichen Spiegelservern. Es gibt ueber 10000 Pakete auf CRAN. * Unter der Rubrik Task Views https://cran.r-project.org/web/views/ enthaelt CRAN eine Liste von aktuell 45 Themengebieten, fuer welche eine kommentierte Beschreibung der fuer das Themengebiet relevanten Pakete vorhanden ist. (das ist wirklich sehr umfangreich, klicken Sie etwa mal auf den TaskView zu "Optimization") * Verschiedene Pakete bieten Schnittstellen zu anderen Programmier- sprachen, die zur Performance-Optimierung und zur Erweiterung des Funktionsumfangs eingesetzt werden. Damit wird zum Beispiel die Verwendung von C++-Funktionen ermoeglicht (man hat dann also den Vorteil, dass man die doch recht einfache und intuitive R-Syntax benutzen kann, aber trotzdem C/C++ performance bekommt was die Geschwindigkeit angeht). 3) Das Buch 'Statistik mit R' von Ingo Steinke und Toni Stocker, http://hsrm-mathematik.de/SS2025/Wirtschaftsmathematik3/book.pdf bietet eine sehr elementare Einfuehrung zur R-Software. Fuer diese Veranstaltung waeren im wesentlichen die ersten beiden Kapitel 1 und 2, 'Einige Grundlagen' und 'Wichtige Datenstrukturen und deren Arithmetik' relevant. Der Link dazu ist also einfach die VL-homepage und dann am Ende ein book.pdf dranhaengen oder Sie benutzen den Link zur Uni Mannheim ganz unten auf der VL-homepage. 4) Elementares Rechnen mit Vektoren und Matrizen: Schauen wir uns jetzt ein paar Beispiele an. Starten Sie dazu eine R-Session: ### START R-SESSION ### # Fuer das Anlegen von Vektoren gibt es im wesentlichen 3 Befehle, # c(), seq() und rep(), concatenate, sequence und repeat: v1 = c(-4,1/2,77) # "c" fuer "concatenate" v1 v2 = seq(from=10,to=30,by=2) # "seq" fuer "sequence" v2 v3 = seq(from=0,to=2*pi,length=100) v3 plot(sin(v3)) # R rechnet immer element-weise plot(v3,sin(v3)) # dasselbe Bild, nur mit den richtigen Werten fuer die x-Achse plot(v3,sin(v3),type="l") points(v3,cos(v3),col="red") # addiert Punkte zu einem bestehendem plot points(v3,cos(v3),type="l",col="green") ?plot() # Hilfe-Seiten v4 = rep(2,10) # "rep" fuer "repeat" v4 v5 = rep(c(77,33),4) v5 # fuer Vektoren mit Schrittweite 1 (oder -1): v6 = 1:10 v6 v7 = 10:30 # hat immer Schrittweite 1 (oder -1) v7 v8 = 4:(-4) v8 v8[1] v8[2] v8[7:9] v8[7:11] # viele Funktionen geben automatisch Vekoren zurueck: x = runif(1000,min=2,max=6) # 1000 auf dem Intervall [2,6] gleichverteilte (unif = uniform) Zufallszahlen x plot(x) plot(x,ylim=c(0,10)) hist(x) hist(x,xlim=c(0,10)) sort(x) plot(sort(x)) summary(x) y = rnorm(1000,mean=0,sd=1) # normalverteilte Zufallszahlen plot(y) hist(y) sort(y) plot(sort(y)) summary(y) # Fuer das Loesen von linearen Gleichungssystemen oder etwa fuer das Plotten von Funktionen # von zwei Variablen brauchen wir Matrizen. Anlegen von Matrizen mit # matrix() # cbind(), rbind() "column bind" und "row bind" # wir loesen das Gleichungssystem # x + 2y = 5 # 2x - y = 5 v1 = c(1,2) v2 = c(2,-1) A = rbind(v1,v2) A b = c(5,5) solve(A,b) # ok, das passt.. v3 = c(2,4) AA = rbind(v1,v3) AA solve(AA,b) # geht nicht, keine Loesung # etwas groesser: n = 100 A = matrix( rnorm(n^2) , n , n ) # n x n Matrix mit Zufallszahlen b = rep(1,n) A b x = solve(A,b) # geht recht fix.. # Test, das %*% ist Matrix-Multiplikation: A %*% x # das passt.. # Plotten wir noch eine Funktion von 2 Variablen, etwa # f(x,y) = e^(-(x^2+y^2)/2) ueber dem Bereich [-5,+5] x [-5,+5] : x = seq(from=-5, to=+5, by=0.05) y = seq(from=-5, to=+5, by=0.05) nx = length(x) ny = length(y) f = matrix(0,nx,ny) # eine nx x ny Matrix mit lauter Nullen # jetzt machen wir einen Doppel-Loop: for(i in 1:nx) { for(j in 1:ny) { f[i,j] = exp( -( x[i]^2 + y[j]^2 )/2 ) } } contour( x , y , f ) contour( x , y , f , nlevels=50 ) # hoehere Aufloesung.. # also useful: image( x , y , f ) persp( x , y , f ) # with plot3D package, dazu muss man das Paket erst aus dem Internet # downloaden, etwa mit dem Menue-Tab Pakete/Installiere Paket ganz oben. # Dann, wenn man das gemacht hat: require(plot3D) persp3D( x , y , f )