2024-03-28 17:51:53 发布
网友
我试图创建两个相互关联的随机变量,我相信最好的方法是从给定参数的二元正态分布中提取(开放给其他想法)。不相关的版本如下:
import numpy as np sigma = np.random.uniform(.2, .3, 80) theta = np.random.uniform( 0, .5, 80)
但是,对于80个绘图中的每一个,我希望sigma值与theta值相关。有什么想法吗?
可以使用scipy中的import multivariate_normal。假设我们创建随机变量x和y:
scipy
import multivariate_normal
x
y
from scipy.stats import multivariate_normal rv_mean = [0, 1] # mean of x and y rv_cov = [[1.0,0.5], [0.5,2.0]] # covariance matrix of x and y rv = multivariate_normal.rvs(rv_mean, rv_cov, size=10000)
你有来自rv[:,0]的x和来自rv[:,1]的y。相关系数可以从
rv[:,0]
rv[:,1]
import numpy as np np.corrcoef(rv.T)
使用内置: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. ]])
可以使用
scipy
中的import multivariate_normal
。假设我们创建随机变量x
和y
:你有来自
rv[:,0]
的x
和来自rv[:,1]
的y
。相关系数可以从使用内置:http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html
相关问题 更多 >
编程相关推荐