今天写一个比较简单也比较常用的内容——相关系数。

相关系数,并不是一个陌生的概念,因为高中的时候好像就学过了。只不过那个时候没有讲太深入,当然啦,我这篇笔记也不会讲得多深入,能力达不到嘛。理解一下,会用就好。

相关系数,其实就是衡量两个变量之间相关性的大小的指标,常用的相关系数有两种,一种是pearson相关系数,也就是《概率论与数理统计》这本书里提到的,平时最为常用的相关系数。另一种称之为spearman相关系数,我也是在清风老师的课中第一次听说,它衡量的是两个变量的依赖性,唔,也可以理解为单调性啦。接下来我就介绍一下我学到的内容吧~

相关概念引入

总体与样本

总体与样本是初等统计学中最为基本的概念之一。在统计学中,我们时常要对一些对象,人,事,物等进行观察研究,希望发现它们运动变化过程中的一些内在的规律。但是,出于各种条件的限制,我们往往很难我们感兴趣的群体的全部信息。例如,我们想要知道中国大学生的每月平均消费水平,理想状态下,我们首先应该知道中国所有大学生每个人的平均月消费,再加总起来除以人数。但想想就知道,除非付出极大的代价,否则不可能获取到每一个人的花费信息。

但实际上,我们也没有太大必要进行这种普查性质的活动。我们可以首先根据地理位置或者其他指标选定一些学校,作为我们进行调查的学校。之后在这些学校里,我们又可以按照某种指标,或者尽可能多得选择一些学生进行询问。这样,我们就获得了研究对象中一部分学生的消费信息,之后就可以计算这部分学生的平均月消费,并且将它视为全部大学生的平均月消费。

在上面这个例子中,总体就是我们感兴趣的研究对象全体,也就是全中国的大学生。样本就是我们最后真正得到信息的那部分学生。而从总体中获得样本的过程,就称之为抽样。hhh这些高中应该都学过,简单说一下。

为什么要进行抽样获得样本呢?就是因为总体数据的获取过于困难,我们只好退而求其次,选择一个可以代表总体的样本,用这个样本的相关统计量,相关规律等来推测总体的相关统计量以及规律。 那为什么可以用样本的性质来代表或者推测总体的性质呢?这个我也不太清楚,因为大家都默认是这样的。

简单理解一下,个体的某些性质,我们是不好揣测的,特别是有些个体,本身就有较大的波动。所以观察个体的数据,我们很难得到什么一般性的结论。但许多个个体聚在一起,他们的行为,性质等可能会表现出某种同步性,或者说规律性。个体是特殊的,但总体中的个体又是普通的,统计学想要发掘的,大概就是个体中存在的共性。这种共性,或者说规律本身是固定的,观察数量的多少,主要决定着对这种规律的反映程度。数量越多,规律自然会更清晰更直观。因此,样本相对于总体,其区别可能就是对规律或者共性的反映清晰度不同,但本质上是一样的。那么,用样本估计总体或者代替总体,就无可厚非了。(以上全是瞎扯)

描述性统计

简单介绍一下样本的描述性统计。所谓描述性统计,就是通过表格,图形等手段从各个方面对数据进行展示的过程。其主要作用就是从总体上看一看数据变量的特征、分布、变化趋势等等。

简单的描述性统计主要有两个内容,一是对数据变量进行五数概括,看一看变量的位置分布;另一个就是展示一下数据变量的均值与方差。除此之外,出于美观以及方便的需要,我们还会把数据进行可视化操作,以更好地进行展示。

五数概括,就是指出变量数据的最小值、最大值、第一四分位数、中位数以及第三四分位数。很简单,首先把数据从小到大进行排序,第一个就是最小值,最后一个就是最大值,处于最中间位置的便是中位数的值了。对中位数左边的数据(除去中位数)计算中位数,即第一四分位数;对中位数右边的数据(除去中位数)计算中位数,即第三四分位数。如果进行比较明确的定义,数据变量

分位数

代表着

。那四分位数,其实也就是

分别为25%,50%,75%的情况了。再加上最大值和最小值,便是所谓的五数了。

五数概括的目的在于描述变量的分布,观察变量的总体情况。相对于平均数或者中位数这种单一指标,五数概括包含的信息就更加充分了。

之后就是均值方差描述了。其中均值衡量的是样本数据的平均程度,就是常说的平均值,方差描述的是数据的分散程度。这两个统计量也是高中就学过的内容,均值

样本的均值的观测值便是

方差的公式是

不过这是总体数据的方差,样本方差

之所以样本方差是除以

而不是

