如何在Python中生成与给定数据集相关的随机数

时间:2016-05-09 14:20:33

标签: python numpy machine-learning correlation

我有一个20个元素的数组,x,浮点数,例如:

x = [ 0.35945087, 0.08999019, 0.51313128, 0.75455967, 0.50654956, 0.12404178, 0.25115332, 0.94167661, 0.95727792, 0.35572299, 0.65264679, 0.09416763, 0.861585, 0.19661212, 0.62882119, 0.1180147, 0.17153433, 0.07275386, 0.01895795, 0.00578392]

这些数据不是正态分布的,而是遵循幂律分布。

我需要生成第二个数组y,该数组与x相关,相关系数为0.70

我如何使用python执行此操作?

2 个答案:

答案 0 :(得分:2)

这是听起来很容易提及的事情之一,但是当您了解细节时会很复杂。我只能指出你正确的方向,而不是给你一个简单的食谱。

从理论上讲,你需要做的是建立一个二元分布,其中边际分布都是幂律(可能是相同的幂律),但具有所需的相关系数。

(X, Y) ~ f(x, y) s.t. X ~ powerlaw(params); Y ~ powerlaw(params); corr(X, Y) = 0.7

这可以通过copula完成。

对于您拥有的每个样本x[i],您会找到单变量条件分布Y ~ f(x=x[i], y)并从中获取样本。

注意,当应用于幂律分布时,相关系数可能没有特别的意义。幂律分布通常不具有有限的第一和第二矩。

答案 1 :(得分:-3)

y = [number * 0.7 for number in x]

这是你需要的吗?