偏正态分布中的随机数(相当于 NORMINV())

Posted

技术标签:

【中文标题】偏正态分布中的随机数(相当于 NORMINV())【英文标题】:Random number in a skew normal distribution (equivalent to NORMINV()) 【发布时间】:2015-12-26 09:31:21 【问题描述】:

我正在尝试使用偏态正态分布创建偏态随机数生成器,但我不知道如何将我的公式(使用 NORMDIST())转换为可以生成基于 NORMINV() 的公式我想要的数字。这是我的公式:

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

其中“x”是数字,“s”是比例,“m”是位置,“k”是形状。我承认我找到了公式online,但它似乎做了我想做的事,除了错误的方法。

我该怎么做?

【问题讨论】:

我不清楚你到底想达到什么目的。没有人回答,所以我想我不是唯一一个。也许这个mrexcel.com/forum/excel-questions/…? Excel 先生链接中的方程式对我有用。就是这个方程 =NORMDIST(D5,B$2,B$1,False)*NORMDIST(D5*ske​​w,B$2,B$1,True)*2 注意第一个函数是概率密度函数(因为 False) ,第二个是第二个是累积密度函数(因为真)注意我只是想在Excel中创建一个倾斜的正态分布,我没有尝试使用任何类型的随机数 【参考方案1】:

Adelchi Azzalini 有一个page,介绍了如何生成具有偏正态 (SN) 分布的伪随机数。这里来自页面:

第 1 步中的 N(0,1) 变量 u0 和 v。可以在 Excel 中计算为NORMINV(RAND(),0,1)。而用形状参数α表示的δ为δ = α/SQRT(1+α*α)

注意:Python 的 SciPy 正在获取倾斜正态随机变量 (scipy.stats.skewnorm),请参阅 SciPy 0.18.0rc2 代码中的 here。 docs 引用了 Azzalini 和 Capitanio 的论文以及我在上面引用的同一页。

【讨论】:

以上是关于偏正态分布中的随机数(相当于 NORMINV())的主要内容,如果未能解决你的问题,请参考以下文章

(多元)偏正态分布正态分布对数正态分布的随机数的产生(R语言)

正态分布及正态随机变量

Matlab正态分布常用函数normpdf_normcdf_norminv_normrnd_normfit

Matlab正态分布常用函数normpdf_normcdf_norminv_normrnd_normfit

C ++中正态分布的随机数

谁知道利用逆变换法(反变换法),用matlab编程正态分布随机变量随机数?