Ich habe folgende Fragestellung zur Bearbeitung bekommen und würde mich über paar Hilfestellungen freuen:
Mit der Inversionsmethode können Zufallszahlen aus einer Verteilung F gezogen werden, indem man erst auf (0, 1) gleichverteilte Zufallszahlen erzeugt und diese dann mit Hilfe der inversen Verteilungsfunktion (= Quantilsfunktion) transformiert. Wenn
U ∼ Unif(0,1)
X = F−1(U),
dann gilt, dass X ∼ F , d.h. die Zufallsvariable X folgt der gewünschten Verteilung F. Diesen Umstand macht man sich zunutze, indem man die inverse Transformation auf eine gleichverteilte Zufallsvariable anwendet.
1. Erzeugen Sie mit Hilfe der Inversionsmethode Zufallszahlen aus einer gestutzten (trunkierten) Normalverteilung. Schreiben Sie dafür die folgende Funktion:
> rtrnorm <- function(n, mean = 0, sigma = 1, lower = -Inf, upper = Inf) {}
Dabei gilt:
• mean: Erwartungswert der Normalverteilung vor der Trunkierung
• sigma: Standardabweichung der Normalverteilung vor der Trunkierung
• lower, upper: obere und untere Schranken des Wertebereichs
Wenden Sie die Funktion folgendermaßen an:
> x <- rtrnorm(2000, 3, 1, 1, 4)
2. Visualisieren Sie die Stichprobe und vergleichen Sie deren Verteilung mit der theoretischen, entweder indem Sie die Dichtefunktion der theoretischen Verteilung u ̈ber ein Histogramm der empirischen Verteilung einzeichnen oder indem Sie die empirische und die theoretische Verteilungsfunktion gemeinsam in eine Grafik zeichnen (oder beides).
Den ersten Teil hab ich wie folgt implementiert:
Code: Alles auswählen
rtrnorm <- function(n, mean = 0, sigma = 1, lower = -Inf, upper = Inf){
u <- runif(n,min = lower, max = upper)
rnorm <- ((sigma/(2*pi*u^3))^(1/2)*exp(-((sigma*(u-mean)^2)/(2*mean^2*u))))
return (rnorm)
}
x <- rtrnorm(2000, 3, 1, 1, 4)