8

是否有可用于进行Spearman 和/或 Pearson相关性的 Javascript 库?

4

5 回答 5

7

所以这是我在这件事上的两分钱 - 皮尔逊相关性:

const pcorr = (x, y) => {
  let sumX = 0,
    sumY = 0,
    sumXY = 0,
    sumX2 = 0,
    sumY2 = 0;
  const minLength = x.length = y.length = Math.min(x.length, y.length),
    reduce = (xi, idx) => {
      const yi = y[idx];
      sumX += xi;
      sumY += yi;
      sumXY += xi * yi;
      sumX2 += xi * xi;
      sumY2 += yi * yi;
    }
  x.forEach(reduce);
  return (minLength * sumXY - sumX * sumY) / Math.sqrt((minLength * sumX2 - sumX * sumX) * (minLength * sumY2 - sumY * sumY));
};
let arrX = [20, 54, 54, 65, 45];
let arrY = [22, 11, 21, 34, 87];
let R = pcorr(arrX, arrY);
console.log('arrX', arrX, 'arrY', arrY, 'R', R);

于 2016-12-11T18:38:56.227 回答
3

有这个

http://stevegardner.net/2012/06/11/javascript-code-to-calculate-the-pearson-correlation-coefficient/

除此之外,您可以尝试:

http://www.jstat.org/download

或者,如果这些都不符合要求并且您不想自己写一个,您可以随时使用:

http://www.rforge.net/Rserve/

http://www.gardenersown.co.uk/education/lectures/r/correl.htm

去做吧。

于 2013-04-08T19:58:04.070 回答
3

我在 Github 上使用了Spearson项目。我已经测试了它的 Spearman 相关性,它为此提供了准确的值。

我刚刚下载了 repo 文件夹中spearson.js的文件。/lib以下是在浏览器中使用它的方法:

<script src="spearson.js"></script>

<script>
    var x = [3, 4, 5];
    var y = [.1, .2, .3];
    var corr = spearson.correlation.spearman(x, y);
</script>

同样,您可以使用correlation.pearsonPearson 相关性。

于 2016-12-26T21:23:41.367 回答
1

试试这个:

function spearmanCorrelation(multiList, p1, p2){
    N=multiList[p1].length;
    order=[];
    sum=0;

    for(i=0;i<N;i++){
        order.push([multiList[p1][i], multiList[p2][i]]);
    }

    order.sort(function(a,b){
        return a[0]-b[0]
    });

    for(i=0;i<N;i++){
        order[i].push(i+1);
    }

    order.sort(function(a,b){
        return a[1]-b[1]
    });

    for(i=0;i<N;i++){
        order[i].push(i+1);
    }
    for(i=0;i<N;i++){
        sum+=Math.pow((order[i][2])-(order[i][3]), 2);

    }

    r=1-(6*sum/(N*(N*N-1)));

    return r;
}
于 2016-03-30T08:20:17.620 回答
1

在问了最初的问题多年后,我推荐了这个很棒的库,它很简单,但仍然有据可查: statistics.js

在许多其他方法中,它具有计算两个变量的皮尔逊相关系数的相关系数()和计算斯皮尔曼等级相关系数的 spearmansRho ()

于 2021-02-17T12:21:10.997 回答