这是我试过的。我已经玩了很长时间,但不知道我做错了什么。有人能帮助我识别我没有看到的东西吗?
我试图创建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.
字符串
1条答案
按热度按时间6vl6ewon1#
你的
L
和random_data
的乘法运算不太对,改一下字符串
到
型
请参阅在Python中生成相关数据(3.3),以获得使用随机生成器的
multivariate_normal
方法的替代方法。该答案末尾的链接指向SciPy食谱页面,也值得查看。