数学概念-相关系数

相关系数是高中数学涉及到的一个概念, 描述变量之间的线性相关程度, 是一个介于-1~1之间的数值, 数值越大正相关性越强. 但除了线性相关性, 还有其他的相关关系, 本文对几个常用的相关系数做总结介绍.

线性相关系数(皮尔逊pearson相关系数)

定义式:

其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差
import pandas as pd

df = pd.DataFrame({'x': [0, 1], 'y': [2, 4]})
# pandas的DataFrame的相关性计算方法, 默认使用的就是线性相关.
matrix = df.corr()

matrix =>
   x    y
x  1.0  1.0
y  1.0  1.0

肯德尔kandall相关系数

肯德尔相关系数, 定义了以下三种相关情况:

  • X1>X2 且 Y1>Y2, 表示关系一致
  • X1>X2 且 Y1<Y2, 表示关系不一致
  • X1=X2 且 Y1=Y2, 表示既不一致, 也非不一致

这里有三个公式计算肯德尔相关系数的值

公式一

\[T_{au-a}=\frac{C-D}{\frac{1}{2}N(N-1)}\]

其中C表示XY中拥有一致性的元素对数(两个元素为一对);D表示XY中拥有不一致性的元素对数。

注意:这一公式仅适用于集合X与Y中均不存在相同元素的情况(集合中各个元素唯一)。

公式二

\[T_{au-b}=\frac{C-D}{\sqrt{(N3-N1)(N3-N2)}}\]

其中:

\[N3=\frac{1}{2}N(N-1)\]
\[N1=\sum_{i=1}^{s}{\frac{1}{2}U_i(U_i-1)}\]
\[N2=\sum_{i=1}^{t}{\frac{1}{2}V_i(V_i-1)}\]

其中C、D与公式一中相同;N1、N2分别是针对集合X、Y计算的,现在以计算N1为例,给出N1的由来(N2的计算可以类推):将X中的相同元素分别组合成小集合,s表示集合X中拥有的小集合数(例如X包含元素:1 2 3 4 3 3 2,那么这里得到的s则为2,因为只有2、3有相同元素),Ui表示第i个小集合所包含的元素数。N2在集合Y的基础上计算而得。

注意:这一公式适用于集合X或Y中存在相同元素的情况(当然,如果X或Y中均不存在相同的元素时,公式二便等同于公式一)。

公式三:

\[T_{au-c}=\frac{C-D}{\frac{1}{2}N^2\frac{M-1}{M}}\]

注意:这一公式中没有再考虑集合X、或Y中存在相同元素给最后的统计值带来的影响。公式三的这一计算形式仅适用于用表格表示的随机变量X、Y之间相关系数的计算。M表示长方形表格中行数与列数中较小的一个。

斯皮尔曼spearman相关系数

通常也称为秩相关系数, 基本思路是两个变量之间, 相关性会体现在顺序(秩)上, 自变量顺序靠前, 因变量顺序也靠前则说明相关性强, 反之则若. 因为关系是基于顺序的, 所以可以来表征非线性的相关关系.

举个先举个例子:

X: 1, 2, 3, 4
Y: 1, 8, 27,64 

df = pd.DataFrame({'x': x, 'y': y})


pearson = df.corr() # 默认为pearson相关
         x        y
x  1.00000  0.95137
y  0.95137  1.00000


spearman = df.corr(method='spearman')
     x    y
x  1.0  1.0
y  1.0  1.0

上面可以看出spearman相关可以很好地表征非线性关系下的相关性, 他的计算表达式为:

统计学之三大相关性系数(pearson、spearman、kendall)
代入公式,求得斯皮尔曼相关性系数:P= 1-6*(1+1+1+9)/6*(36-1)=0.657

发表评论

电子邮件地址不会被公开。

72 + = 79