改变或缩放两个正态分布以具有特定的相关系数
change or scale two normal distribution to have specific correlation coefficient
所以,我的问题是,如果我们有两个正态分布的随机变量,例如如果n1(8,1(和n2(5,1(的rho = 0.2 我想更改 n1 和 n2 以使 rho = 0.8 或任何其他值。
如何在 C++ 中做到这一点?
是否有任何库、包或算法要实现?
任何帮助或意见将不胜感激。
问候
编辑:我修复了方程式。
如果我们假设x_1
和x_2
分别分布在n1(8,1(和n2(5,1(中,相关rho
。 然后,使用两个独立的n(0,1(变量w_1
和w_2
,我们可以编写如下x_1
和x_2
:
x_1 = w_1 + 8,
x_2 = sqrt(1 - rho^2) * w_2 + rho * w_1 + 5.
另一方面,如果我们假设y_1
和y_2
分布在相关rho'
内的n1(8, 1(和n2(5,1(中,我们也可以写
y_1 = w_1 + 8,
y_2 = sqrt(1 - rho'^2) * w_2 + rho'* w_1 + 5.
因此,我们可以通过以下算法获得具有不同相关rho'
的新联合分布:
y_1 = x_1,
y_2 = sqrt((1 - rho'^2)/(1 - rho^2)) * (x_2 - rho * (x_1 - 8) - 5) + rho' * (x_1 - 8) + 5.
我们还可以在C++中使用独立的正态分布(w_1和w_2(生成器直接生成y_1
和y_2
。
它是具有协方差矩阵的二维正态分布:
1, 0.2
0.2, 1
您可以使用 MATLAB 函数 "mvnrnd">
https://www.mathworks.com/help/stats/mvnrnd.html
我没有找到任何 c++ 库。也许你应该根据 mvnrnd 的方法实现它。
相关文章:
- 改变或缩放两个正态分布以具有特定的相关系数
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 逆生存函数与正态分布的PPF(ICDF)?
- C 中高斯的随机正态分布
- C :实用程序名称空间中的正态分布
- MT19937和正态分布
- 生成C++中的正态分布随机数
- 如何从限于一定间隔的正态分布进行采样,即C 实现
- 带参数的累积正态分布函数的逆
- 在.h文件中声明正态分布生成器
- Box Muller Transform在实现正态分布PRNG时的问题
- 接受拒绝算法 C++ 正态分布
- 在C 中实现正态分布的统一比率
- 如何创建一个在单独的方法中工作的c++随机正态分布
- 如何在C++中随机采样具有给定平均值和标准误差的正态分布
- C++中对数正态分布的累积函数的逆
- C++生成范围内服从正态分布的随机数
- 在 gmp 任意精度上生成正态分布
- 如何计算 CDF C++中正态分布概率
- 随机数的正态分布会挂起程序