2015-09-29 15 views
6

Ich versuche, einen schiefen Zufallsgenerator mit einer Skew-Normalverteilung zu erstellen, aber ich weiß nicht, wie ich meine Formel umstellen soll (die NORMDIST() verwendet) in eine NORMINV() -basierte Formel, die die gewünschten Zahlen generieren kann. Dies ist meine Formel:Zufallszahl in einer Skew-Normalverteilung (entspricht NORMINV())

=2/s * NORMDIST((x-m)/s, 0, 1, 0) * NORMSDIST(k*(x-m)/s) 

Wo „x“ ist die Zahl „s“ ist der Maßstab, „m“ ist die Lage, und „k“ ist die Form. Ich gebe zu, ich fand die Formel online, aber es scheint zu tun, was ich tun möchte, außer in die falsche Richtung.

Wie kann ich das tun?

+1

Nicht klar für mich, was genau Sie erreichen möchten. Niemand antwortet, also denke ich, dass ich nicht der Einzige bin. Vielleicht http://www.mrexcel.com/forum/excel-questions/477702-generating-skewed-normal-distribution-random-numbers.html? –

+0

Die Gleichung in der Excel-Verbindung funktioniert für mich. Das war diese Gleichung = NORMVERT (D5, B $ 2, B $ 1, Falsch) * NORMVERT (D5 * Skew, B $ 2, B $ 1, True) * 2 Beachten Sie, dass die erste Funktion die Wahrscheinlichkeitsdichtefunktion ist (wegen des Falschen) , die zweite ist die zweite ist die kumulative Dichte-Funktion (wegen der True) Beachten Sie, dass ich nur eine schiefe Normalverteilung in Excel erstellen wollte, versuchte ich nicht, irgendeine Art von Zufallszahlen zu verwenden –

Antwort

2

Adelchi Azzalini hat eine page zum Generieren von Pseudozufallszahlen mit Skew-Normal (SN) Verteilung. Hier von der Seite:

SN random numbers

Die N (0,1) variates u0 und V in Schritt 1 können in Excel als NORMINV(RAND(),0,1) berechnet werden. Und & delta ;, ausgedrückt in Formparameter & alpha; ist δ = α/SQRT(1+α*α).

Hinweis: Pythons SciPy ist gerade dabei, eine normalverteilte Zufallsvariable zu erhalten (scipy.stats.skewnorm), siehe here im Code SciPy 0.18.0rc2. Die docs verweisen auf ein Papier von Azzalini und Capitanio und die gleiche Seite, die ich oben erwähnt habe.