R语言,分别计算pearson和spearman相关系数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言,分别计算pearson和spearman相关系数相关的知识,希望对你有一定的参考价值。

知道了两组数据,怎么用R语言求pearson和spearman相关系数?两个系数有什么不同?

1、打开R语言自带开发工具,RGui。

2、定义一个向量  bd<-c(1,2,3,4,5)。

3、通过length和sum函数对向量的均值进行计算,将计算出的均值放到meanx中。

4、输入meanx即可看到计算出的均值。

5、这只是R语言计算均值的一种方法,通过mean函数可以直接计算出向量的均值。

参考技术A 利用cor(x,y,method = c("pearson", "kendall", "spearman"))来计算
pearson相关系数用于连续数据
spearman相关系数用于分类数据。

用于 Pearson 和/或 Spearman 相关性的 Javascript 库

【中文标题】用于 Pearson 和/或 Spearman 相关性的 Javascript 库【英文标题】:Javascript library for Pearson and/or Spearman correlations 【发布时间】:2013-03-30 23:21:36 【问题描述】:

是否有 Javascript 库可用于进行 Spearman and/or Pearson 关联?

【问题讨论】:

【参考方案1】:

有这个

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

去做。

【讨论】:

jStat 是做 pearson 还是 spearman?我只看到文档中提到的“相关系数”,但没有具体看到 pearson。 @trusktr 看来你是对的,抱歉,我认为是的。 相关系数通常是皮尔逊,不是吗? Spearman 在您的数据行列中不亚于 Pearson,对吧?【参考方案2】:

试试这个:

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;

【讨论】:

【参考方案3】:

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

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);

【讨论】:

【参考方案4】:

我在 Github 上使用了 Spearson 项目 here。我已经测试了它的 Spearman 相关性,它给出了准确的值。

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

&lt;script src="spearson.js"&gt;&lt;/script&gt;

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

同样,您可以将correlation.pearson 用于 Pearson 相关性。

【讨论】:

【参考方案5】:

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

在许多其他方法中,它有 correlationCoefficient() 计算两个变量的 Pearson 相关系数,spearmansRho() 计算 Spearman 等级相关系数

【讨论】:

以上是关于R语言,分别计算pearson和spearman相关系数的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用cov函数计算矩阵或者dataframe数据变量之间的协方差cor函数计算相关性cor函数通过method参数指定相关性相关性计算方法Pearson,Spearman, Kendall

R语言 | PearsonSpearmanKendallPolychoricPolyserial相关系数简介及R计算

SPSS中pearson(皮尔逊相关系数)看r值还是P值,确定相关性

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第二部分)

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第二部分)

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第二部分)