Python+pandas计算数据相关系数(person、Kendall、spearman)

简介: Python+pandas计算数据相关系数(person、Kendall、spearman)

pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、Kendall Tau相关系数和spearman秩相关)。



pandas相关系数-DataFrame.corr()参数详解


DataFrame.corr(method='pearson', min_periods=1)


参数说明:


method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}


              pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性                                           数据便会有误差。


               kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据


               spearman:非线性的,非正太分析的数据的相关系数


min_periods:样本最少的数据量


返回值:各类型之间的相关系数DataFrame表格。

#导入依赖库
import numpy as np
import pandas as pd
data = pd.DataFrame({'A':np.random.randint(1, 100, 10), 
                     'B':np.random.randint(1, 100, 10),
                     'C':np.random.randint(1, 100, 10)})
data.corr()   # 计算pearson相关系数
data.corr('kendall')      # Kendall Tau相关系数
data.corr('spearman')     # spearman秩相关

image.png

计算积距pearson相关系数,连续性变量才可采用;计算Spearman秩相关系数,适合于定序变量或不满足正态分布假设的等间隔数据; 计算Kendall秩相关系数,适合于定序变量或不满足正态分布假设的等间隔数据。


    计算相关系数:当资料不服从双变量正态分布或总体分布未知,或原始数据用等级表示时,宜用 spearman或kendall相关


    Pearson 相关复选项积差相关 计算连续变量或是等间距测度的变量间的相关分析


    Kendall     复选项 等级相关 计算分类变量间的秩相关,适用于合并等级资料


    Spearman   复选项 等级相关 计算斯皮尔曼相关,适用于连续等级资料


注:


1若非等间距测度的连续变量 因为分布不明-可用等级相关/也可用Pearson 相关,对于完全等级离散变量必用等级相关


2当资料不服从双变量正态分布或总体分布型未知或原始数据是用等级表示时,宜用 Spearman 或 Kendall相关。


3 若不恰当用了Kendall 等级相关分析则可能得出相关系数偏小的结论。则若不恰当使用,可能得相关系数偏小或偏大结论而考察不到不同变量间存在的密切关系。对一般情况默认数据服从正态分布的,故用Pearson分析方法。



两个连续变量间呈线性相关时,使用Pearson积差相关系数,用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系。(前提:作散点图主观判断下先)。按照高中数学水平来理解, 它很简单, 可以看做将两组数据首先做Z分数处理之后, 然后两组数据的乘积和除以样本数。


按照大学的线性数学水平来理解, 它比较复杂一点,可以看做是两组数据的向量夹角的余弦.


     Spearman相关系数又称秩相关系数,是利用两变量的秩次大小作线性相关分析,对原始变量的分布不作要求,属于非参数统计方法,适用范围要广些。斯皮尔曼等级相关是根据等级资料研究两个变量间相关关系的方法。它是依据两列成对等级的各对等级数之差来进行计算的,所以又称为“等级差数法”


    斯皮尔曼等级相关对数据条件的要求没有积差相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关来进行研究


对于服从Pearson相关系数的数据亦可计算Spearman相关系数,但统计效能要低一些。Pearson相关系数的计算公式可以完全套用 Spearman相关系数计算公式,但公式中的x和y用相应的秩次代替即可。


     Kendall's tau-b等级相关系数:用于反映分类变量相关性的指标,适用于两个分类变量均为有序分类的情况。对相关的有序变量进行非参数相关检验;取值范围在-1-1之间,此检验适合于正方形表格;肯德尔(Kendall)W系数又称和谐系数,是表示多列等级变量相关程度的一种方法。适用这种方法的数据资料一般是采用等级评定的方法收集的,即让K个评委(被试)评定N件事物,或1个评委(被试)先后K次评定N件事物。等级评定法每个评价者对N件事物排出一个等级顺序,最小的等级序数为1 ,最大的为N,若并列等级时,则平分共同应该占据的等级,如,平时所说的两个并列第一名,他们应该占据1,2名,所以它们的等级应是1.5,又如一个第一名,两个并列第二名,三个并列第三名,则它们对应的等级应该是1,2.5,2.5,5,5,5,这里2.5是2,3的平均,5是4,5,6的平均。


    肯德尔(Kendall)U系数又称一致性系数,是表示多列等级变量相关程度的一种方法。该方法同样适用于让K个评委(被试)评定N件事物,或1个评委(被试)先后K次评定N件事物所得的数据资料,只不过评定时采用对偶评定的方法,即每一次评定都要将N个事物两两比较,评定结果如下表所示,表格中空白位(阴影部分可以不管)填入的数据为:若i比j好记1,若i比j差记0,两者相同则记0.5。一共将得到K张这样的表格,将这K张表格重叠起来,对应位置的数据累加起来作为最后进行计算的数据,这些数据记为γij。


目录
相关文章
|
2天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
10 1
|
1天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
2天前
|
数据采集 数据可视化 数据挖掘
【新手解答】Python中Pandas的初学者笔记
【新手解答】Python中Pandas的初学者笔记
4 0
|
4天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
12 0
|
4天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
4天前
|
数据采集 数据处理 开发者
Python 中的数据处理技巧:高效数据操作的艺术
Python 在数据处理方面表现卓越,为开发者提供了丰富的工具和库以简化数据操作。在本文中,我们将探讨 Python 中数据处理的一些技巧,包括数据清洗、数据转换以及优化数据操作的最佳实践。通过掌握这些技巧,您可以在 Python 中更加高效地处理和分析数据。
|
5天前
|
存储 JavaScript 前端开发
Python网络数据抓取(5):Pandas
Python网络数据抓取(5):Pandas
28 8
|
6天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
6天前
|
开发者 索引 Python
Python中调整两列数据顺序的多种方式
Python中调整两列数据顺序的多种方式
26 0
|
19天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
36 0