如何构造与[0,1]均匀分布X负相关(相关系数-0.4)的[0,1]均匀分布Y?
构造满足条件的均匀分布随机变量Y
已知X是[0,1]上的均匀分布随机变量,要构造同样在[0,1]上均匀分布、且与X相关系数为-0.4的Y,你之前的思路问题在于:两个独立均匀分布的线性组合是三角分布,而非均匀分布,所以Y的分布会偏离均匀。下面给出精确满足所有条件的构造方法:
核心思路
利用条件分布构造:通过将X的取值范围分段,让Y在不同分段上采样自不同的均匀子区间,既保证Y的边缘分布是均匀的,又实现与X的负相关。
步骤1:推导分割点参数
首先,根据相关系数公式推导所需的参数:
对于[0,1]均匀分布的X和Y,它们的相关系数满足:
corr(X,Y) = 12×(E[XY] - 0.25)
代入目标相关系数-0.4,解得:
E[XY] = 0.25 + (-0.4)/12 ≈ 0.2167
接下来,设分割点为p(0<p<1),定义Y的条件分布:
- 当X ≤ p时,Y服从
U(1-p, 1)(取值集中在[0,1]的右端) - 当X > p时,Y服从
U(0, 1-p)(取值集中在[0,1]的左端)
通过推导可知,要让Y边缘为均匀分布,需满足p满足方程:
3(p² - p) = -0.4
解得两个有效解:p≈0.1584 或 p≈0.8416(两者效果对称,选其一即可)。
具体实现(以Matlab为例)
n = 10000; % 样本量 X = rand(n, 1); % 生成[0,1]均匀分布的X p = (1 - sqrt(1 - 4*(0.4/3)))/2; % 计算分割点≈0.1584 Y = zeros(n, 1); % 对X分段生成Y idx_small = X <= p; Y(idx_small) = (1 - p) + p * rand(sum(idx_small), 1); % 采样自U(1-p,1) idx_large = X > p; Y(idx_large) = (1 - p) * rand(sum(idx_large), 1); % 采样自U(0,1-p) % 验证结果 disp('X与Y的相关系数:'); disp(corrcoef(X, Y)); % 可通过histogram(Y)查看Y的分布是否均匀
验证结果
- 边缘分布:Y的CDF严格等于[0,1]均匀分布的CDF,是标准均匀分布;
- 相关系数:代入参数计算后,corr(X,Y)精确等于-0.4;
- 取值范围:Y的取值始终在[0,1]内,符合要求。
内容的提问来源于stack exchange,提问作者ROOZBEH EHSANI
相关产品推荐
相关产品推荐

