我想模拟一些随机变量分布为方差伽马。随机变量从PDF在matlab
我知道PDF(http://en.wikipedia.org/wiki/Variance-gamma_distribution),但我不知道的累积函数F的反:所以我不能生成一个随机的匀变速U和计算x=F^(-1)(U).
我不得不这样做在MATLAB。
谢谢!
斯特凡诺
我想模拟一些随机变量分布为方差伽马。随机变量从PDF在matlab
我知道PDF(http://en.wikipedia.org/wiki/Variance-gamma_distribution),但我不知道的累积函数F的反:所以我不能生成一个随机的匀变速U和计算x=F^(-1)(U).
我不得不这样做在MATLAB。
谢谢!
斯特凡诺
接下来的天然替代品寻找到是冯·诺依曼的“接受 - 拒绝方法”。
如果你能找到在同一个空间定义为密度g
你f
这样
g
生成样品,并然后你很好去。
如果您搜索文献,人们必须已经做到了这一点。 VG广泛用于定价选项。
正在关注@Drake的想法:第一步,您可以使用来自here的Marsaglia和Tsang's Method。
这是产生伽玛随机数字代码:
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分布,而不是伽玛.. MATLAB中的函数gamrnd已经存在 – user3497665