【发布时间】:2010-12-15 15:08:54
【问题描述】:
这是一个有趣的问题:我需要生成在给定值Pearson product moment correlation coefficient, or Pearson r 相关的随机 x/y 对。您可以将其想象为两个数组,数组 X 和数组 Y,其中数组 X 和数组 Y 的值必须重新生成、重新排序或转换,直到它们在给定的 Pearson r 水平上相互关联。这是踢球者:数组 X 和数组 Y 必须是均匀分布。
我可以使用正态分布来做到这一点,但是在不扭曲分布的情况下转换值让我很难过。我尝试对数组中的值重新排序以增加相关性,但我永远不会仅仅通过排序就得到 1.00 或 -1.00 的相关数组。
有什么想法吗?
--
这是随机相关高斯函数的 AS3 代码,用于让车轮转动:
public static function nextCorrelatedGaussians(r:Number):Array{
var d1:Number;
var d2:Number;
var n1:Number;
var n2:Number;
var lambda:Number;
var r:Number;
var arr:Array = new Array();
var isNeg:Boolean;
if (r<0){
r *= -1;
isNeg=true;
}
lambda= ( (r*r) - Math.sqrt( (r*r) - (r*r*r*r) ) ) / (( 2*r*r ) - 1 );
n1 = nextGaussian();
n2 = nextGaussian();
d1 = n1;
d2 = ((lambda*n1) + ((1-lambda)*n2)) / Math.sqrt( (lambda*lambda) + (1-lambda)*(1-lambda));
if (isNeg) {d2*= -1}
arr.push(d1);
arr.push(d2);
return arr;
}
【问题讨论】:
-
你说的很对,谢谢!
-
在试图找出封闭形式时,我注意到 pearson 取决于 x 和 y 的传播,这意味着您可以对 x 的方差做出任何假设,然后在事后缩放数据集.基本上,您希望 x 在什么范围内?
-
大多数统一随机数生成器输出的数字在 0-1 之间,所以我一直坚持这个范围。只要 X 的范围与 Y 的范围匹配,我就可以稍后重新缩放。
标签: java actionscript-3 statistics random random-sample