我想模擬一些隨機變量分佈爲方差伽馬。隨機變量從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