顶部左侧内容
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 知识宝库 > 正文

数据分析--相关系数计算(相关系数分析表怎么看)

luoxia 2024-04-23 22:09 60 浏览 0 评论

Pearson(皮尔逊), Kendall(肯德尔)和Spearman(斯伯曼/斯皮尔曼)三种相关分析方法


具体公式就不Copy了,一般认为:

使用Pearson积差相关系数:

两个连续变量间呈线性相关时;

数据呈现正态分布时;

Spearman和Kendall相关系数:

对分类变量的数据或变量值的分布明显非正态或分布不明时,计算时先对离散数据进行排序或对定距变量值排(求)秩。



直接上计算代码:


public static double pearson(double x[], double y[]) {

int size = x.length;

if (size == 0 || size != y.length) {

return 0;

} else {

double xavg = avg(x);

double yavg = avg(y);

double numerator = 0.0;

double denominatorx = 0.0;

double denominatory = 0.0;

for (int i = 0; i < size; i++) {

numerator += (x[i] - xavg) * (y[i] - yavg);

denominatorx += Math.pow((x[i] - xavg), 2);

denominatory += Math.pow((y[i] - yavg), 2);

}

return numerator / Math.sqrt(denominatorx * denominatory);

}

}


public static double avg(double x[]) {

double sum = 0;

for (int i = 0; i < x.length; i++) {

sum += x[i];

}

return sum / x.length;

}

/** 要求X按小至大顺序 */

public static double spearman(double x[], double y[]) {

double rx[] = getRank(x);

double ry[] = getRank(y);

return pearson(rx, ry);

}


public static double[] getRank(double x[]) {

double r[] = new double[x.length];

for (int i = 0; i < x.length; i++) {

int cnt_lt = 0, cnt_eq = 0;

for (int j = 0; j < x.length; j++) {

if (x[i] < x[j]) {

cnt_lt++;

}

if (x[i] == x[j]) {

cnt_eq++;

}

}

r[i] = cnt_lt + (1 + cnt_eq) / 2;

}

return r;

}

/** 要求X按小至大顺序 */

public static double kendall(double x[], double y[]) {

int cnt_bt = 0;

for (int i = 0; i < y.length; i++) {

for (int j = i; j < y.length; j++) {

if (y[i] < y[j]) {

cnt_bt++;

}

}

}

return 4.0 * cnt_bt / ((x.length) * (x.length - 1)) - 1;

}


public static void sortAsX(double x[], double y[]) {

List list = new ArrayList();

for (int i = 0; i < x.length; i++) {

list.add(new Point(x[i], y[i]));

}

Collections.sort(list, new Comparator() {

@Override

public int compare(Object o1, Object o2) {

Point obj1 = (Point) o1;

Point obj2 = (Point) o2;

return ((Double) obj1.x).compareTo((Double) obj2.x);

}

});


for (int i = 0; i < x.length; i++) {

Point p = (Point) list.get(i);

x[i] = p.x;

y[i] = p.y;

}


}



public static double calcCorr(double x[], double y[], int type) {

if (type == 1) {

return pearson(x, y);

} else if (type == 2) {

sortAsX(x, y);

return spearman(x, y);

} else {

sortAsX(x, y);

return kendall(x, y);

}


}



当然代码没有考虑很多异常情况(例如缺失值),同时Kendall相关系数也是采用了最简单明了的方式,仅供参考。


用Excel / R / Spss 等都可以计算出来,将上面的代码转成其他的语言例如C、C++、Python代码也是很容易的事情。


R计算方法为:


cor(x, y = NULL, use = "everything",

method = c("pearson", "kendall", "spearman"))

相关推荐

DIY从入门到放弃:机械盘固态盘能用多久?

电脑中的每个硬件损坏都有一个价值,唯独硬盘是无法衡量的,原因就在于里面的数据。不管是重要的年终总结PPT,还是可爱小姐姐的合集,这些损失都会让你头疼不已。想知道不同类型的硬盘都能使用多久,就请随笔者走...

固态硬盘和机械硬盘有什么区别?固态硬盘和液态硬盘的区别

我们在购买电脑时,都会关注它的一些外设和硬件配置,其中硬盘就是需要我们着重关注的点。硬盘通常有固态和机械,固态和液态之间的区分,那么它们之间有什么不同呢,本文就为大家分享一些硬盘方面的讯息。固态硬盘,...

固态硬盘和机械硬盘我们该如何选择?两者之间的区别又在哪里?

