Wenn Sie aus einer gegebenen Verteilung mit dem Mittelwert 0 und der Varianz 1 abtasten können, können Sie leicht aus einer Skalenorttransformation dieser Verteilung abtasten, die den Mittelwert und die Varianz σ 2 hat . Wenn x eine Stichprobe aus einer Verteilung von Mittelwert 0 und Varianz 1 ist, dann ist
σ x + μ
eine Stichprobe mit Mittelwert μ und Varianz σ 2 . Sie müssen die Variable also nur um die Standardabweichung σ (Quadratwurzel der Varianz) skalieren, bevor Sie den Mittelwert μ addieren .μσ2x
σx+μ
μσ2σμ
Wie Sie tatsächlich eine Simulation aus einer Normalverteilung mit Mittelwert 0 und Varianz 1 erhalten, ist eine andere Geschichte. Es macht Spaß und ist interessant zu wissen, wie man solche Dinge implementiert, aber ob Sie ein Statistikpaket oder eine Programmiersprache verwenden oder nicht, ich empfehle Ihnen, eine geeignete Funktion oder Bibliothek für die Zufallszahlengenerierung zu erhalten und zu verwenden. Wenn Sie Ratschläge zur Verwendung der Bibliothek benötigen, möchten Sie möglicherweise spezifische Informationen zu den von Ihnen verwendeten Programmiersprachen hinzufügen.
Bearbeiten: Im Lichte der Kommentare, einiger anderer Antworten und der Tatsache, dass Fixee diese Antwort akzeptiert hat, werde ich einige Details dazu geben, wie man Transformationen von einheitlichen Variablen verwenden kann, um normale Variablen zu erzeugen.
- Eine Methode, die bereits in einem Kommentar von VitalStatistix erwähnt wurde , ist die Box-Muller-Methode, die zwei unabhängige einheitliche Zufallsvariablen verwendet und zwei unabhängige normale Zufallsvariablen erzeugt. Eine ähnliche Methode, die die Berechnung von zwei transzendentalen Funktionen sin und cos auf Kosten einiger weiterer Simulationen vermeidet , wurde von francogrex als Antwort veröffentlicht .
- Eine ganz allgemeine Methode ist die Transformation einer einheitlichen Zufallsvariablen durch die inverse Verteilungsfunktion. Wenn auf [ 0 , 1 ] gleichmäßig verteilt ist , dann ist
ΦU[0,1]
eine Standardnormalverteilung. Obwohl es keine explizite analytische Formel für Φ - 1 gibt , kann sie durch genaue numerische Näherungen berechnet werden. Die aktuelle Implementierung in R (zuletzt überprüft) verwendet diese Idee. Die Methode ist konzeptionell sehr einfach, erfordert jedoch eine genaue Implementierung von Φ - 1 , was wahrscheinlich nicht so verbreitet ist wie die (anderen) transzendentalen Funktionen
Φ−1(U)
Φ−1Φ−1log , sin und cos .
- In mehreren Antworten wird die Möglichkeit erwähnt, den zentralen Grenzwertsatz zu verwenden, um die Normalverteilung als Durchschnitt einheitlicher Zufallsvariablen anzunähern. Dies wird im Allgemeinen nicht empfohlen. Argumente wie die Übereinstimmung von Mittelwert 0 und Varianz 1 und Überlegungen zur Unterstützung der Verteilung sind nicht überzeugend. In Übung 2.3 in "Einführung in Monte-Carlo-Methoden mit R" von Christian P. Robert und George Casella wird dieser Generator als antiquiert und die Approximation als sehr schlecht bezeichnet .
- Es gibt eine verwirrende Anzahl anderer Ideen. Kapitel 3 und insbesondere Abschnitt 3.4 in "The Art of Computer Programming" Vol. 2 von Donald E. Knuth ist eine klassische Referenz zur Zufallsgenerierung. Brian Ripley schrieb Computer Generation of Random Variables: Ein Tutorial , das nützlich sein kann. Das von Robert und Casella erwähnte Buch oder vielleicht Kapitel 2 in ihrem anderen Buch "Monte-Carlo-statistische Methoden" wird ebenfalls empfohlen.
Letztendlich ist eine korrekt implementierte Methode nicht besser als der verwendete einheitliche Pseudozufallszahlengenerator. Persönlich greife ich lieber auf Spezialbibliotheken zurück, die ich für vertrauenswürdig halte. Ich verlasse mich fast immer auf die in R implementierten Methoden, entweder direkt in R oder über die API in C / C ++. Natürlich ist dies nicht für alle eine Lösung, aber ich kenne andere Bibliotheken nicht gut genug, um Alternativen zu empfehlen.