相关系数及其假设检验——matlab及spss实现

数学建模中,相关性分析往往是建模的前提。但是,相关系数是数学建模中最容易出错滥用的点,需要注意不同相关系数的使用条件。

一.Pearson相关系数及其假设性检验

1.1 Pearson相关系数的定义及计算

(1)总体的Pearson相关系数

 (2)样本的Pearson相关系数

 (3)Pearson相关系数的误区:

  • 理解误区1——散点图和皮尔逊相关系数的联系(垂直x轴或者垂直y轴时,Person相关系数计算为零)<—— Person相关系数只是用来衡量线性相关程度的指标,只有确定了两个变量是线性相关的,这个相关系数才能用来衡量相关程度
  • 易错点1——非线性相关也会导致线性相关系数很大—>Person相关系数高不能证明具有线性相关性
  • 易错点2——离群点对相关系数的影响很大->用Person相关系数进行分析时,考虑去除异常值
  • 易错点3——如果两个变量的相关系数高也不能说明两者相关->Person相关系数高不能证明线性函数具有很大相关性,也有可能是受到异常值影响
  • 易错点4——Person相关系数计算结果为零,不能认为没有相关性,也许有比线性相关更复杂的相关性

总而言之,Pearson相关系数能够有力使用的前提是

  • 该相关系数只能识别简单的线性相关关系,无法处理非线性相关关系;
  • 对异常值(或离群点)和样本容量较为敏感;
  • 要求研究的变量是数值变量,且变量符合或较为接近正态分布。
  • 每组样本之间是独立抽样的(需要加在论文假设前提里)

相关系数的大小能够说明两者的相关程度,但我们往往更关注相关系数的显著性。

1.2 Pearson相关系数的假设性检验

(1)假设检验的步骤

  1. 确定原假设:相关系数为0(即两个变量不相关)和备择假设:相关系数不为0(即两个变量可能相关)
  2. 在原假设成立的条件下,构造一个统计量,该统计量有一个分布
  3. 画出概率密度函数图
  4. 给一个置信水平β,求出接受域
  5. 用已知的样本数据代入计算统计量,得到检测值,若检测值落在接受域内,则无法拒绝原假设,否则拒绝原假设

(2)pearson相关系数的假设性检验

对pearson相关系数r而言,我们构造统计量t=r\sqrt{\frac{n-2}{1-r^{2}}}t是服从自由度为n-2t分布

查表:t分布表T分布表 - 百度文库

但我们一般不用查表法,而用p值判断法:利用检测值t,计算出对应的概率

单边检验

p=1-tcdf(t^{*},n-2)

双边检验

p=(1-tcdf(t^{*},n-2))*2

用计算出的概率值p与0.01,0.05,0.10比较:

显著性越小,在更大的概率上,两者可能存在相关关系。即***越多,显著性越强,这个相关系数的置信程度越大。

1.3 正态分布的假设检验

(1)JB检验(Jarque-Bera test)

条件:

大样本 n>30

matlab实现:

[h,p]=jbtest(x,alpha)% x是向量,alpha是显著性水平

jb检验只能一组一组进行检验
h=1时拒绝原假设,即不满足正态分布
h=0时接受原假设,即满足正态分布

(2)Shapiro-wilk检验

条件:

小样本 3<=n<=50

SPSS实现:

分析->描述统计->探索->图,含检验的数据图

(3)QQ图

条件:

数据量非常大

matlab实现:

qqplot(Test(:,1))

只能一列一列进行检验

1.4 matlab及spss实现

(1)描述性分析

1.matlab

 例如,min(Test)计算每一列的最小值。注意,基本统计量的自变量可以是矩阵。

2.SPSS

分析->描述统计->描述

(2)矩阵的散点图

散点图可以初步确定变量是否有线性相关性,我们需要画出C_{n}^{2}个变量的散点图。

用SPSS比较方便:

图形->旧对话框->散点图/点图->矩阵散点图

(3)Pearson相关系数的计算

matlab实现

R = corrcoef(Test)

Test可以是个矩阵

R = corrcoe(A,B)

A,B在这里必须是两个向量

(4)Pearson相关系数假设性检验的t统计量的计算

matlab实现

[R,P]=corrcoef(Test)

也就是说corr()可以同时给出相关系数和p值

画出t分布的图

x=-4:0.1:4

y=tpdf(x,28)

plot(x,y,'-')

grid on % 加上网格线

(5)美化相关系数表,美化p值表

1.相关系数表

a.EXCEL行列调成适合的大小,字号,对齐方式

b.选中相关系数表,开始-条件格式-色阶

c.选中相关系数表,条件格式-管理规则-编辑规则

2.显著性表

a.EXCEL行列调成适合的大小,字号,对齐方式

b.matlab筛选出矩阵,excel手动给表格加*

matlab命令

P<0.01

(P<0.05).*(P>0.01)

(P<0.1).*(P>0.05)

二.Spearman等级相关系数及其假设检验

2.1 Spearman相关系数的定义及计算

也可以定义成等价之间的pearson相关系数。 

2.2 Spearman相关系数的假设性检验

(1)小样本

直接查临界值表(即系数本身就服从某种分布)

 (2)大样本

r_{s}\sqrt{n-1}\sim N(0,1)

2.3 matlab及spss实现

(1)描述性分析

1.matlab

 例如,min(Test)计算每一列的最小值。注意,基本统计量的自变量可以是矩阵。

2.SPSS

分析->描述统计->描述