发展到现在电脑已经是一种非常普及的电子产品,大部分的人都有接触过或者是有着自己的一台电脑,不过很多人都是对于电脑的了解只停止于对电脑软件的操作,而对硬件却是一知半解或者是一点都不懂。就比如有的时候电脑...

固态硬盘、机械硬盘,你选哪个?

如果你想提升电脑系统性能或增加储存空间,加装固态硬盘或机械硬盘会是一个不错的选择。固态硬盘(SolidStateDrive,简称SSD)和机械硬盘(HardDiskDrive,简称HDD)是两...

一文了解固态硬盘和机械硬盘的优缺点

在计算机存储领域,固态硬盘(SSD)和机械硬盘(HDD)是两种备受关注的存储设备。它们各自拥有独特的特点和优缺点,让我们一起来深入了解一下这两种硬盘的对比。固态硬盘(SSD)优点:(1)速度快:固态...

一张图看懂机械硬盘和固态硬盘的区别

说起固态硬盘,懂的人一听就明白是怎么回事,而不懂的人则是一脸懵逼。其实,固态硬盘也没有想象中的那么神秘。它最大的特点就可以提高电脑的开机速度的运行速度,就是是电脑的“外挂”一样。1、什么是固态硬盘在出...

固态硬盘和机械硬盘哪个好?机械硬盘算不算电子垃圾?

固态硬盘的优点:1、读写速度快:采用闪存作为存储介质,读取速度相对机械硬盘更快。固态硬盘不用磁头,寻道时间几乎为0。2、防震抗摔性:SSD固态硬盘内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转...

固态硬盘比机械硬盘更好?那你就错了,机械硬盘也有优势

现在自己攒机的朋友越来越多,很多人都会跟我说固态硬盘比机械硬盘更优秀,但是我却不这么认为,不要觉得我是一个特立独行的人,其实你猜对了,我就是这样的一个人。我为什么会说固态硬盘不一定比机械硬盘更好呢?下...

256GB固态和1TB机械硬盘应该怎么选?

来源:中关村在线相信不少小伙伴们在购机的时候发现,很多品牌给予了不同的硬盘配置方案,两台笔记本,处理器相同,显卡相同,内存相同,价格相同的前提下,只是硬盘配置不同,一个是256GB固态硬盘一个是1TB...

价格大跳水后 固态硬盘为何无法取代机械硬盘?

随着技术的升级,固态硬盘价格不断下跌。目前,240G的固态硬盘只要200多块钱。显然,固态硬盘的价格已经不再是高高在上。与传统的机械硬盘相比,固态硬盘最大的优势是速度快。如果电脑中安装了固态硬盘,并且...

如何正确选择硬盘:机械硬盘与固态硬盘优缺点对比

硬盘有机械硬盘(HDD)和固态硬盘(SSD)之分。一、机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,电路板等几个部分组成。1、空气过滤片:其具有一定的吸附性,当硬盘造成...

电脑装固态硬盘和机械硬盘有什么区别?

想要解答这个问题,我们先了解一下固态硬盘与机械硬盘的区别,他们都有什么优缺点1、固态硬盘一个字,快,两个字很快,三个字,非常快。固态硬盘读取速度可以达到400M每秒,写入速度最高可达200M每秒,这在...

机械硬盘VS固态硬盘,你知道应该使用哪一种么?

首先,区别就是:机械硬盘(HDD)造价低寿命长,固态硬盘(SSD)噪音小效率高。下面为大家分别介绍一下:机械硬盘存在机械结构,读取和写入时由磁头在转动的盘片上转动寻找文件所在扇区,类似以前的DVD播放...

机械硬盘与固态硬盘的区别

硬盘中包含机械硬盘、固态硬盘和混合硬盘,那机械硬盘与固态硬盘之间有什么区别呢?机械硬盘就是传统的普通硬盘,主要采取的存储方式是机械式存储,通过磁头在盘片上进行读写数据;固态硬盘采取的方式则是电子存储,...

机械硬盘与固态硬盘,两者之间各有优势,但机械硬盘大势已去

大家都知道,选购笔记本电脑时要挑选带固态硬盘的型号,一般情况下,固态硬盘简称为SSD,机械硬盘简称为HDD。电脑硬盘的方式是由接口来区别的,一般的HDD形态仅有一种,即SATA,它有2.5英寸和3.5...

取消回复欢迎 发表评论: