【问题标题】:Dividing a normal distribution into regions of equal probability in Matlab在Matlab中将正态分布划分为等概率区域
【发布时间】:2015-05-08 17:01:44
【问题描述】:

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

【问题讨论】:

  • 将分布划分为样本是什么意思?并从每个样本中取一个随机数?请澄清您的问题
  • 正态分布无穷大,不能等分。
  • 感谢瑞恩的回复。
  • 感谢瑞恩的回复。是的,你是正确的,分布延伸到无穷大。我喜欢的是分布内的九个区域。例如,第一个说从 -infinity 到 a,第二个说 a-b、c-d、d-e、e-f(这个包括平均值),其他四个到 +infinity。然后我想从每个间隔中选择 rand 数。

标签: matlab normal-distribution


【解决方案1】:

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

在您的特定情况下:

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

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

我不确定您从每个样本中抽取随机数是什么意思。一种方法是通过执行拒绝抽样从每个区域进行抽样。简而言之,对于以x0x1 为界的每个区域,从y = normrnd(0,1) 中抽取样本。如果x0 < y < x1,请保留。否则丢弃它并重复。

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

【讨论】:

  • @Ryan,我有一个类似的问题,我的数据以某种方式正常分布,我想创建给定数量的组(比如 G),其中每个组具有相同数量的项目。你对如何做到这一点有什么建议吗?
猜你喜欢
  • 2014-01-28
  • 2013-03-21
  • 2012-11-08
  • 2018-05-17
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多