R Grundlagen A. Gebhardt 6. Juni 2013/ R Institut für Statistik Universität Klagenfurt Universitätsstr. 65-67, A 9020 Klagenfurt albrecht.gebhardt@uni-klu.ac.at 1 / 27
Inhalt 1 Bezugsquelle 2 Aufruf 3 Hilfe 4 Objekte in R Vektoren Matrizen Datensätze Elementzugriff 5 Datenimport 6 Rechnen 7 Grafik 8 Verteilungen 2 / 27
Bezugsquelle R - Download R ist Free Software und steht unter GPL Programm, Quelltext, Dokumentation, Zusatzpakete usw. findet man unter http://cran.r-project.org CRAN = Comprehensive R Archive Network Zusatzpakete kann man später direkt aus R heraus mit install.packages(...); update.packages(...) installieren und updaten. 3 / 27
Aufruf Start von R R ist eine kommandozeilenorientierte Anwendung! Windows:... im Menü Unix: R MacOS:... Eingaben erfolgen danach am R Prompt: > Mittel ESS 1 läuft R auch im GNU Emacs: Alt-X R 1 http//ess.r-project.org/ 4 / 27
Hilfe Hilfe Hilfe zu Kommandos und Begriffen bekommt man mittels help.start() Anzeige im Browser?cmdname oder help(cmdname) zum Kommando cmdname als Textfile im R (oder nach help.start() im schon laufenden Browserfenster) apropos(muster) Suche nach Hilfeseiten über deren Namen help.search(stichwort) Suche in den Hilfeseiten 5 / 27
Objekte in R Vektoren Übersicht 1 Bezugsquelle 2 Aufruf 3 Hilfe 4 Objekte in R Vektoren Matrizen Datensätze Elementzugriff 5 Datenimport 6 Rechnen 7 Grafik 8 Verteilungen 6 / 27
Objekte in R Vektoren Vektoren werden durch Zusammenfügen (concatenate) von Einzelwerten gleichen Typs erzeugt: > x <- c(1,2,3,4,5) Einzelwerte können u.a. numerisch (ganzzahlig, reell, komplex) Text ("... text") logisch (TRUE, FALSE) sein Zuweisungsoperator (allgemein) ist <- (oder ->, oder in neueren R Versionen auch = ) Anzeige einer Variablen (allgemein) Eingabe des Namens > x [1] 1 2 3 4 5 7 / 27
Objekte in R Matrizen Übersicht 1 Bezugsquelle 2 Aufruf 3 Hilfe 4 Objekte in R Vektoren Matrizen Datensätze Elementzugriff 5 Datenimport 6 Rechnen 7 Grafik 8 Verteilungen 8 / 27
Objekte in R Matrizen enstehen durch Matrizen zeilen/spaltenweises Einsortieren von Vektoren: > M <- matrix(c(1,2,3,4,5,6), nrow=2, ncol=3) > M [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 zeilen/spaltenweises Zusammenkleben von Vektoren: > M1 <- cbind(c(1,2,2), c(2,2,3)) > M1 [,1] [,2] [1,] 1 2 [2,] 2 2 [3,] 2 3 > M2 <- rbind(c(1,0,1), c(0,1,0)) > M2 [,1] [,2] [,3] [1,] 1 0 1 [2,] 0 1 0 9 / 27
Objekte in R Datensätze Übersicht 1 Bezugsquelle 2 Aufruf 3 Hilfe 4 Objekte in R Vektoren Matrizen Datensätze Elementzugriff 5 Datenimport 6 Rechnen 7 Grafik 8 Verteilungen 10 / 27
Objekte in R Datensätze data frames gebräuchlichster Datentyp: data.frame Tabelle mit mehreren Spalten unterschiedlichen(!) Typs erzeugbar mittels data.frame(spname1=vektor1, SpName2=Vektor2,...), z.b. > daten <- data.frame(var1=c(1,2,3),var2=c("a","b","c")) entstehen beim Importieren von Datenfiles 11 / 27
Objekte in R Elementzugriff Übersicht 1 Bezugsquelle 2 Aufruf 3 Hilfe 4 Objekte in R Vektoren Matrizen Datensätze Elementzugriff 5 Datenimport 6 Rechnen 7 Grafik 8 Verteilungen 12 / 27
Objekte in R Elementzugriff Zugriff auf Elemente Vektorelement: x i : x[i] Matrixelement: M i,j : M[i,j] Bereiche: x[2:4], M[2:3,3:5], Spalten 3 bis 5 M[,3:5], Zeilen 1 und 2 M[c(1,2),] mittels logischer Verknüpfungen, z.b. > x[ x>2 ] # alle Werte von x mit x>2 [1] 3 4 5 > x[ x>2 ] <- 2 * x[x>2] # verdopple alle Werte von x mit x>2 > x [1] 1 2 6 8 10 13 / 27
Objekte in R Elementzugriff Zugriff auf Elemente eines data.frame wie bei Matrizen oder: auf Spalten über Spaltennamen: > daten$var1 # ganze Spalte "Var1" [1] 1 2 3 > daten$var2[3] # drittes Element von Spalte "Var2" [1] c Levels: a b c ohne den Namen der data.frame Variablen nach attach(): attach(daten) Var1 detach(daten) str() liefert Informationen über Variablen: > str(daten) 'data.frame': 3 obs. of 2 variables: $ Var1: num 1 2 3 $ Var2: Factor w/ 3 levels "a","b","c": 1 2 3 14 / 27
Datenimport Datenimport Bevorzugte Datenformate simples Textfile mit Tabelle (Spalten per whitespace getrennt), optional mit Spaltennamen in Zeile 1, optional mit as.is=t (ohne Typwandlung) > daten <- read.table("data.txt", header=true, as.is=true) CSV (comma separated values), Tabellenkalkulationen exportieren bevorzugt in dieses Format: > daten <- read.csv("data.csv", sep=";", dec=",") für deutschsprachiges Excel oder OpenCalc: Trennzeichen ;, Dezimalpunkt,, Spaltenüberschr.: ebenfalls optional, wie oben 15 / 27
Datenimport Bsp: Daten erfassen mit Tabellenkalkulation (in der LV Gruppe): Alter, Größe, Geschlecht, Wegzeit zur Uni, Wegstrecke zur Uni, Verkehrsmittel als CSV exportieren in R einlesen, anzeigen, usw. 16 / 27
Datenimport Bsp: z.b. folgenden Datensatz verwenden: Kodierung der Verkehrsmittel Spalte: Fussgänger F, Fahrrad FR, Auto A, ÖPNV Ö, Strecke d in km, Zeit t in min 17 / 27
Rechnen Rechnen in R elementweise Operationen (für Vektoren und Matrizen): +,-,*,/,^,&, weitere Operationen mit Vektoren: sum(), prod(), cumsum(), mean(),... Matrixoperationen Multiplikation %*% (bei passender Dimension) > M3 <- M2 %*% M1 > M3 [,1] [,2] [1,] 3 5 [2,] 2 2 Invertieren: solve() (falls quadratisch und nicht singulär) > Inv <- solve(m3) > Inv [,1] [,2] [1,] -0.5 1.25 [2,] 0.5-0.75 18 / 27
Rechnen Bsp: Berechnen Sie: Gesamtstrecke zurückgelegter km aller Studierenden für Datensatz Durchschnittsgröße, mittlere Strecke, mittlere Zeit Vektor der Durchschnittsgeschwindigkeiten 19 / 27
Optionen: type="l" (Linien), col="red" (farbig), usw. 20 / 27 Grafik Grafik Punkte (x i, y i ) zeichnen > plot(daten$dist,daten$time) daten$time 10 20 30 40 50 60 0 10 20 30 40 daten$dist Abbildung: x-y-plot
Abbildung: Funktionsplot 21 / 27 Grafik Funktionsdarstellungen Funktionen plotten: curve() > opar <- par(mfrow=c(1,2)) > curve(sin(x), -pi, pi) > curve(dnorm(x,0,1), -3, 3) > par(opar) sin(x) 1.0 0.5 0.0 0.5 1.0 dnorm(x, 0, 1) 0.0 0.1 0.2 0.3 0.4 3 2 1 0 1 2 3 x 3 2 1 0 1 2 3 x
Grafik Plots modifizieren points(x1,y1) # zusätzliche Punkte lines(x2,y2) # zusätzliche Linien, plot(..., add=true) # anderen Plot drüberzeichnen xlab("text") # Achsenbeschriftung title("titel") # Ueberschrift x11() # neues Plotfenster (Unix) windows() # -"- par(mfrow=c(zeilen, spalten)) # Plotbereich aufteilen spezielle Plots: Histogramm hist() 22 / 27
Grafik Bsp: Erstellen Sie zum Datensatz einen Plot der Strecke und Zeit gegenüberstellt. 23 / 27
Verteilungen Zugriff auf Verteilungsfunktionen Namensschema: d vertlg (x, parameter) # Dichte f(x) p vertlg (x, parameter) # Vertlg F(x) q vertlg (prozent, parameter) # Quantil r vertlg (anzahl, parameter) # Zuf.-Zahlen Binomialverteilung: [dpqr]binom(., n, p) hyperg. Verteilung: [dpqr]hyper(., M, N-M, n) Normalvertlg: [dpqr]norm(., my, sigma) χ 2 Vtlg: [dpqr]chisq(., freiheitsgrade) Poissonvertlg: [dpqr]pois(., lambda) Exp.Vertlg: [dpqr]exp(., lambda) usw., Details zu den Parametern in den Hilfeseiten 24 / 27
Verteilungen Bsp: Wenn X N(0, 1) dann X 2 χ 2 1. Überprüfen mit Zufallszahlen: > x <-rnorm(100,0,1) > xsqrd <- x^2 > # Histogramm, mit relativen Haeufigkeiten: > hist(xsqrd, freq=f) > # ChiQuadrat Dichte drueberzeichnen: > curve(dchisq(x,1),add=t,col="red") Abspeichern des Bildes: dev.copy2eps("bild1.eps") 25 / 27
Verteilungen Abbildung: Histogram of xsqrd Density 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0 2 4 6 8 10 xsqrd Abbildung: Histogramm und Dichte χ 2 -Verteilung 26 / 27
Verteilungen Bsp: Zeichnen Sie Dichte- und Verteilungsfunktionen für die obengenannten Verteilungen mit Parametern Ihrer Wahl. Berechnen Sie die Wahrscheinlichkeiten für P(0 X 1) für Normalverteilung, χ 2 -Verteilung und Exponentialverteilung für Parameter Ihrer Wahl. 27 / 27