2015-09-29 27 views
6

Próbuję utworzyć przekrzywiony generator liczb losowych za pomocą skośnego rozkładu normalnego, ale nie wiem, jak zmienić formułę (która używa NORMDIST()) do formuły opartej na NORMINV(), która może generować żądane liczby. To jest moja formuła:Losowa liczba w normalnym rozkładzie skośnym (odpowiednik NORMINV())

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

gdzie „x” oznacza numer, „s” jest skala, „m” jest lokalizacja, a „k” jest kształt. Przyznaję, że znalazłem wzór online, ale wydaje mi się, że robię to, co chcę robić, z wyjątkiem zła.

Jak mogę to zrobić?

+1

Nie jest dla mnie jasne, co dokładnie próbujesz osiągnąć. Nikt nie odpowiada, więc myślę, że nie jestem jedyny. Może to http://www.mrexcel.com/forum/excel-questions/477702-generating-skewed-normal-distribution-random-numbers.html? –

+0

Równanie w łączu Mr Excel działało dla mnie. To było to równanie = NORMDIST (D5, B 2 $, B $ 1, Fałsz) * NORMDIST (D5 * pochylenie, B 2 $, B 1 $, prawda) * 2 Zwróć uwagę, że pierwszą funkcją jest funkcja gęstości prawdopodobieństwa (z powodu Fałszywy) , drugi to drugi to skumulowana funkcja gęstości (ze względu na True) Uwaga, że ​​chciałem tylko stworzyć krzywą normalną dystrybucję w Excelu, nie próbowałem używać żadnych liczb losowych –

Odpowiedz

2

Adelchi Azzalini ma page jak generować liczby pseudolosowe z rozkładem skew-normal (SN). Tutaj ze strony:

SN random numbers

N (0,1) zmiennych towarzyszących u0 i V w punkcie 1 można obliczyć jako NORMINV(RAND(),0,1) w programie Excel. A δ wyrażone w kategoriach parametru kształtu α to δ = α/SQRT(1+α*α).

Uwaga: SciPy Pythona jest w trakcie uzyskiwania zmiennej losowej skew-normal (scipy.stats.skewnorm), patrz here w kodzie SciPy 0.18.0rc2. The docs odwołuje się do artykułu autorstwa Azzalini i Capitanio oraz tej samej strony, którą wymieniłem powyżej.