2012-03-09 132 views
5

是否可以在MATLAB或Octave中定义自己的概率密度函数,并使用它来产生随机数?在matlab中定义自己的概率分布函数

MATLAB和Octave有像rand,randn这样的默认函数,可以从统一或正态分布中随机抽取点,但似乎没有关于如何定义我自己的Proability密度函数的文档。

回答

8

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

如果您感兴趣的分布是困难的形式,有许多采样算法可以帮助您,例如rejection sampling切片采样,Metropolis–Hastings algorithm

如果你的分布是离散的,或者可以很好地用离散分布近似,那么你可以使用randsamp做多项式采样。

+0

+1为MCMC答案。 – YBE 2012-03-09 19:12:03

1

如果你有统计工具箱,你可以使用random(),因为它内置了很多有用的PDF。

1

最近我不得不这样做了几次,这并不是一件容易的事。我最喜欢的技术是使用Inverse transform sampling

的想法很简单:

  1. 创建CDF
  2. 使用统一的随机数发生器。
  3. 确定RV映射到您的cdf值。