Die Methode ist sehr einfach, daher beschreibe ich sie in einfachen Worten. Nehmen Sie zunächst die kumulative Verteilungsfunktion einer Verteilung, aus der Sie eine Stichprobe erstellen möchten. Die Funktion nimmt einen Wert x als Eingabe und gibt an, wie hoch die Wahrscheinlichkeit ist, dass X ≤ x ist . SoFXxX≤x
FX(x)=Pr(X≤x)=p
Umgekehrt zu einer solchen Funktionsfunktion würde p als Eingabe nehmen und x zurückgeben . Beachten Sie, dass p ‚s gleichmäßig verteilt sind - das zum Abtasten von jedem verwendet werden könnte , F X , wenn Sie wissen , F - 1 X . Die Methode wird als inverse Transformationsabtastung bezeichnet . Die Idee ist sehr einfach: Es ist einfach, Werte einheitlich von U ( 0 , 1 ) abzutasten. Wenn Sie also von einigen F X abtasten möchten , nehmen Sie einfach die Werte u ∼F−1XpxpFXF−1XU( 0 , 1 )FX und übergeben u durch F - 1 X zu erhalten , x ‚su ∼ U( 0 , 1 )uF- 1Xx
F- 1X( u ) = x
oder in R (für Normalverteilung)
U <- runif(1e6)
X <- qnorm(U)
Zur Veranschaulichung betrachten wir unten CDF. Im Allgemeinen denken wir an Verteilungen, indem wir die Achse auf Wahrscheinlichkeiten von Werten aus der x- Achse untersuchen. Bei dieser Stichprobenmethode machen wir das Gegenteil und beginnen mit "Wahrscheinlichkeiten" und verwenden sie, um die damit verbundenen Werte auszuwählen. Bei diskreten Verteilungen behandeln Sie U als eine Linie von 0 bis 1 und weisen Werte zu, basierend auf dem Punkt, an dem u auf dieser Linie liegt (z. B. 0, wenn 0 ≤ u < 0,5 oder 1, wenn 0,5 ≤ u ≤ 1 für die Abtastung von B)yxU01u00 ≤ u < 0,510,5 ≤ u ≤ 1 ).B e r n o u l l i (0.5)
Dies ist leider nicht immer möglich, da nicht jede Funktion ihre Umkehrung hat, dh Sie können diese Methode nicht mit bivariaten Verteilungen verwenden. Es muss auch nicht in allen Situationen die effizienteste Methode sein , in vielen Fällen gibt es bessere Algorithmen.
Sie fragen auch, wie die Verteilung von . Da F - 1 X eine Inverse von F X ist , gilt F X ( F - 1 X ( u ) ) = u und F - 1 X ( F X ( x ) ) = x , also haben die unter Verwendung eines solchen Verfahrens erhaltenen Werte ja die gleiche Verteilung wie X . Sie können dies durch eine einfache Simulation überprüfenF- 1X( u )F- 1XFXFX( F- 1X( u ) ) = uF- 1X( FX( x ) ) = xX
U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)