1
我有代碼產生N個雙精度數組,我想創建一個spearmans相關矩陣。是否有一個函數爲我做,或者我必須遍歷所有的組合,並與Correlation.Spearman()建立我自己的相關矩陣?有沒有辦法爲兩個以上的數組獲取spearmans相關矩陣?
我有代碼產生N個雙精度數組,我想創建一個spearmans相關矩陣。是否有一個函數爲我做,或者我必須遍歷所有的組合,並與Correlation.Spearman()建立我自己的相關矩陣?有沒有辦法爲兩個以上的數組獲取spearmans相關矩陣?
目前還沒有計算相關矩陣的例程,但我已打開票#161在GitHub上進行跟蹤。
在此期間,你可以使用下面的程序(我使用v3.0.0-alpha5這裏):
Matrix<double> Spearman(double[][] data)
{
var m = Matrix<double>.Build.DenseIdentity(data.Length);
for(int i=0; i<data.Length; i++)
for(int j=i+1; j<data.Length; j++)
{
var c = Correlation.Spearman(data[i], data[j]);
m.At(i,j,c);
m.At(j,i,c);
}
return m;
}
var vectors = new[] {
new[] { 1.0, 2.0, 3.0, 4.0 },
new[] { 2.0, 4.0, 6.0, 8.0 },
new[] { 4.0, 3.0, 2.0, 1.0 },
new[] { 0.0, 10.0, 10.0, 20.0 },
new[] { 2.0, 4.0, -4.0, 2.0 }
};
Spearman(vectors);
將返回:
DenseMatrix 5x5-Double
1 1 -1 0.948683 -0.316228
1 1 -1 0.948683 -0.316228
-1 -1 1 -0.948683 0.316228
0.948683 0.948683 -0.948683 1 0
-0.316228 -0.316228 0.316228 0 1
更新二〇一三年十月二十〇日:
添加到主人,可在V3.0.0-alpha6和更新版本中使用:
Correlation.PearsonMatrix(params double[][] vectors)
Correlation.PearsonMatrix(IEnumerable<double[]> vectors)
Correlation.SpearmanMatrix(params double[][] vectors)
Correlation.SpearmanMatrix(IEnumerable<double[]> vectors)
謝謝,我結束了的情況下,具體的解決方案去,因爲我並不需要整個矩陣。雖然看到github問題線程,因爲這將在未來有用。 –