numpy 我尝试使用Python生成合成数据,数据应该是二元的,并且具有指定的相关性,为什么我的代码无法工作?

mznpcxlj  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(86)

这是我试过的。我已经玩了很长时间,但不知道我做错了什么。有人能帮助我识别我没有看到的东西吗?
我试图创建1,000个样本,每个样本包含两个变量,其中一个变量与另一个变量相关,r=0.85(或者我指定的任何相关性)。我并不真正理解Bucky分解,所以我假设问题出在这一步的某个地方。

# Create random normal bivariate data with r=0.85
rng = np.random.default_rng(0)
correlation = 0.85
corr_matrix = np.array([[1, correlation], [correlation, 1]])
L = np.linalg.cholesky(corr_matrix)
n = 1000
random_data = rng.normal(size=(n, 2))
synthetic_data = np.dot(random_data, L)

# Check the correlation
r = stats.pearsonr(synthetic_data.T[0], synthetic_data.T[1])[0]

# r computes to 0.646.

字符串

6vl6ewon

6vl6ewon1#

你的Lrandom_data的乘法运算不太对,改一下

synthetic_data = np.dot(random_data, L)

字符串

synthetic_data = np.dot(random_data, L.T)


请参阅在Python中生成相关数据(3.3),以获得使用随机生成器的multivariate_normal方法的替代方法。该答案末尾的链接指向SciPy食谱页面,也值得查看。

相关问题