9.2. STETIGE VERTEILUNGSMODELLE 9.2.5 227 Spezielle Verteilungen in R In R gibt es Funktionen, mit denen man die Dichte- bzw. Wahrscheinlichkeitsfunktion, die Verteilungsfunktion und die Quantile von Verteilungen bestimmen kann. Jede Verteilung hat einen eigenen Namen. Die Normalverteilung wird mit dem Kürzel norm bezeichnet. Durch einen Buchstaben vor dem Namen erhält man nun die oben angesprochenen Funktionen. Ein d liefert die Dichte- bzw. Wahrscheinlichkeitsfunktion, ein p die Verteilungsfunktion und ein q die Quantile. Die Funktionen, die die Dichte- bzw. Wahrscheinlichkeitsfunktion oder die Verteilungsfunktion bestimmen, werden mit der oder den Stellen aufgerufen, an denen die jeweiligen Funktionen berechnet werden sollen. Die Funktion, die die Quantile bestimmt, wird mit dem oder den Werten von p aufgerufen, für die die Quantile berechnet werden sollen. Außerdem besitzt jede Funktion noch Argumente für die Parameter. Bei der Normalverteilung sind dies der Erwartungswert, den man mit dem Argument mean und die Standardabweichung, die man mit dem Argument sd übergibt. Will man also die Verteilungsfunktion der Standardnormalverteilung an der Stelle 2 bestimmen, so gibt man > pnorm(2,mean=0,sd=1) ein und erhält folgendes Ergebnis [1] 0.9772499 . Wir hätten aber auch nur > pnorm(2) eingeben können, da die Parameter standardmäßig auf 0 und 1 gesetzt sind. Wir können die Verteilungsfunktion auch an mehreren Stellen auswerten: > pnorm(c(-2,0,2)) [1] 0.02275013 0.50000000 0.97724987 Den z0.95 der Standardnormalverteilung erhalten wir durch > qnorm(0.95) [1] 1.644854 Schauen wir uns die uns bekannten Verteilungen an. KAPITEL 9. VERTEILUNGSMODELLE 228 Tabelle 9.7: Verteilungen in R Verteilung Name in R Parameter in R Parameter Binomial binom size prob n p Hypergeometrisch hyper m n k M N −M n Poisson pois lambda λ Normal normal mean sd µ σ Gleich unif min max a b Exponential exp rate λ t t df k Chiquadrat chisq df k F f df1 df2 m n Mit R ist es aber auch möglich, Zufallszahlen aus den Verteilungen zu erzeugen. Um verstehen zu können, was dies bedeutet, holen wir ein wenig aus. Wir haben bisher ja noch keine Funktion für die diskrete Gleichverteilung kennengelernt. Dieser liegt folgendes Urnenmodell zugrunde. Eine Urne enthält k Kugeln, die von 1 bis k durchnummeriert sind. Wird nun eine dieser Kugeln zufällig ausgewählt, so besitzt die Augenzahl X eine diskrete Gleichverteilung. In R besteht die Möglichkeit, das Ziehen aus der Urne am Computer mit der Funktion sample durchzuführen. Die Funktion sample besitzt 4 Argumente, von denen zwei fakultativ sind. Beginnen wir zunächt mit den obligatorischen Argumenten. Das erste Argument x enthält die Gesamtheit, aus der gezogen werden soll. Man kann für x auch eine natürliche Zahl N eingeben. In diesem Fall wird aus den natürlichen Zahlen 1, . . . , N gezogen. Das zweite Argument size gibt den Stichprobenumfang an. Der Aufruf > sample(6,size=1) 9.2. STETIGE VERTEILUNGSMODELLE 229 [1] 6 liefert das Ergebnis des Ziehens einer Kugel aus einer Urne, die 6 Kugeln enthält, die von 1 bis 6 durchnummeriert sind. Dies entspricht dem Wurf eines fairen Würfels. Würfeln wir noch einmal, wobei das Argument size an seiner Position aufgerufen wird. > sample(6,1) [1] 3 Der Zufallszahlengenerator ist so konstruiert, dass die Zufallszahlen unabhängig sind. Wir können natürlich auch mehrere Zufallszahlen erzeugen. Diese sind unabhängig, wenn das Argument replace der Funktion sample den Wert TRUE annimmt. Standardmäßig steht es auf FALSE. Um zweimal zu würfeln, geben wir also ein > sample(6,2,replace=TRUE) [1] 2 5 Nun wollen wir aus der Urne aus Beispiel 67 auf Seite 180 ziehen. Diese enthält 4 Kugeln, die 10 g wiegen, und 6 Kugeln, die 20 g wiegen. Wir ziehen also mit Wahrscheinlichkeit 0.4 eine 10 g schwere Kugel und mit Wahrscheinlichkeit 0.6 eine 20 g schwere Kugel. Diese Wahrscheinlichkeiten können wir der Funktion sample im Argument prob, das an vierter Stelle steht, übergeben. Um zwei Kugeln mit Zurücklegen aus der Urne zu ziehen, geben wir also ein > sample(x=c(10,20),size=2,replace=TRUE,prob=c(0.4,0.6)) [1] 10 20 Wir können natürlich auch eingeben > sample(c(10,20),2,TRUE,c(0.4,0.6)) Mit dieser Vorgehensweise können wir aus jeder diskreten Verteilung Zufallszahlen ziehen. Bei den Standardverteilungen müssen wir aber nicht sample benutzen. Setzen wir ein r vor den Namen der Funktion und geben als erstes Argument n die Anzahl der Zufallszahlen an, so erhalten wir n unabhängige Zufallszahlen. Schauen wir uns ein Beispiel an. Beispiel 84 Eine Urne enthält 10 Kugeln, von denen 4 weiß und 6 schwarz sind. Es werden 3 Kugeln gezogen. Von Interesse ist die Anzahl X der weißen Kugeln. Beim 230 KAPITEL 9. VERTEILUNGSMODELLE Ziehen mit Zurücklegen ist X binomialverteilt mit den Parametern n = 3 und p = 0.4. Beim Ziehen ohne Zurücklegen ist X hypergeometrisch verteilt mit N = 10, M = 4 und n = 3. Eine Zufallszahl beim Ziehen mit Zurücklegen erhalten wir durch > rbinom(n=1,size=2,prob=0.4) [1] 1 und eine Zufallszahl beim Ziehen ohne Zurücklegen durch > rhyper(nn=1,m=4,n=6,k=2) [1] 1 Bisher haben wir nur diskrete Zufallsvariablen betrachtet. Um Zufallszahlen aus den bekannten stetigen Verteilungen zu ziehen, schreibt man vor den Namen der Funktion den Buchstaben r. Die Argumente sind die Anzahl n der Zufallszahlen und die Parameter der jeweiligen Verteilung. Die Zufallszahlen sind unabhängig. Fünf Zufallszahlen aus der Standardnormalverteilung erhält man durch > rnorm(5) [1] -0.2080638 -0.4892996 0.5359943 -0.6403278 -1.7474349 Man kann den Startwert des Zufallszahlengenerators mit der Funktion set.seed setzen. Hierdurch ist es möglich, identische Folgen von Zufallszahlen zu erzeugen. > set.seed(2003) > sample(49,6) [1] 34 47 33 40 26 39 > set.seed(2003) > sample(49,6) [1] 34 47 33 40 26 39 Mit sample(49,6) führt man übrigens eine Ziehung der Lottozahlen durch. Wir werden in den nächsten Kapiteln im Rahmen von Simulationsstudien immer wieder Gebrauch von Zufallszahlen machen, um die Eigenschaften von sogenannten Stichprobenfunktionen zu untersuchen.