我有一个 20 元素数组,x
, float ,例如:
x = [ 0.35945087, 0.08999019, 0.51313128, 0.75455967, 0.50654956, 0.12404178, 0.25115332, 0.94167661, 0.95727792, 0.35,046095 9416763, 0.861585, 0.19661212, 0.62882119, 0.1180147, 0.17153433, 0.07275386, 0.01895795, 0.00578392]
此数据不是正态分布,而是服从幂律分布。
我需要生成第二个数组 y
,它与 x
相关,相关系数为 0.70
。
我如何用 python 做到这一点?
这是一个听起来很容易问,但当你深入细节时却很复杂的事情。我只能为您指明正确的方向,而不能给您一个简单的方法。
理论上,您需要做的是构建一个双变量分布,其中边际分布都是幂律分布(大概是相同的幂律分布)但具有所需的相关系数。
(X, Y) ~ f(x, y) s.t. X~幂律(参数); Y~幂律(参数); corr(X, Y) = 0.7
这可以通过 copula 来完成.
对于您拥有的每个样本 x[i]
,您找到单变量条件分布 Y ~ f(x=x[i], y)
并从
请注意,相关系数在应用于幂律分布时可能没有特别的意义。幂律分布一般不具有有限的一阶矩和二阶矩。
我是一名优秀的程序员,十分优秀!