在Matlab中将正态分布划分为相等概率的区域

时间:2015-05-08 17:01:45

标签: matlab normal-distribution

考虑具有均值0和标准差1的正态分布。我想将此分布划分为9个概率相等的区域,并从每个区域中随机抽取样本。

1 个答案:

答案 0 :(得分:3)

听起来你想要找到将概率分布函数下的区域划分为相等概率段的值。这可以通过应用norminv函数在matlab中完成。

在您的特定情况下:

segmentBounds = norminv(linspace(0,1,10),0,1)

segmentBounds的任何两个相邻值现在描述正态概率分布函数的分段的边界,使得每个分段包含总概率的九分之一。

我不确定从每个样本中随机抽取数字的确切含义。一种方法是通过执行拒绝采样从每个区域采样。简而言之,对于由x0x1限定的每个区域,请从y = normrnd(0,1)中抽取样本。如果x0 < y < x1,请保留。否则丢弃并重复。

您打算从这些区域统一采样也是可能的。为此,您可以尝试rand(1)*(x1-x0) + x0。然而,这将产生极端分位数的问题,因为区域延伸到+/-无穷大。