これは楽しいものです:ピアソンの積率相関係数 (ピアソン r )の特定の値で相関するランダムな x/y ペアを生成する必要があります。これは、配列 X と配列 Y の 2 つの配列として想像できます。ここで、配列 X と配列 Y の値は、ピアソン 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;
}