【问题标题】:Random variable from pdf in matlabmatlab中pdf中的随机变量
【发布时间】:2014-04-04 11:01:54
【问题描述】:

我想模拟一些作为方差 Gamma 分布的随机变量。

我知道 pdf (http://en.wikipedia.org/wiki/Variance-gamma_distribution),但我不知道累积函数 F 的逆:所以我无法生成随机统一变量 U 并计算 x=F^(-1)(U). 我必须在 MATLAB 中执行此操作。

谢谢!

斯特凡诺

【问题讨论】:

    标签: matlab


    【解决方案1】:

    下一个值得研究的自然选择是冯诺依曼的“接受-拒绝方法”。

    如果您可以找到与您的f 在同一空间上定义的密度g,则

    1. 您知道如何从g 生成样本,并且
    2. f(x)

    那么你就可以走了。

    如果您搜索文献,人们一定已经这样做了。 VG 广泛用于定价选项。

    【讨论】:

      【解决方案2】:

      遵循@Drake 的想法:第一步,您可以使用here 中的Marsaglia 和Tsang 方法。

      这是生成伽马随机数的代码:

      function x=gamrand(alpha,lambda)
      % Gamma(alpha,lambda) generator using Marsaglia and Tsang method
      % Algorithm 4.33
      if alpha>1
          d=alpha-1/3; c=1/sqrt(9*d); flag=1;
          while flag
              Z=randn;
              if Z>-1/c
                  V=(1+c*Z)^3; U=rand;
                  flag=log(U)>(0.5*Z^2+d-d*V+d*log(V));
              end
          end
          x=d*V/lambda;
      else
          x=gamrand(alpha+1,lambda);
          x=x*rand^(1/alpha);
      end
      

      【讨论】:

      • 我说的是方差 Gamma 分布,而不是 Gamma。在 MatLab 中,函数 gamrnd 已经存在
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 2012-07-14
      • 2015-12-11
      • 2012-10-17
      • 1970-01-01
      相关资源
      最近更新 更多