假如有两个标准正态分布$D_1$和$D_2$,并且它们的协方差是0.5。
怎么分别从$D_1$和$D_2$生成随机变量呢?
求思路。如果有python的代码更好,谢谢!
2个回答
先生成两个标准差为1的独立随机变量的采样$z_1,z_2$,假如要求的协方差为$\rho$,则相关的随机变量的采样$x_1=z_1$,$x_2=\rho z_1+\sqrt{1-\rho^2}z_2$。需要注意此时每个变量的标准差为1,也就是协方差矩阵的对角线都是1,此时两变量间的协方差等于相关系数。
扩展到生成N维相关随机变量$X~ \sim N(\mu,\Sigma)$,先生成N维独立随机变量$Z$,假设$CC^T=\Sigma$,则$X=\mu+CZ$。$C$可以由 Cholesky decomposition生成。
比如$N=2$时,$C=\begin{bmatrix} 1& 0 \\ \rho & \sqrt{1-\rho^2} \end{bmatrix}$
$CC^T=\begin{bmatrix} 1& \rho \\ \rho & 1 \end{bmatrix}$
import numpy as np
mean = [0, 0]
cov = [[1, 0], [0, 100]]
x, y = np.random.multivariate_normal(mean, cov, 5000).T