相关系数的介绍

  • 皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数,可用来衡量两个变量之间的相关性的大小,根据数据满足的不同条件,从而选择不同的相关系数进行计算和分析(建模论文中最容易用错的方法)。

总体和样本

  • 总体:所要考察对象的全部个体=
  • 我们总是希望得到总体数据的一些特征(例如均值方差等)
  • 样本:从总体中所抽取的一部分个体,叫做总体的一个样本
  • 计算这些抽取的样本的统计量来估计总体的统计量
  • 样本均值 估计 总体的均值(平均水平)
  • 样本标准差 估计 总体的标准差(偏离程度)。

皮尔逊pearson相关系数

  • 必须先确认这两个变量是线性相关的,而后皮尔逊pearson相关系数绝对值大的就是相关性强,小的就是相关性弱;
  • 皮尔逊pearson相关系数只是用来衡量两个变量线性相关程度的指标
  • 在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数很大,也无法说明两者线性相关,甚至不能说它们相关
  • 总结:先画出散点图来看,两者是否是线性相关。
  • 画散点图,可采用Spss:图形 — 旧对话框 — 散点图/点图 — 矩阵散点图

总体皮尔逊Pearson相关系数

  • 协方差:可用于体现X、Y相关性
  • 若X、Y变化方向一直相同,则协方差为正;反之一直相同,则为负。
  • 🔺注意:协方差的大小和两个变量的量纲有关,因此不适合做比较 ⇒ 故要剔除协方差的量纲影响
  • 皮尔逊相关系数:将X和Y标准化(即剔除了两个变量量纲影响)后的协方差。
  • 皮尔逊相关系数python代码画图 皮尔逊相关系数怎么用_数据

  • 皮尔逊相关系数的性质
  • 皮尔逊pearson相关系数反映的是线性相关系数

样本皮尔逊Pearson相关系数

皮尔逊相关系数python代码画图 皮尔逊相关系数怎么用_数据_02

皮尔逊Pearson相关系数易错点

皮尔逊相关系数python代码画图 皮尔逊相关系数怎么用_假设检验_03

  1. 非线性相关也会导致线性相关系数很大(如图2)。
  2. 离群点对相关系数的影响很大(如图3),去掉离群点后,相关系数为0.98。
  3. 如果两个变量的相关系数很大也不能说明两者相关(如图4),可能是受到了异常值的影响。⇒ 皮尔逊相关系数受异常值影响非常大
  4. 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关)(如图5)。

对相关系数大小的解释

  • 参考
  • 下表中尽可做参考(不足:划分显得武断、不严格),因为对相关系数的解释是依赖于具体的应用背景和目的的。
  • 事实上,比起相关系数的大小,往往更关注的是显著性(见假设检验的学习)
  • 如相关系数求得r=0.3和0若有显著的差异,即可认为X和Y相关性是显著的(即X和Y确实是有相关性的);若求得r=0.3和0并无显著差异,即可认为X和Y并不相关
  • 由于相似化和显著性的数值不能在同一个excel表中体现,此处更建议标记显著性的图
对皮尔逊相关系数进行假设检验
  • 步骤一:提出原假设H0和备择假设H1(两个假设是截然相反的)
  • 假设计算出了一个皮尔逊相关系数r,想检验它是否显著的异于0 ⇒ 可以设定原假设和备择假设:H0:r = 0 ; H1:r ≠0
  • 步骤二:在原假设成立的条件下,利用要检验的量构造出一个符合某一分布的统计量
  • “统计量”:相当于要检验的量的一个函数,里面不能有其他的随机变量
  • “分布”一般有四种:标准正态分布、t分布、x²分布和F分布
  • t分布可看做标准正态分布的特例(n趋于无穷时,t分布即标准正态分布)
  • 对于皮尔逊相关系数r而言,在满足一定条件下,可构造统计量:可证明t是服从自由度n-2的t分布
  • 步骤三:将要检验的值带入统计量中,可得到检验值。
  • 假设计算的相关系数为0.5,样本n为30,即可得
  • 步骤四:由于知道统计量的分布情况,因此可以画得该分布的概率密度函数pdf,并给定一个置信水平,根据该置信水平查表找到临界值,并画出检验统计量的接收域和拒绝域。
  • 例如:上述统计量服从自由度为28的t分布,其概率密度函数图形如下。
  • 常见的置信水平有三:90%,95%和99%(其中95%是三者中最常用的)
  • t分布表的查询。
  • 对于上述双侧检验,需找出能覆盖0.95概率的部分。查t分布表可知,对应临界值为2.048,故可做出接收域及拒绝域
  • 步骤五:查看计算得的检验值是在拒绝域还是接收域,并下结论。
  • 上例中t*=3.05505 > 2.048,因此可得:在95%的置信水平上,拒绝原假设H0:r=0,因此r是显著的不为0的
P值判断法
  • 从步骤三得到检验值t*后,就可通过p值得到概率。
  • 拒绝
  • p<0.01,说明在99%的置信水平上拒绝原假设;
  • p<0.05,说明在95%的置信水平上拒绝原假设;
  • p<0.10,说明在90%的置信水平上拒绝原假设;
  • 无法拒绝
  • p >0.01,说明在99%的置信水平无法拒绝原假设;
  • p >0.05,说明在95%的置信水平上无法拒绝原假设;
  • p >0.10,说明在90%的置信水平上无法拒绝原假设;
  • 上述例子:本例中拒绝原假设意味着皮尔逊相关系数显著的异于0。
  • 显著性标记:
  • 0.5:不显著
  • 0.5* :在90%的置信水平上显著(即 p<0.10 )
  • 0.5**:在95%的置信水平上显著(即 p<0.05 )
  • 0.5***:在99%的置信水平上显著(p<0.01)
  • *越多,表越显著异于0
  • 自己标记不方便,可采用Spss软件
  • **的标记就是标记*** 的位置,为了不混淆,需要在相关性表下注明
