概率密度函数

时间:2012-12-04 02:10:19

标签: matlab statistics

如何在MATLAB中模拟概率密度函数

fx(x)={ x/8    0<=x<=4
      {   0     Other

谢谢!

1 个答案:

答案 0 :(得分:7)

任意概率密度函数的模拟如下:

1)导出逆累积分布。

2)从统一的[0,1]分布模拟。

3)将均匀[0,1]数字插入反向累积分布。

在你的情况下,你有一个很好的简单概率密度,让我怀疑这是一个功课问题。鉴于你没有发布任何代码表明你自己试图解决它,我不会只为你写出答案。

相反,你为什么不亲自得出逆累积分布呢?首先,您需要获得累积分布。这可以通过找到从无穷大到x的概率密度的积分来完成,在你的情况下,它等于从0到x的积分。完成此操作后,您需要找到它的反转。示例here应该足以向您展示如何为您的简单案例执行此操作。如果你走得那么远,那么使用rand(100, 1)从均匀[0,1]密度模拟100次绘制,然后将这些数字插入到反向累积分布中。

如果您遇到任何问题,请随时编辑您的问题以添加它们,并对此答案发表评论,我会帮助您。我在接下来的一个小时左右。

干杯。

更新:我认为OP的作业可能到现在为止,所以为了完整性:概率密度的积分,即累积分布,是f(x)=(1/16) X ^ 2。注意,当x = 0时,f(x)= 0,并且当x = 4时,f(x)= 1.这表明问题已经正确地说明了概率密度的域。接下来,f(x)意味着g(x)= 4 * x ^(1/2)的逆CDF。因此:

MyInverseCDF = @(x) (4 * sqrt(x));
MySimulatedDraw = MyInverseCDF(rand(100, 1));

我们可以直观地验证一切正常:

hist(MySimulatedDraw);

另一件事,这是指向另一个相关SO问题的链接:defining-your-own-probability-distribution-function-in-matlab