,是为了满足方差估计的无偏性,这个以后有机会再说。当然,在大样本的情况下

,除以

还是

区别不大,不过一般情况下,还是除以

比较合适。

对于五数概括,matlab好像没有比较直接的函数,所以我们可以通过箱形图来看看它的五数。所谓箱形图,就是下方这种图。

最下方和最上方的黑色横线位置分别代表最大值和最小值。箱体的下方蓝线为第一四分位数,箱体的上方为第三四分位数,箱体中间的红线即为中位数。由于这是由均匀分布生成的数据,因此中位数好像就在正中央,但一般情况下并非如此。

如果想要查看四分位数或者中位数,直接点击相应的线就好了,matlab会自动显示出来。由上图我们可以看到,50%的数据都在40一下,而25%的数据都在100以上,这便可以理解为一个代表着“贫富差距”的箱型图了。

至于均值和方差,matlab中使用mean函数求均值,std函数求标准差(方差的平方根),var函数求方差,比较简单,此处不表。

x=rand(100,1);

figure(1)

boxplot(x)

figure(2)

y=[21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4];

boxplot(y)

hold on

z=[1 2 3 4 111 112 112 122 89 34 36 31 57 14 36 124 57 124 7];

figure(3)

boxplot(z)

mean_z =mean(z) %均值

var_z=var(z) %方差

std_z=std(z) %标准差

Pearson相关系数

好的,现在介绍一下Pearson相关系数。

总体Pearson相关系数

顾名思义,就是总体数据的相关系数。如果两组数据

是总体数据,那么总体均值

总体的协方差为

总体的方差为

则我们定义总体的Pearson系数

上式中的协方差,简单来说,衡量的是两个变量之间的变化趋势。如果两个变量的变化趋势一致,即

变大

也变大或者

变小

也变小,即使某些时候一个大于均值一个小于均值,乘积可能为负数,但总的来看,协方差应该为正。反之,若两个变量变化趋势相反,则协方差应该为负数。如果两个变量的变化没有关系,则

时正时负,最后很可能正负相抵,使得协方差趋于0。

那Pearson相关系数呢?其实就是两个变量的协方差除以它们的标准差,可以将其理解为对

进行标准化,剔除了量纲影响的协方差。因为标准差反映的就是数据的波动程度,由于量纲不同,所以波动程度有大有小。而除以标准差之后,就相当于消灭了各自的波动程度,更加纯粹地反映出变量之间的变化关系。

唔,我可能解释的不是很好,知乎上有一个问题,大家可以去看一看,再理解一下。

