生成相关数字

Gid*_*eon 9 java random statistics actionscript-3 random-sample

这是一个有趣的问题:我需要生成随机x/y对,它们与Pearson积矩相关系数或Pearson r的给定值相关.您可以将其想象为两个数组,即数组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;
    }
Run Code Online (Sandbox Code Playgroud)

and*_*oke 6

我最后写了一篇关于此简短论文

它不包括你的排序方法(虽然在实践中我认为它类似于我的第一种方法,以环形方式),但确实描述了两种不需要迭代的方法.