皮尔逊相关系数假设检验的条件
  1. 实验数据通常假设是成对的来自于正态分布的总体。
  • 因为我们在求皮尔逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验,而t检验是基于数据呈正态分布的假设的。
  • 如何检验数据是否是正态分布?
  1. 实验数据之间的差距不能太大。
  • 皮尔逊相关性系数受异常值的影响比较大。
  1. 每组样本之间是独立抽样的。
  • 构造t统计量时需要用到。

皮尔逊相关系数的具体示例

  • 题目:现有某中学八年级所有女学生的体测样本数据,请见下表,试计算各变量之间的皮尔逊相关系数。
1、描述性统计
  • 方式①Matlab中基本统计量的函数(一般用标粗的):
  • 将计算结果复制到EXCEL表格中
  • 方式②EXCEL自带的数据分析工具
  • 方式③SPSS描述性统计结果
2、皮尔逊相关系数的计算
  • (在计算皮尔逊相关系数前,要先进行正态性检验)
  • corrcoef函数: correlation coefficient相关系数
% 返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。 → 常用,因为常需返回矩阵
R = corrcoef(A) 
% 返回两个随机变量 A 和 B (两个向量)之间的系数。
R = corrcoef(A,B)
  • 对于上例,采用R = corrcoef(Test);,可得下图:
3、Excel美化相关系数表
  • 美化操作:
  • ① 在开始 → 格式中调整每个单元格的格式为正方形
  • ② 在对齐方式中设置两个居中
  • ③ 选中相关系数表,开始 → 条件格式 → 色阶 → 选中 “ 红‐白‐蓝 ” 色阶
  • ④ 选中相关系数表,选择条件格式 → 管理规则 → 编辑规则
  • 美化对比图:
  • 美化前:
  • 美化后:

检验数据是否正态分布

正态分布雅克‐贝拉检验(Jarque‐Bera test)

  • 简称:JB检验
  • 要求:大样本(n>30)
  • 介绍:
  • 偏度和峰度介绍:
  • 假设检验的步骤:
  • matlab中进行JB检验语法:[h,p] = jbtest(x,alpha)
  • alpha:显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
  • x:要检验的随机变量(注意这里的x只能是向量)
  • h=1:表示拒绝原假设
  • h=0:表不能拒绝原假设

Shapiro‐wilk夏皮洛‐威尔克检验

  • 小样本:3≤n≤50
  • SPSS操作:

Q-Q图(不建议使用,偏离大)

  • 若要检验的随机变量是否近似于正态分布,只需看QQ图上的点是否近似地在一条直线附近。(要求数据量非常大)
  • 第一列数据和正态分布的Q-Q图:qqplot(Test(:,1))

斯皮尔曼spearman(等级)相关系数

斯皮尔曼相关系数的介绍

  • 若没有通过皮尔逊相关系数的相关性检验,就可以采用斯皮尔曼相关系数
  • 定义:对于X和Y两组数据,其斯皮尔曼(等级)相关系数为
  • 一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置
  • 可证:rs∈[-1,1]
  • rs<0,负相关;rs>0,正相关
  • 绝对值越接近1,相关性越强
  • 举例:
  • 皮尔逊相关系数python代码画图 皮尔逊相关系数怎么用_matlab_04

matlab计算斯皮尔曼相关系数

  • 用法①:corr(X , Y , 'type' , 'Spearman')
  • X和Y必须是列向量
  • 用法②:corr(X , 'type' , 'Spearman')
  • 计算X矩阵各列之间的斯皮尔曼相关系数

斯皮尔曼相关系数的假设检验

  • 小样本情况(即n ≤ 30):直接查临界值表即可。
  • 原假设H0:rs = 0;H1:rs ≠ 0
  • 大样本情况:
  • 举例:
  • matlab中获取某个P值
  • matlab中获取P值的矩阵:
% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
  • 对p值的标记可见上。

总结斯皮尔曼和皮尔逊相关系数

两者的选择

1.连续数据,正态分布,线性关系 ⇒ 用pearson相关系数是最恰当
2.上述任一条件不满足 ⇒ 就用spearman相关系数,不能用pearson相关系数。
3.两个定序数据之间也用spearman相关系数,不能用pearson相关系数。

定序数据

  • 定序数据是指:仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。
  • 例如:优、良、差;
  • 可用1表示差、2表示良、3表示优;
  • 但注意,此处用2除以1得出的2并不代表任何含义。(斯皮尔曼恰好是按大小排序故可处理定序数据;而皮尔逊对于2%1是有明显大小差异含义的,故不可用)
  • 定序数据最重要的意义代表了一组数据中的某种逻辑顺序。

课后习题

  • (1)写一篇文章,分析男生体测数据各指标之间的相关性,并与女生的数据得到的结论进行对比。
  • 要求:说明选择哪一种相关系数的原因,并要求做出散点图。
  • (可以自行尝试将相关系数矩阵可视化。因为数据是随机生成的,所以可能效果看起来很奇怪,这里只供练手熟悉比赛流程)
  • (2)尝试编程实现斯皮尔曼(只考虑样本数n>30)第一种方法的计算。
  • 要求写一个函数:function [ R , P ]= fun_spearman(X, kind)
  • X是数据矩阵
  • kind用来区分是单侧还是双侧检验
  • kind=1表示单侧检验;
  • kind=2表示双侧检验
  • 如果用户没有输入kind值,则默认为双侧检验
  • 要求计算出X各列之间的相关系数矩阵R,并求出对应的P值。
  • 提示:设置默认参数可百度Matlab中nargin的用法(可设置子函数简化步骤)