2. Veranstaltung

Werbung
Einführung in die Software R: Unterstützung für Teilnehmer der
Veranstaltung „Statistische Methodenlehre 1“
2. Veranstaltung 07.11.2000
Befehle in R werden in der R-Console nach dem Promptzeichen (>) eingegeben. Unvollständige
oder längere Befehle können in einer weiteren Zeile nach dem Folgeprompt (+) fortgesetzt
werden. R rechnet mit Vektoren, die komponentenweise addiert, subtrahiert und auch
komponentenweise multipliziert und dividiert werden. Funktionen (wie log, sqrt oder sin)
werden auf jede Komponente des Vektors angewendet.
Es gibt in R viele implementierte Funktionen. Diese werden mit ihrem Namen, gefolgt von einem
runden Klammerpaar aufgerufen. In dieser Klammer können Argumente stehen. Es wird
unterschieden zwischen verlangten Argumenten, die immer eingegeben werden müssen und
optionalen Argumenten, denen in der Definition der Funktion Standard- (oder Default-)Werte
zugewiesen wurden, die verwendet werden, wenn sie bei Aufruf der Funktion nicht explizit
eingegeben werden, z.B. hat die Funktion log die beiden Argumente x und base. Dabei ist x,
das sind die Werte, für die der Logarithmus berechnet werden soll, ein verlangtes Argument, und
base, das ist die Basis des Logarithmus, ist ein optionales Argument. Wenn ich nichts anderes
vereinbare, wird als Basis die Zahl e=2.7818282 verwendet. Argumente werden durch Kommata
voneinander getrennt, z.B. log(100,10). Wie erfahre ich, welche Argumente eine Funktion
hat. Dazu gibt es die Funktion args, die so angewendet wird.
> args(log)# der Name der Funktion, deren Argumente ich erfahren möchte, ist als
Argument zu args einzugeben.
function (x, base = exp(1))
NULL
Diese Ausgabe besagt log ist eine Funktion mit den Argumenten x und base. Durch base =
exp(1) wird angedeutet, dass base der Defaultwert exp(1) zugewiesen ist. Die Argumente
einer Funktion werden in den runden Klammern angegeben. Sie sind entweder in der richtigen
Reihenfolge durch Komma voneinander getrennt oder mit Namen des Arguments und
Gleichheitszeichen einzugeben. Um also den Logarithmus von 64 zur Basis 4 auszurechnen, gibt
es die folgenden Möglichkeiten:
1.) log(64,4)
2.) log(x=64,base=4)
3.) log(x=64,4)
4.) log(64,base=4)
5.) log(base=4,x=64)
Nur in der letzten Variante ist die Angabe der Namen der Argumente erforderlich.
Ausführlichere Informationen finden Sie in der Hilfe, die Sie mit ?log oder help(log)
aufrufen. Eine etwas komfortablere Form der Hilfe mit Suchmöglichkeiten und Links zu
verwandten Funktionen ist die HTML-Version der Hilfe, die Sie über Help in der
Kommandozeile erreichen. Die Hilfe ist nach einem bestimmten Schema aufgebaut, das wir uns
jetzt am Beispiel der Funktion log ansehen wollen. Sie beginnt mit einer kurzen Beschreibung
(Description), in der gesagt wird, was diese Funktion macht. Wenn nötig werden
ausführlichere Informationen unter (Details, siehe weiter unten bei der Besprechung der
Funktion sample) gegeben.
Unter Usage wird gesagt, wie die Funktion benutzt, d.h. wie sie aufzurufen ist. Dabei erscheinen
in den runden Klammern die Argumente, deren Bedeutung unter Arguments erklärt wird, hier
erfahren wir dann auch den Defaultwert von base. Die verlangten Argumente stehen vorn.
Unter Value erfahren wir, welche Werte ausgegeben werden, nämlich ein Vektor mit derselben
Länge wie x. Außerdem erfahren wir, was ausgegeben wird, wenn man log(0)eingibt, das
bekanntlich nicht definiert ist.
Unter See Also erhalten wir Hinweise auf verwandte Funktionen. In der HTML-Version ist
hier ein Link gesetzt. Unter Examples werden Beispiele gegeben, wie die Funktion angewendet
wird.
Wir wollen uns jetzt die Hilfe zu der Funktion plot anschauen, die wir in der ertsen
Veranstaltung benutzt haben, um den Logarithmus von 1 bis 10 zu plotten.
Von den drei unter Usage genannten Möglichkeiten, haben wir die zweite benutzt, d.h. wir
haben x und y- Koordinaten eingegeben. Wir sehen, dass plot die weiteren optionalen
Argumente xlim=range(x) und ylim=range(y) hat, dabei ist range eine R-Funktion,
die Minimum und Maximum der übergebenen Werte bestimmt, z.B.
> x<-1:10 # Eingabe x ist Folge von 1:10
> x # Zur Überprüfung
[1]
1
2
3
4
5
6
7
8
9 10 # Ausgabe
> range(x) # Bestimmung des Minimums und Maximums
[1]
1 10 # Ausgabe Minimum ist 1 und Maximum ist 10
Mit den Argumenten xlim und ylim werden die Grenzen der x- und y-Achse im Plot
festgelegt. Standardmäßig wird der Plot von Minimum bis Maximum gezeichnet. Möchte ich die
Grenzen der x-Achse nicht von 1 bis 10, sondern von 0 bis 10, so muss ich für das optionale
Argument xlim=c(0,10) setzen. Das nächste optionale Argument der Funktion plot ist
type=“p“. Das bedeutet, standardmäßig werden in einem Plot Punkte gezeichnet. Wir haben in
der vorigen Veranstaltung Linien gezeichnet. Dazu hatten wir type=“l“ (für weitere Optionen
von type schauen Sie bitte unter Arguments) gesetzt. Weitere Argumente zu plot sind
main, xlab und ylab. Damit können ein Titel und die Beschriftung der Achsen bestimmt
werden, z.B.
x<-1:10
plot(x,log(x),xlim=c(0,10),type=“l“,main=”Natürlicher
Logarithmus”,xlab=”x”,ylab=”ln(x)”)
Unter Details erfahren wir dann weitere Einzelheiten, z.B. das für ganz einfache Plots, wie in
unserem Beispiel intern die Funktion plot.default verwendet wird. Sie sehen in der Hilfe
zu plot.default weitere Argumente (genauer graphische Parameter) zur Gestaltung Ihrer
Graphik. Die wichtigsten seien hier nur in Kürze genannt.
sub Untertitel
pch Punktsymbole
lty Linientyp
col Farbe für Linien und Punkte
cex Schriftgröße
lwd Linienstärke
Unter See Also: werden Hinweise auf verwandte Funktionen gegeben, in der HTML-Version
mit entsprechendem Link. Nützlich sind hier die Hinweise auf die Funktionen points und
lines. Mit points werden in eine vorhandene Graphik Punkte gezeichnet, mit lines
kann man zusätzliche Linien zeichnen. Bevor wir das an einem Beispiel zeigen, wollen wir eine
neue Möglichkeit kennenlernen, eine Funktion in R graphisch darzustellen.
Unter Examples finden wir Anwendungsbeispiele für die gerade betrachtete Funktion.
Interessant ist :
plot(sin,-pi,2*pi)
Dieser Befehl zeichnet die Sinusfunktion von -bis 2. Man braucht also nur den
Funktionsnamen, den Anfangspunkt und den Endpunkt als Argumente zu plot anzugeben.
Dies ist die unter Details genannte spezielle Methode für Funktionen. Beim letzten Mal
waren wir bei der Darstellung der Logarithmusfunktion den mühsamen Weg über x-Folge und yFolge gegangen. Der folgende Weg ist einfacher:
plot(log,1,10) # zeichnet natürlichen Logarithmus von 1 bis 10
> points(1:10,log(1:10),pch=15,cex=4,col=2) # zeichnet Punkte mit dem
Plotsymbol 15, in der Schriftgöße 4 und in der Farbe 2.
plot(log,1,10) # zeichnet natürlichen Logarithmus von 1 bis 10
> points(1:10,log(1:10),pch=15,cex=4,col=“blue“) # zeichnet Punkte mit
dem Plotsymbol 15, in der Schriftgöße 4 und in blauer Farbe
> plot(log,0,10) # zeichnet natürlichen Logarithmus von 0 bis 10
Wir wollen den Zehnerlogarithmus zusätzlich einzeichen.
> x<-seq(0,10,by=0.01)# Folge von x-Werten, für die log10 berechnet werden soll
> lines(x,log10(x),lwd=4,col="red") # zeichnet Zehnerlogarithmus in rot mit
Linienstärke 4
> lines(x,log(x),lwd=4,col="blue") # zeichnet natürlichen Logarithmus in blau
mit Linienstärke 4
Wir wollen die x-Achse bei y=0 sehen.
> abline(h=0,lwd=2) # zeichnet horizontale (h=0) Linie mit Linienstärke (lwd=2) 2
Was macht abline?
Die Funktion abline zeichnet eine Gerade in einen vorhandenen Plot. Die ersten drei Formen
sind für uns relevant. Bei der ersten Form gibt man Achsenabschnitt und Steigung (y=b*x+a) an.
Die beiden nächsten Formen zeichnen eine horizontale oder vertikale Linien an den mit h bzw.
mit v bestimmten Koordinaten. Wir wollen noch die y-Achse an der Stelle x=0 einzeichnen.
> abline(v=0,lwd=2) # Zeichnet vertikale Linie bei x=0
Wir möchten die Tangente im Punkt x=1,y=0 einzeichnen. Die Steigung ist 1, der yachsenabschnitt ist –1.
> abline(-1,1,col="green",lwd=4) # zeichnet Tangente in (1,0)
Wir wollen uns jetzt die Hilfe zur Funktion sample ansehen. Wie wir der Description
entnehmen, zieht diese Funktion eine Stichprobe aus der mit x spezifizierten Grundgesamtheit,
der Stichprobenumfang kann angegeben werden, und wir können bestimmen, ob wir die
Stichprobe mit oder ohne Zurücklegen ziehen wollen. Welche Argumente hat diese Funktion und
wie sind diese einzugeben? Das erfahren wir unter Usage und Arguments. Die
Grundgesamtheit wird angegeben durch x, wobei x ein Vektor oder eine positive ganze Zahl ist.
Der Vektor kann aus reellen oder komplexen Zahlen , Buchstaben oder logischen Werten
bestehen. Wie die Grundgesamtheit aussieht, wenn x eine positive ganze Zahl ist, erfahren wir
hier nicht, in solchen Fällen müssen wir weiter unten unter Details schauen.
Dort erfahren wir, dass die Grundgesamtheit dann aus 1:x besteht, das ist die Folge der ganzen
Zahlen von 1 bis x. Unter Arguments erfahren wir, dass der Stichprobenumfang durch size
festgelegt wird. Unter Details erfahren wir dazu, dass size standardmäßig auf
length(x) gesetzt ist. Dabei ist length eine weitere R-Funktion, die die Länge eines
Vektors x bestimmt. Da bei Default replace=FALSE gesetzt ist, d.h. standardmäßig wird
ohne Zurücklegen gezogen, wird ohne Angabe von size die Grundgesamtheit zufällig
permutiert.
> sample(6) # Stichprobe der Größe 6 aus ganzen Zahlen von 1 bis 6, ohne Zurücklegen,
d.h. zufällige Permutation
[1] 5 2 3 6 4 1
> sample(6)
[1] 3 6 4 1 2 5
> sample(6)
[1] 3 6 1 4 2 5
> sample(6)
[1] 6 4 3 1 5 2
> sample(6,replace=T) # Stichprobe der Größe 6 aus ganzen Zahlen von 1 bis 6, mit
Zurücklegen
[1] 3 1 2 2 2 2
> sample(6,replace=T)
[1] 1 2 6 4 4 6
> sample(1:6,replace=T)
[1] 3 2 6 1 1 4
> sample(1:6,replace=T)
[1] 2 6 6 3 5 5
> sample(6,size=20,replace=T) # Stichprobe der Größe 20 aus ganzen Zahlen von 1
bis 6 mit Zurücklegen
[1] 2 3 4 6 2 1 5 2 3 4 3 1 4 2 2 1 1 2 5 4
Mit dem optionalen Argument prob können Wahrscheinlichkeiten festgelegt werden, mit denen
die einzelnen Elemente der Grundgesamtheit gezogen werden sollen. Standardmäßig werden alle
Elemente der Grundgesamtheit mit der gleichen Wahrscheinlichkeit gezogen. Beim Ziehen ohne
Zurücklegen werden die Wahrscheinlichkeiten nach jeder Ziehung proportional zu den
Wahrscheinlichkeiten der noch verbliebenen Elemente neu berechnet. Addieren sich die
Komponenten des Vektors prob nicht zu 1 auf, so wird der Vektor intern von R normiert. Man
kann also auch Verhältnisse eingeben.
> sample(1:6,prob=c(3,2,1,1,1,1))
[1] 1 6 3 2 4 5
> sample(1:6,size=20,replace=T)
[1] 6 1 5 2 4 3 3 4 3 6 6 3 5 6 5 3 5 3 1 5
Wir möchten jetzt zählen, wie oft die einzelnen Elemente gezogen wurden. Dazu speichern wir
jetzt eine neue Stichprobe in einen Vektor stich. Danach wenden wir die Funktion table auf
diesen Vektor an.
> stich<-sample(1:6,size=20,replace=T)
> stich
[1] 5 2 3 2 5 3 2 4 1 4 1 6 4 4 4 1 4 3 4 4
> table(stich)
stich
1 2 3 4 5 6
3 3 3 8 2 1
Wir möchten jetzt eine graphische Darstellung dieser beobachteten Häufigkeiten. Dazu
verwenden wir die Funktion barplot.
> barplot(table(stich))
R-Befehle können also ineinander verschachtelt werden. Wir schreiben jetzt statt stich die
ursprüngliche Definition von stich und erzeugen damit eine neue Stichprobe, die dann
ausgezählt wird und graphisch dargestellt wird.
> barplot(table(sample(6,size=20,replace=T)))
> barplot(table(sample(6,size=1000,replace=T))) # Stichprobenumfang
1000
Wir wollen statt der absoluten Häufigkeiten die relativen Häufigkeiten darstellen und müssen
dazu die von table erzeugten Werte durch den Stichprobenumfang dividieren.
> barplot(table(sample(6,size=1000,replace=T))/1000)
Diese Verschachtelung wird jetzt jedoch unübersichtlich. Wir werden beim nächsten Mal eine
Funktion schreiben, in der die einzelnen Schritte klar erkennbar sind und bei der wir Argumente,
wie den Stichprobenumfang eingeben können. Außerdem wollen wir durch ein Argument
bestimmen können, ob die absoluten oder relativen Häufigkeiten dargestellt werden sollen.
Herunterladen