[如何通俗易懂地解释「协方差」与「相关系数」的概念? - 知乎](https://www.zhihu.com/question/20852004)

样本相关系数

其实差不多,计算公式还是一样的,但是在具体的样本协方差,样本方差计算上,有一些小的差别。样本均值

总体的协方差

总体的方差

则我们定义总体的Pearson系数

相关系数的性质

我们需要了解一些相关系数的性质以更好地使用它。

性质一说明,相关系数介于

之间(可以自己证明),其数值定量地刻画了

的相关程度,即

越大,两者的相关程度越大,

时,两者的相关程度最低。(注意,这里的相关程度指的是线性相关程度,这一点后面会再提到)一般而言,若

,我们称之为强相关,

,可以称之为中等相关,

称之为弱相关。当然啦,实际上并没有精确的标准,反正相关系数绝对值越大越相关。

同时,如果

,则我们认为两者是正相关关系,即你变大我也变大,如果

,我们认为两者是负相关关系,即你变大我变小。

性质二则指出,如果

之间存在严格的线性关系,则

。如果

的值十分接近于

,我们也可以认为二者具有较强的线性相关性了。

注意

在使用相关系数的时候,有几个需要注意的点。

首先,相关系数刻画的是线性相关关系,也就是用来衡量两个变量线性相关程度的指标。如果你想使用相关系数来说明它们之间的相关程度,就必须得通过画散点图等手段,确认这两个变量是具有一定的线性相关性的。嗯,记住,相关系数只能说明线性相关程度。如果两个变量之间具有某种二次或者指数关系,它们仍然是具有相关性的,只是线性相关程度可能比较低罢了。所以千万不要看到相关系数很小就认为二者不相关,事实上只是线性不相关。

第二点,即使相关系数很大,也不一定真的线性相关。如下图。因此,一定一定一定一定记得画出散点图啊,不要凭借一个相关系数就说它们相关不相关了(血与泪的教训呜呜呜呜呜呜)

举个例子

直接用matlab计算相关系数矩阵就好啦~将数据导入之后,一行代码搞定。

R = corrcoef(Test) % correlation coefficient

结果如下

我们可以在excel中用色阶美化一下,当然如果使用Python或者R语言会有很好用的第三方库或者包直接生成美观的相关系数矩阵。

其实也不是很美,但颜色深浅可以表达出相关系数的大小,很直观。之后有机会我再介绍一下如何用Python或者Excel生成好看的图表。

如果想要计算两个向量的相关系数,也是一行代码搞定。

x=corrcoef(Test(:,1),Test(:,2))

唔,结果也是一个矩阵,不过可以直接看出来相关系数啦。

对Pearson相关系数进行假设检验

其实在上统计这门课的时候,印象中我没有见到过对相关系数进行假设检验,更多的是对均值、方差、比例等进行假设检验。不过清风老师的课中提到了这部分,我也就简单介绍一下步骤,具体的原理我觉得还是需要认真学习统计这门课才行。这里不做过多展开。说到这里,大家可以试试在公众号后台发送数学建模文章的名字,有惊喜呀。

首先说一下什么是假设检验。原理其实比较简单:我们假设某个命题是正确的,在这个假设正确的前提下,事件A是一个小概率事件。我们知道,在一次实验中小概率事件几乎不可能发生。所以,如果我们在一次试验中观察到事件A竟然发生了,就有足够的理由怀疑这一假设的正确性,从而否定该假设;反正,如果在一次试验中事件A并没有发生,我们就无法否定原假设,只能转而支持原假设了。(虽然无法否定原假设并不代表原假设就是正确的,但是在假设检验的框架下,我们认为无法否定就要支持)

我们将设为正确的假设,称之为原假设

,同时我们提出一个与之互斥的假设,称之为备择假设

。之后,我们需要寻找到一个事件A,需要满足该事件在原假设为真的情况下是一个小概率事件,一般而言我们是通过构造服从某种分布的统计量来完成。再者,对于给定的显著性水平,构造拒绝域,将样本数据代入我们找到的统计量中,判断是否在拒绝域内。是的话就说明小概率事件发生了,拒绝原假设,支持备择假设。否则就支持原假设。

上面可能就是构造拒绝域那里不太清楚,这里就不讲了,有机会还会提到。一般而言,我们反而不用拒绝域,用的是

值。所谓

值,就是在

为真的情况下,所得到的样本结果会像实际观察值结果那么极端甚至更极端的概率。

也就是说,我们把题目提供的样本,当成一次实验的结果。在

为真的情况下,如果我们再次进行抽样,还会得到一个样本结果,同时在抽样之前,存在着一个概率,即抽出来的样本的结果比题目给的样本的结果更加极端,也就是更加不符合原假设的概率。

如果这个概率很小,例如只有0.001,大概意味着重复1000次实验,才会出现题目中样本的结果或者比它更极端的结果,那么我们认为小概率事件发生了,需要否定原假设。如果这个概率是0.2,那么100次实验中,有20次都会出现题目中样本的结果甚至更加极端的结果,这并不能算是小概率事件发生了,因此我们无法拒绝原假设,转而需要拒绝备注假设,支持原假设。

啊这部分确实就是比较难理解,如果不太懂也可以看看教科书以及知乎的一些回答,可能某一天就突然懂了。

欧克,针对相关系数的假设检验,我们提出的原假设

,备择假设

,也就是检验相关系数等于0的显著性。如果检验后原假设为真,意味着我们求出的相关系数跟0没什么差距,也就意味着那两个变量在一定显著性水平下是线性不相关的。

之后我们构造统计量,这里构造的是

分布统计量,

,该统计量是自由度为

分布。至于为什么构造的是这个统计量,大家自行查阅,有机会会详细说一说。

在然后就是计算

值,大概的形式是

,其中

就是抽样可能得到的样本的结果,

是当前样本,即题目给定样本的结果,如果

,说明在

的置信水平上拒绝原假设,如果

,说明在

的水平上拒绝原假设,如果

,说明在

的水平上拒绝原假设。反之,则在相应的置信水平上接受原假设。所谓置信水平可以简单理解为拒绝原假设的程度,具体的还是自行查阅啦~

用matlab就简单多了,corrcoef函数不仅可以返回相关系数,还可以返回

值,如下。

[R,P] = corrcoef(Test)

% 在EXCEL表格中给数据右上角标上显著性符号吧

P < 0.01 % 标记3颗星的位置,意味着置信水平是99%

(P < 0.05) .* (P > 0.01) % 标记2颗星的位置,意味着置信水平是95%

(P < 0.1) .* (P > 0.05) % % 标记1颗星的位置,意味着置信水平是95%

之后我们在原先的结果上标出相应的显著性水平,标记3颗星的位置,意味着置信水平是99%,标记2颗星的位置,意味着置信水平是95%,标记1颗星的位置,意味着置信水平是95%。显著性水平=1-置信水平,这里代表着相关系数显著为0的显著性。则置信水平越高,显著性越低,越不可能为0。

可以发现,那几个显著不为0的相关系数绝对值都不>0.8,说明这几项指标两两之间并没有明显的线性关系。

事实上,对相关系数进行假设检验,还要求相关的指标变量一定程度上服从正态分布。对于大样本(n>30),我们使用JB检验,原假设是服从正态,备择假设是不服从正态,之后调用matlab的jbtest函数。

[h,p] = jbtest(Test(:,1),0.05)

[h,p] = jbtest(Test(:,1),0.01)

% 用循环检验所有列的数据

n_c = size(Test,2); % number of column 数据的列数

H = zeros(1,6); % 初始化节省时间和消耗

P = zeros(1,6);

for i = 1:n_c

[h,p] = jbtest(Test(:,i),0.05);

H(i)=h;

P(i)=p;

end

disp(H)

disp(P)

对于小样本,可以使用

检验,SPSS上面有。

喵这里就先不讲spss的具体操作了,需要录个简单的视频,最近没什么时间。等有空的时候我录屏演示一下。

好的,Pearson相关系数就说到这里。

spearman相关系数

定义

是两组数据,其spearman相关系数为

其中,

之间的等级差。

一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置,如果有的数值相同,则将它们所在的位置取算术平均。

上述公式就算得到。

另一种spearman相关系数,被定义为等级之间的Pearson相关系数,也就是上图中

的等级和

的等级那两列数据的相关系数。两种定义得到的spearman系数存在一定的差别。在Matlab中,计算spearman系数使用的是第二种定义方式。

%% 斯皮尔曼相关系数

X = [3 8 4 7 2]' % 一定要是列向量哦,一撇'表示求转置

Y = [5 10 9 10 6]'

% 第一种计算方法

1-6*(1+0.25+0.25+1)/5/24

% 第二种计算方法

coeff = corr(X , Y , 'type' , 'Spearman')

% 等价于:

RX = [2 5 3 4 1]

RY = [1 4.5 3 4.5 2]

R = corrcoef(RX,RY)

% 计算矩阵各列的斯皮尔曼相关系数

R = corr(Test, 'type' , 'Spearman')

spearman相关系数也需要假设检验,原假设也是

,我们可以直接用matlab求出相应的

值。

% 直接给出相关系数和p值

[R,P]=corr(Test, 'type' , 'Spearman')

斯皮尔曼相关系数表明

(独立变量) 和

(依赖变量)的相关方向,位于

之间。如果当

增加时,

趋向于增加,斯皮尔曼相关系数则为正。如果当

增加时,

趋向于减少,斯皮尔曼相关系数则为负。斯皮尔曼相关系数为零表明当

增加时

没有任何趋向性。当

越来越接近完全的单调相关时,斯皮尔曼相关系数会在绝对值上增加。当

完全单调相关时,斯皮尔曼相关系数的绝对值为 1。完全的单调递增关系意味着任意两对数据

,有

总是同号。完全的单调递减关系意味着任意两对数据

,有

总是异号。

嗯,spearman相关系数相对而言用的不是特别多,这里不做过多展开。

总结

以上就是相关系数我学到的全部内容啦,到这里已经写了四个小时了……其实是个很简单的话题,认真学也就一小时就大概搞懂了,没想到写起来这么费劲qwq。最后用一张清风老师的课件进行总结吧。如果本文对你有帮助的话,帮忙点个赞呗qwq。

matlab里面计算相关系系数的显著性,数学建模笔记——相关系数相关推荐

  1. 【MATLAB第3期】源码分享#数学建模常用算法程序整理

    - 本次分享内容包含神经网络.层次分析.移动平均.聚类.非线性优化问题.常微分方程问题.主成分分析.自动元胞机.图论.排队问题等. 本次分享MATLAB及PYTHON编程语言解决数学建模问题使用的基本 ...

  2. Matlab数学建模笔记

    文章目录 一.基础知识 1. 如何获取帮助 2.程序的分节与注释 3. 矩阵的基本操作 4.函数的创建与引用 5.快捷绘图方式 6.常用标点的功能 7.常用操作指令 8.Matlab开发模式 9.机器 ...

  3. matlab求动物繁殖问题,动物繁殖问题数学建模实验matlab程序.doc

    动物繁殖问题数学建模实验matlab程序 问题: 谋农场饲养的某种动物所能达到的最大年龄为15岁,将其分为三个年龄组:第一组0-5岁:第二组6-10岁:第三组11-15岁.动物从第二个年龄组开始繁殖后 ...

  4. matlab第六讲考试答案,社会实践 | 数学建模培训第六讲

    结良师益友,遇数学建模 时间如白马过隙,这已是建模培训的第六讲.早起晨练已成每日必不可少的调味剂.今日所讲:建模软件与应用.通过吴老师精彩的演讲,我了解了MATLAB及python软件的应用,学习非一 ...

  5. 列车matlab模型,【国家级精品课程】-中南大学-数学建模-lingo-matlab-优化建模-数模培训-全国赛论文-京沪线列车调度模型(B题)...

    [国家级精品课程]-中南大学-数学建模-lingo-matlab-优化建模-数模培训-全国赛论文-京沪线列车调度模型(B题) 答卷编号: 答卷编号: 论文题目: 京沪线列车调度模型(B题) 参赛队员: ...

  6. matlab篮球队需要五名队员,2016年数学建模暑期训练题目

    2016年武汉理工大学数学建模暑期培训练习题 1.编写MATLAB 和lingo 程序求解下列方程(组) (1)4 x sin x cos x += (2) x x 24-= (3)求方程 ()074 ...

  7. matlab document 改成中文,网上下载的数学建模模板为何无法编译,已经把document设置成utf8...

    % !Mode:: "TeX:UTF-8" %!TEX program  = xelatex \documentclass{cumcmthesis} %\documentclass ...

  8. 数学建模笔记(十一):统计模型(MATLAB计算,函数参数解释待补充)

    文章目录 一.概述 二.参数估计--区间估计 1.糖果称重(求总体均值 μ \mu μ的双侧置信区间) (一)根据公式计算结果 (二)直接使用 t t e s t ( ) ttest() ttest( ...

  9. 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 插值算法 一.插值法的定义 1.插值函数一共有三种: 2.多项式插值法原理 3.分段插值法原理: 4.具体如何求插值函数呢? (1) ...

  10. matlab二维画图函数汇总--论文,数学建模中使用

    一段代码对应相应的图形: %matlab基本画图 clc clear x = linspace(-2*pi,2*pi,100); y = sin(x); %画出基本线条 plot(x,y); %画出多 ...

最新文章

  1. 让word不显示计算机名作者,如何使word在其他电脑上也不显示回车符
  2. 组复制官方翻译五、Group Replication Security
  3. 简单linux蠕虫,清除Linux系统上的蠕虫程序Ramen
  4. maven中把依赖的JAR包一起打包(转)
  5. mandatory oracle 字段,Oracle 数据库需要在2019年April之前Mandatory升级的说明
  6. 掌握 Ajax,第 11 部分: 服务器端的 JSON
  7. mysqld --initialize --console 没有 打印信息_JavaScript设计模式--装饰者模式
  8. 一步一步完成坦克大战:一、游戏关键难点实现
  9. 朴素贝叶斯分类器python_朴素贝叶斯算法的python实现 -- 机器学习实战
  10. MySQL讲义第 48 讲——select 查询之查询练习(六)
  11. 快速批量删除新浪微博内容
  12. Linux rm -rf * 文件恢复记
  13. 学生成长画像系统前端的一些感悟和知识积累
  14. 朱子治家格言(清朝·朱柏庐)
  15. python随机排列图片_更改图片中的随机像素,python
  16. Opencv中,椭圆拟合后,得到该椭圆方程系数。
  17. kali-linux-2018.2-i386.iso
  18. java定义负数_java定义一个负数
  19. J-K触发器的工作原理
  20. Linux操作系统搭建51单片机开发环境(国产桌面操作系统deepin)

热门文章

  1. CodeForces - 988D(思维STL)
  2. 第 22 届 IOCCC 获胜者作品源代码公布
  3. 实习商汤,校招华为,我的深度学习之路
  4. 扩展切比雪夫多项式(混沌映射, Chebyshev chaotic map)
  5. 电力拖动(工厂电气控制)实验装置
  6. mysql8.0怎么设置中文版_mysql 8.0.21免安装版配置方法图文教程
  7. linux阅读文件格式,Linux下安装boox viewer阅读pdg格式文件
  8. 关于win10不能修改ip问题
  9. 怎样改变计算机桌面的特效主题,教你如何更改电脑主题,桌面,图标,系统主题 - 飞机城社区论坛 - 阎良论坛 飞机城论坛,......
  10. win7安装注意事项及一些美化设置