如何生成具有不同边际分布的多元随机数?

时间:2012-05-14 11:37:10

标签: r matlab statistics distribution

我已经不知道如何生成一些双变量随机数,比如copula。边缘具有不同的分布,即t,γ,并且连接结构可以是高斯或t。我将不得不修理他们的kendall tau。我想研究那些随机数的皮尔逊rho是如何与预设的tau不同的。

有什么建议吗? R / Matlab中的一个原型非常受欢迎!

3 个答案:

答案 0 :(得分:4)

如果您有统计工具箱,则可以使用函数copularnd从copula生成随机数。文档中有几个示例。要使用Kendall的tau和Pearson的rho进行转换,请查看copulaparamcopulastat

答案 1 :(得分:2)

如果你有两个不同的变量x1,x2,你可以使用copula理论来生成一些随机数。所以你必须计算变量的CDF:

[Fi1, xi1] = ecdf(x1);

[Fi2, xi2] = ecdf(x2);

Fi1 = ksdensity(x1,x1, 'function','cdf');

Fi2 = ksdensity(x2,x2, 'function','cdf');

随后,您可以按如下方式计算kendall的tau相关性:

tau = corr(x1,x2, 'type', 'kendall');

rho = copulaparam('t',tau, nu, 'type','kendall');

以copularnd为目标,您可以生成Gaussian,t,Clayton,Frank或Gumbel copula的随机值(n = 1000),然后您只需要估算copula的逆cdf,以达到所需的分布

n = 1000;

U = copularnd('Gaussian',[1  rho;rho 1],n);

% Inverse cdf of Gamma distribution 

X1 = gaminv(U(:,1),2,1);

% Inverse cdf of Student's t distribution

X2 = tinv(U(:,2),5); 

X1 = ksdensity(x1, U(:,1), 'function','icdf','width',.15);
X2 = ksdensity(x2, U(:,2), 'function','icdf','width',.15);

所以,现在X1和X2代表了从初始x1和x2变量生成的新随机值。

我是copula统计数据的新手,如果我犯了错误,请原谅。

答案 2 :(得分:1)

您可以按以下方式构造高斯系。当然,并不能保证copula精确地达到您想要的目标相关性。该性能取决于边际分布的属性。

示例1:对边际(指数和威布尔)使用逆变换

rng(1776)   % Setting seed for reproducibility
lambda1 = 2; alpha1 = 2; beta = 3;
rho = 0.8; N = 10^5;

Z = mvnrnd([0 0],[1 rho; rho 1], N);
U = normcdf(Z);
X1 = (-1/lambda1)*log(U(:,1));  % Inverse Transform for Exponential
Y1 = beta*(-log(U(:,2))).^(1/alpha1);  % Inverse Transform for Weibull
corr(X1,Y1)
scatterhist(X1,Y1,'Direction','out','Marker','.','Color','b')

Gaussian Copula w/ Inverse Transform

示例2 :将数值CDF求逆用于边际(伽玛和对数正态)

rng(1776)
alpha2 = 6.7; lambda2 = 3; 
mu = 0.1; sigma = 0.5;
rho = -0.8; N = 10^5;
% Make distributions
pd_X2 = makedist('Gamma',alpha2,lambda2);
pd_Y2 = makedist('Lognormal',mu,sigma);
Z = mvnrnd([0 0],[1 rho; rho 1], N);
U = normcdf(Z);
X2 = icdf(pd_X2,U(:,1));
Y2 = icdf(pd_Y2,U(:,2));
corr(X2,Y2)
scatterhist(X2,Y2,'Direction','out','Marker','.','Color','k')

Gaussian Copula w/ Numerical CDF Inversion

参考文献:
Inverse Transform
Copulas

高斯系:
罗斯,谢尔顿。 (2013)。 模拟。学术出版社,加利福尼亚州圣地亚哥,第5版。 103--105。