2015-09-29 15 views
6

Sto provando a creare un generatore di numeri casuali inclinati utilizzando una distribuzione normale obliqua, ma non so come trasformare la mia formula (che utilizza NORMDIST()) in una formula basata su NORMINV() che può generare i numeri desiderati. Questa è la mia formula:Numero casuale in una distribuzione normale obliqua (equivalente a NORMINV())

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

dove "x" è il numero, "s" è la scala, "m" è la posizione, e "k" è la forma. Ammetto di aver trovato la formula online, ma sembra che faccia quello che voglio fare, eccetto il modo sbagliato.

Come posso fare questo?

+1

Non mi è chiaro che cosa stai cercando di ottenere. Nessuno risponde, quindi penso di non essere l'unico. Forse questo http://www.mrexcel.com/forum/excel-questions/477702-generating-skewed-normal-distribution-random-numbers.html? –

+0

L'equazione nel collegamento Mr Excel funzionava per me. Questa era l'equazione = NORMDIST (D5, B $ 2, B $ 1, False) * NORMDIST (D5 * skew, B $ 2, B $ 1, True) * 2 Si noti che la prima funzione è la funzione di densità di probabilità (a causa del Falso) , il secondo è il secondo è la funzione di densità cumulativa (a causa del vero) Nota che volevo solo creare una distribuzione normale inclinata in Excel, non stavo tentando di utilizzare alcun tipo di numeri casuali –

risposta

2

Adelchi Azzalini ha un page su come generare numeri pseudo casuali con distribuzione skew-normal (SN). Qui dalla pagina:

SN random numbers

Il N (0,1) variates u0 v al punto 1. possono essere calcolati in Excel come NORMINV(RAND(),0,1). E δ espresso in termini di parametro di forma α è δ = α/SQRT(1+α*α).

Nota: Python's SciPy è in procinto di ottenere una variabile casuale skew-normal (scipy.stats.skewnorm), vedere here nel codice SciPy 0.18.0rc2. Lo docs fa riferimento a un documento di Azzalini e Capitanio e alla stessa pagina di cui sopra.