Siehe ?RNGkind
. Der Standardwert ist ein Inversionsalgorithmus:
normal.kind
kann "Kinderman-Ramage", "Buggy Kinderman-Ramage" sein (nicht fürset.seed
), "Ahrens-Dieter", "Box-Müller", "Inversion" (der Standard) oder "vom Benutzer bereitgestellt". (Für die Umkehrung, siehe die Referenz inqnorm
.) Der Kinderman-Ramage-Generator, der in den Versionen vor 1.7.1 verwendet wurde (jetzt "Buggy" genannt) hatte mehrere Näherungsfehler und sollte nur für die Reproduktion von alten Ergebnissen verwendet werden. Der "Box-Müller" -Generator ist Stateful als Paare von Normalen werden sequenziell generiert und zurückgegeben. Der Status wird zurückgesetzt, wenn er ausgewählt wird (auch wenn es sich um den aktuellen Status handelt) normaler Generator) und wenn Art geändert wird.
Sie können den Algorithmus mit
ändern %Vor% Sie können herausfinden, was aktuell eingestellt ist, indem Sie RNGkind()[2]
betrachten.
Die andere Antwort ist ausreichend, aber hat mir noch einige Fragen hinterlassen; Insbesondere habe ich nirgends in der Dokumentation * gesehen, was in der Welt der Algorithmus "Inversion"
ist, also tauchte ich in die Quellcode , der auch akademische Verweise auf die Papiere gibt, die die anderen möglichen Algorithmen hervorbringen, um herauszufinden, was genau getan wird.
So scheint es, dass der Standard-Algorithmus "Inversion"
eine sehr lange Fließkommazahl generiert und dann an die Funktion qnorm5
sendet, die eine CDF-Funktion für die Normalverteilung ist.
Wie funktioniert die qnorm5
Funktion (da es keine geschlossene Form für die normale CDF oder inverse CDF gibt), hatte ich nicht viel Glück beim Knacken, was anscheinend der Quellcode ist hier , aber sie geben weitere akademische Referenzen, nämlich Beasley, JD und SG Springer (1977) und Wichura, MJ (1988) ; ersterer wird typischerweise für kleine Quantile der CDF verwendet und letzterer für große ( z>7
oder so).
Es mag auch interessant sein zu bemerken, dass (zum jetzigen Zeitpunkt) dieser Algorithmus anscheinend wird von der Julia-Sprache geteilt , die auch den von qnorm5
verwendeten R
-Code teilt.
* Um fair zu sein, wird Wichura im Nachhinein in ?qnorm
erwähnt, auf das oben verwiesen wird. Trotzdem lohnt es sich, Dinge in diesem Thread zu formulieren, denke ich.