MATLAB中定义自己的概率密度函数

5

在MATLAB或Octave中定义自己的概率密度函数并用它来生成随机数是可能的吗?

MATLAB和Octave都内置了rand、randn等默认函数,可以从均匀分布或正态分布中随机抽取点,但似乎没有文档说明如何定义自己的概率密度函数。

3个回答

8

从任意随机分布中进行抽样并不总是简单的。对于众所周知的分布,有一些技巧可以实现它们,并且大多数已经在统计工具箱中实现了,就像Oli所说的那样。

如果您感兴趣的分布形式比较困难,那么有许多抽样算法可以帮助您,例如拒绝抽样、切片抽样、Metropolis-Hastings算法等。

如果您的分布是离散的,或者可以相当准确地近似为离散分布,那么您可以使用randsamp进行多项式抽样。


1
如果您拥有统计工具箱,您可以使用 random(),它内置了许多有用的PDF文件。

1

我最近不得不做了几次这样的事情,这并不是一件容易完成的事情。我最喜欢的技术是使用反向变换抽样

这个想法非常简单:

  1. 创建一个累积分布函数(CDF)
  2. 使用均匀随机数生成器。
  3. 识别映射到您的CDF值的随机变量(RV)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接