我想模拟一些分布为方差伽玛的随机变量。
我知道pdf(http://en.wikipedia.org/wiki/Variance-gamma_distribution),但我不知道累积函数F的倒数:所以我无法生成随机统一变量U并计算x=F^(-1)(U).
我必须在MATLAB中这样做。
谢谢!
斯特凡诺
答案 0 :(得分:0)
接下来要考虑的另一个自然选择是Von Neumann"验收拒绝方法"。
如果您能找到与g
相同的空间定义的密度f
g
和如果您搜索文献,必须人这样做。 VG广泛用于定价选项。
答案 1 :(得分:-1)
遵循@Drake的想法:第一步,你可以使用来自here的Marsaglia和Tsang的方法。
这是生成gamma随机数的代码:
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