(2)SPearsman相关系数的计算

matlab实现:

定义一

corr(X,Y,'type','Spearman')I
X,Y必须是列向量
corr(X,'type','Spearman')
计算X矩阵之间的spearman相关系数

定义二

RX=[2 5 3 4 1]

RY=[1 4.5 3 4.5 2]

R = corrcoef[RX,RY]

(3)计算Spearman相关系数的p值

matlab实现

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

也就是说corr()可以同时给出相关系数和p值

(4)美化相关系数表,美化p值表

1.相关系数表

a.EXCEL行列调成适合的大小,字号,对齐方式

b.选中相关系数表,开始-条件格式-色阶

c.选中相关系数表,条件格式-管理规则-编辑规则

2.显著性表

a.EXCEL行列调成适合的大小,字号,对齐方式

b.matlab筛选出矩阵,excel手动给表格加*

P<0.01

(P<0.05).*(P>0.01)

(P<0.1).*(P>0.05)

三.总结

  1. 连续数据,正态分布,线性关系,用pearson相关系数是最恰当的
  2. 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数
  3. 两个定序数据也用spearman相关系数,不能用pearson相关系数
  4. 90%都用spearman相关系数
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: person相关系数是一种用于衡量两个变量之间线性关系强度的统计量,常用于数据分析和机器学习中。在MATLAB中,可以使用corrcoef函数来计算person相关系数。该函数的语法如下: r = corrcoef(X,Y) 其中,X和Y是两个向量或矩阵,r是一个2x2的矩阵,其中r(1,2)和r(2,1)表示X和Y之间的person相关系数。如果X和Y都是向量,则r是一个标量。如果X和Y都是矩阵,则r是一个2x2的矩阵,其中r(1,1)和r(2,2)分别表示X和Y的方差,r(1,2)和r(2,1)表示X和Y之间的person相关系数。 ### 回答2: 相关系数是一种衡量两组变量之间线性关系强度的方法。在 Matlab 中,可以使用 corr 函数来计算相关系数。corr 函数还可以返回相关矩阵,矩阵中的每一个元素都是两个变量之间的相关系数。 corr 函数的基本语法如下: ```Matlab R = corr(X,Y) ``` 其中,X 和 Y 为两个向量或矩阵,R 为相关系数或相关矩阵。如果 X 和 Y 都是向量,则 corr 函数返回它们的 Pearson 相关系数(也称为线性相关系数)。如果 X 和 Y 都是矩阵,则 corr 函数默认求每一列之间的相关系数,返回一个相关矩阵。 除了 Pearson 相关系数,corr 函数还可以计算 Spearman 相关系数和 Kendall 相关系数。Spearman 相关系数是一种基于等级的相关系数,适用于数据不满足正态分布的情况。Kendall 相关系数是一种非参数的相关系数,适用于数据不满足线性关系的情况。 对于大规模数据集,计算相关矩阵可能会耗费大量的计算时间和内存。Matlab 提供了 corrcoef 函数用于计算相关矩阵,该函数使用一种更高效的算法来处理大型数据集。 除此之外,Matlab 还提供了许多其他相关性分析的函数和工具箱,包括 partialcorr 函数用于计算偏相关系数、cftool 工具箱用于拟合曲线和计算相关系数等等。这些功能的使用可以根据具体的应用场景进行选择。 ### 回答3: 相关系数是一种统计方法,用于衡量两个变量之间的相关程度。在MATLAB中,计算相关系数的函数是「corrcoef」。这个函数可以计算两个变量之间的皮尔逊相关系数、斯皮尔曼相关系数、Kendall Tau相关系数等多种相关系数。下面将以皮尔逊相关系数为例来介绍相关系数的计算过程。 皮尔逊相关系数是衡量两个变量之间线性关系强度的一种方法。它的取值范围为-1到1之间,其中1表示完全正相关,-1表示完全负相关,0表示没有相关关系。在MATLAB中,通过调用「corrcoef」函数并传入两个向量即可计算皮尔逊相关系数。 例如,我们有两个向量x和y: x = [1, 2, 3, 4, 5]; y = [2, 3, 4, 5, 6]; 我们可以使用「corrcoef」计算它们之间的皮尔逊相关系数: R = corrcoef(x, y); r = R(1, 2) 计算结果为: r = 1 说明x和y之间存在完全正相关关系。 当然,如果我们想要计算斯皮尔曼相关系数或Kendall Tau相关系数,只需要将相应参数传给「corrcoef」函数即可。 MATLAB中的「corrcoef」函数还可以计算多维数组之间的相关系数。此时,需要将多维数组展开成二维数组,并将每一维视为一个变量进行计算。举个例子,我们有一个三维数组A: A(:,:,1) = [1, 2, 3; 4, 5, 6]; A(:,:,2) = [2, 3, 4; 5, 6, 7]; 我们可以将A展开成一个二维数组B,并使用「corrcoef」函数计算相关系数: B = reshape(A, [], size(A, 3)); R = corrcoef(B); R 计算结果为: R = 1.0000 0.9819 0.9819 1.0000 其中R(1, 2)和R(2, 1)分别表示数组A的第一个维度和第二个维度之间的相关系数。 综上所述,MATLAB中可以使用「corrcoef」函数计算多种相关系数,包括皮尔逊相关系数、斯皮尔曼相关系数、Kendall Tau相关系数等。当处理多维数组时,需要将数组展开成二维数组,并将每一维视为一个变量进行计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值