python - 从python中的双变量正态采样

标签 python numpy distribution random

我正在尝试创建两个相互关联的随机变量,我认为最好的方法是从具有给定参数(对其他想法开放)的双变量正态分布中提取。不相关的版本如下所示:

import numpy as np
sigma = np.random.uniform(.2, .3, 80)
theta = np.random.uniform( 0, .5, 80)

但是,对于 80 次抽奖中的每一次抽奖,我都希望 sigma 值与 theta 值相关。有什么想法吗?

最佳答案

使用内置:http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html

>>> import numpy as np
>>> mymeans = [13,5]  
>>> # stdevs = sqrt(5),sqrt(2)
>>> # corr = .3 / (sqrt(5)*sqrt(2) = .134
>>> mycov = [[5,.3], [.3,2]]   
>>> np.cov(np.random.multivariate_normal(mymeans,mycov,500000).T)
array([[ 4.99449936,  0.30506976],
       [ 0.30506976,  2.00213264]])
>>> np.corrcoef(np.random.multivariate_normal(mymeans,mycov,500000).T)
array([[ 1.        ,  0.09629313],
       [ 0.09629313,  1.        ]])
  1. 如图所示,如果您必须针对非单位方差进行调整,事情会变得有点棘手)
  2. 更多引用:http://www.riskglossary.com/link/correlation.htm
  3. 要在现实世界中有意义,协方差矩阵必须对称并且还必须是正定半正定(它必须是可逆)。特定的反相关结构可能是不可能的。

关于python - 从python中的双变量正态采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674832/

相关文章:

javascript - 使用 PyQt5 和 QWebEngineView 抓取 javascript 页面

python - 硬编码 6x6 numpy 矩阵的简单方法是什么?

arrays - 用固定颜色构建规则图案

python - scipy.stats.uniform 中 `a` 和 `b` 属性的混淆

python - 基于列表/字典动态更改 networkx 中箭头的大小

python - 带有嵌套列表到 Dataframe 的字典

即使两个数组相同,Numpy 返回 False?

python - 为另一个数组中的所有 float 查找数组中最接近的 float

testing - 我使用哪个发行版来模拟 "random"程序崩溃?

python - 带有 next 的异步生成器