皮尔森、斯皮尔曼,肯德尔相关系数的理解

皮尔森相关系数

线性相关,皮尔逊相关系数是用来衡量两个变量之间线性相关程度的指标。取值范围在-1到1之间,负值表示负相关,正值表示正相关,0表示两个变量之间没有线性关系。但当变量之间存在非线性关系时,皮尔逊相关系数的效果就变差了。

pandas中的corr()方法可使用如下方法,检测特征间的关系

计算公式:两个连续变量(X,Y)的pearson相关性系数(Px,y)等于(X, Y)的协方差cov(X,Y)除以各自标准差的乘积(σX,σY)。

系数取值在-1.0到1.0之间,接近0的变量被成为无相关性,接近1或者-1被称为具有强相关性。

def pearson(vector1, vector2):
    n = len(vector1)
    #simple sums
    sum1 = sum(float(vector1[i]) for i in range(n))
    sum2 = sum(float(vector2[i]) for i in range(n))
    #sum up the squares
    sum1_pow = sum([pow(v, 2.0) for v in vector1])
    sum2_pow = sum([pow(v, 2.0) for v in vector2])
    #sum up the products
    p_sum = sum([vector1[i]*vector2[i] for i in range(n)])
    #分子num,分母den
    num = p_sum - (sum1*sum2/n)
    den = math.sqrt((sum1_pow-pow(sum1, 2)/n)*(sum2_pow-pow(sum2, 2)/n))
    if den == 0:
        return 0.0
    return num/den

皮尔森相关系数对数据是有比较高的要求的:

第一, 实验数据通常假设是成对的来自于正态分布的总体。因为在求皮尔森相关性系数以后,通常还会用 t 检验等方法来进行皮尔森相关性系数检验,而 t 检验是基于数据呈正态分布的假设的。

第二, 实验数据之间的差距不能太大,或者说皮尔森相关性系数受异常值的影响比较大。

例如心跳与跑步的例子,如果心脏不好,跑到一定速度后承受不了,突发心脏病,就会测到一个偏离正常值的心跳(过快或者过慢,甚至为0),如果加入这个值相关性分析,会干扰计算结果。

斯皮尔曼相关系数

衡量两个变量依赖性的非参数指标。常用希腊字母 ρ 表示,用单调方程评价两个统计变量相关性。如果数据中没有重复值, 并且当两个变量完全单调相关时,斯皮尔曼相关系数则为+1或−1。

斯皮尔曼相关系数是一种非参数指标,用于衡量两个变量之间的单调关系。单调关系指的是如果一个变量增加,那么另一个变量也会增加(单调正相关),或者如果一个变量增加,那么另一个变量会减少(单调负相关)。

斯皮尔曼相关系数的取值范围在-1到1之间,越接近1或-1表示两个变量之间的单调关系越强,0表示两个变量之间没有单调关系。斯皮尔曼相关系数的取值为正,则说明两个变量呈单调正相关,如果斯皮尔曼相关系数的取值为负,则说明两个变量呈单调负相关。

斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。对于样本容量为n的样本,n个原始数据被转换成等级数据。斯皮尔曼等级相关是根据等级资料研究两个变量间相关关系的方法。依据两列成对等级的各对等级数之差来进行计算的,所以又称为“等级差数法”。

斯皮尔曼相关系数适用于非线性或有序数据的情况。斯皮尔曼相关系数的计算基于秩次,将原始数据替换为相应的秩次,然后计算秩次间的皮尔逊相关系数。由于秩次本身不受异常值的影响,因此斯皮尔曼相关系数对异常值具有更好的鲁棒性。

数据要求

        两个变量的观测值是成对的等级评定资料;

        或由连续变量观测资料转化得到的等级资料;

不论两个变量总体分布形态、样本容量的大小如何,都可用斯皮尔曼等级相关来进行研究。反映两组变量之间联系的密切程度,取值在-1到+1之间,是建立在等级的基础上计算的。

等级相关系数和通常的相关系数一样,与样本的容量有关,尤其在样本容量较小的情况下,其变异程度较大,等级相关系数的显著性检验与普通的相关系数的显著性检验相同。

斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,根据原始数据的排序位置进行求解,这种表征形式就没有了求皮尔森相关性系数时那些限制。

计算公式:

无论X和Y 两个变量的值差多少,只需计算每个值所处的排列位置的差值,就可求出相关性系数。变量值没有变化时,也不会出现像皮尔森系数那样分母为 0 而无法计算的情况。

如果出现异常值,由于秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以影响也非常小。由于没有那些数据条件要求,适用的范围就广多了。

数据的秩次转换

斯皮尔曼相关系数基于秩次转换。将数据集从小到大排序,给每一个数据赋予相应排名的秩次,如果有多个数据相等,则相应的秩次是这些数据的平均值。例如,对于数据集[8, 3, 6, 7, 6, 9, 2],排序后为[2, 3, 6, 6, 7, 8, 9],则秩次分别为[1, 2, 4.5, 4.5, 6, 7, 8]。

将每个数据转换为其对应的秩次之后,计算秩次间的皮尔逊相关系数。

适用范围

当变量之间存在非线性关系时,皮尔逊相关系数可能会低估或高估它们之间的相关性。斯皮尔曼相关系数则基于秩次计算,能够更好地反映这种关系。

当变量具有有序性时,斯皮尔曼相关系数能够更好地反映它们之间的关系。例如,在医学研究中,通常需要比较不同治疗方法对疾病治愈率的影响。此时治愈率是一个有序变量,斯皮尔曼相关系数能够准确地衡量不同治疗方法之间的差异。

肯德尔相关系数

经常用希腊字母τ(tau)表示,肯德尔相关系数用来测量两个随机变量相关性的统计值。

肯德尔检验是一个无参数假设检验,使用计算而得的相关系数去检验两个随机变量的统计依赖性。

肯德尔相关系数的取值范围在-1到1之间,当τ为1时,表示两个随机变量拥有一致的等级相关性;

当τ为-1时,表示两个随机变量拥有完全相反的等级相关性;当τ为0时,表示两个随机变量是相互独立的。

参考:

统计学三大相关系数之皮尔森(pearson)相关系数_ruthy-wei的博客-CSDN博客_皮尔森相关系数

CSDN

百度安全验证

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中可以使用scipy库的stats模块来计算皮尔逊相关系数和进行假设检验。皮尔逊相关系数用于衡量两个变量之间的线性关系强度和方向。在Python中可以使用stats.pearsonr()函数来计算皮尔逊相关系数和p值。该函数返回两个值,第一个值是相关系数,第二个值是p值,用于判断相关系数的显著性。 例如,如果有两个变量x和y,可以使用以下代码计算皮尔逊相关系数和p值: import scipy.stats as stats correlation, p_value = stats.pearsonr(x, y) 其中,x和y是两个变量的数组或列表。correlation是皮尔逊相关系数,p_value是p值。 假设检验是用来判断样本数据是否支持某个假设的统计方法。在Python中,可以使用stats模块的相关函数进行假设检验。具体的假设检验方法取决于问题的性质和数据的类型。 在这里,你提到的假设检验可能是指对皮尔逊相关系数的显著性进行检验。可以使用stats.pearsonr()函数返回的p值来判断相关系数的显著性。通常,如果p值小于某个事先设定的显著性水平(例如0.05),则可以拒绝原假设,认为两个变量之间存在显著的线性关系。 总结:Python中可以使用scipy库的stats模块来计算皮尔逊相关系数和进行假设检验。皮尔逊相关系数用于衡量两个变量之间的线性关系强度和方向,而假设检验是用来判断样本数据是否支持某个假设的统计方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值