编辑:
正如 cmets 中的 @PeterO 和 @pjs 所指出的,相关性仅在线性变换下保留。由于我应用了非线性变换,因此变量之间的相关性与所需的相关性并不对应。
这个答案不完整。
原答案:
使用gaminv,您将能够将多元正态随机数转换为伽马一。
n = 100; % # of random number
mu = [0,0,0]; % [muX1, muX2, muX3]
rho = [1.0 0.5 0.7;
0.5 1.0 0.4;
0.7 0.4 1.0] % covariance matrix
Z = mvnrnd(mu, rho, n); %Generate multivariate corralated random number
U = normcdf(Z,0,1); %Compute the CDF
%gamma distribution parameter
a = 2
b = 1
%transform your normal multivariate number into gamma distribution with gaminv
X = [gaminv(U(:,1),a,b) gaminv(U(:,2),a,b) gaminv(U(:,3),a,b)];
% Variable extraction:
X1 = X(:,1);
X2 = ...
仅使用 X1 和 X2 以及协方差因子 0.8 的结果: