9.2.5 Spezielle Verteilungen in R

Werbung
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.
Herunterladen