多元相关随机变量的生成

这篇博客介绍了如何生成具有特定相关性的多元正态分布随机变量。首先,通过生成独立的标准正态分布随机变量,然后通过协方差矩阵的Cholesky分解或SVD来构造相关随机变量。详细阐述了SVD分解在这一过程中的应用,将协方差矩阵分解为矩阵乘以其转置,从而得到所需的随机变量向量。博主还指出,计算过程中使用的是协方差矩阵而非相关性矩阵,并提出这是一个待解决的问题。
摘要由CSDN通过智能技术生成

找了几天的资料,把国内外的思路整合了一下,共同学习。

一、引例:如何生成2个相关性为\rho,且服从标准正太分布N(0,1)的随机变量x_{1},x_{2} 

答案:先随机生成2个独立(\rho=0)的,服从 标准正太分布N(0,1) 的随机变量z_{1},z_{2}

再考虑相关性,最终可以得到:

\\x_{1}=z_{1} \\x_{2}=\rho z_{1}+\sqrt{1-p^2} z_{2}

可以证明:

\begin{align*} var(x_{1})&=var(z_{1})=1\\ var(x_{2})&=\rho^2var(z_{1})+(1+\rho^2)var(z_{2})=1 \\ cov(x_{1},x_{2})&=cov(z_{1},\rho z_{1}+\sqrt{1+\rho^2}z_{2})=cov(z_{1},\rho z_{1})=\rho \end{align*}

因此x_{1},x_{2}符合题目要求。

下面讲一下通用的思路,可以用来生成2个或多个有相关性的随机变量。

二、多元相关随机变量的生成:

题目:要求生成协方差矩阵为C_{n*n}多个符合正太分布的变量,即生成X=[X_{1},X_{2},X_{3},...,X_{n}]^T,使得X\sim N(\mu ,C_x ),注意这里的C_{x}是协方差矩阵,不是相关性矩阵,其中\mu =[\mu _{1},\mu _{2},...,\mu _{n}]^T为均值向量。

 

答案:首先生成符合标准正太分布的随机变量向量Z\sim N(0 ,1),则X=\mu+AZ则为所求的随机变量向量(其中AA^T=C_{x})。

证明:

因为Z变量是随机生成的,因此其元素间的相关性=0,元素自身相关性为1,因此Z的协方差矩阵=相关性矩阵C_z=cov(Z)=\begin{bmatrix} [1,0,0],[0,1,0],[0,0,1] \end{bmatrix}=I,是单位阵。

所以cov(X)=cov(\mu +AZ)=cov(CZ)=Acov(Z)A^T=AIA^T=AIA^T

因此X的协方差矩阵C_x=cov(X)=AA^T

至此,问题就变成了:如何将协方差矩阵C_{x}分解成矩阵*矩阵的转置,即C_x =AA^T,得到矩阵A即可。

 

矩阵分解方法有多种,常见的可以分解成矩阵*矩阵的转置的方法:cholesky分解法(又称平方根分解),SVD,等等。

这部分后续再更新。

-------------------------------

吃完晚饭,继续更新。

在我另外一篇博客中讲到:生成协方差矩阵=C_{n*n}的多元随机变量时,也可以使用SVD分解法:

简要回顾SVD:A_{m*n}=U\Sigma V^T,SVD可以将一个矩阵(不要求必须是方阵)分解为左奇异矩阵U_{m*m} * 对角阵\Sigma_{m*n} * 右奇异矩阵V_{n*n}, 其中V是A^TA的特征向量(注意公式中V有个转置操作),U是AA^T的特征向量。\Sigma_{m*n}是对角阵,对角元素是U、V的共同特征值,例如有三个特征值时:\Sigma =[[\lambda_{1},0,0],[0,\lambda_{2},0],[0,0,\lambda_{3}]]

而上文讲到,只需要将协方差或相关性矩阵分解为矩阵*矩阵的转置,即可得到协方差矩阵为C_{x}的多个随机变量。

现在问题变成:寻找一个矩阵A,使得协方差矩阵C_{x}=AA^T

对协方差矩阵C_{x}进行SVD分解,考虑对称性可知U=V

SVD公式中的对角阵可以直接分解为矩阵*矩阵的转置:\Sigma_{n*n}=\begin{bmatrix}\sigma_{1}&0\\0&\sigma_{2}\end{bmatrix}=D^TD,其中D=\begin{bmatrix}\sqrt{\sigma_{1}}&0\\0&\sqrt{\sigma_{2}}\end{bmatrix}

因此

\begin{align*} C_{n*n}&=U\Sigma V^T=U\Sigma U^T\\ &=UDD^TU^T\\ &=(UD)(UD)^T\\&=AA^T\end{align*}

所以X=\mu+AZ则为所求的随机变量向量(其中A=UD).

只是对网上的资料进行了汇总,现在还有一个问题,就是问题问的是相关性,应该计算相关性矩阵,而计算过程中一直是协方差矩阵。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值