数学建模:6 相关系数

目录

选择哪个相关系数

总步骤

皮尔逊相关系数、假设检验

总体皮尔逊Pearson相关系数

样本皮尔逊Pearson相关系数

 皮尔逊相关系数注意点

 对相关系数大小的解释

皮尔逊相关系数假设检验的条件 

对数据进行正态分布检验:正态分布JB检验(大样本 n>30)

对数据进行正态分布检验:Shapiro-wilk夏皮洛‐威尔克检验(小样本3≤n≤50)

对数据进行正态分布检验:Q-Q图(大样本)(不推荐)

对皮尔逊相关系数进行假设检验

更好的方法:p值判断法

matlab计算相关系数及p值、得到显著性标记

SPSS显著性检验

Matlab计算描述性统计

Excel计算描述性统计

SPSS计算描述性统计

斯皮尔曼spearman相关系数

 MATLAB中计算斯皮尔曼相关系数

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

小样本 n<=30 检验斯皮尔曼相关系数的显著性:查表

大样本检验斯皮尔曼相关系数的显著性


选择哪个相关系数

斯皮尔曼相关系数和皮尔逊相关系数选择 :
  1. 连续数据、正态分布、线性关系,用pearson相关系数最恰当,用spearman相关系数也可以,效率没有pearson相关系数高。
  2. 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
  3. 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。

数学建模:6 相关系数_第1张图片

总步骤

目的:得到变量的相关系数、相关性

  1. 对数据进行描述性统计(笔记目录靠后部分 matlab、SPSS、excel)
  2. 在求皮尔逊相关系数前,先绘制数据的散点图,根据散点图粗略判断是否线性关系(用SPSS,步骤见笔记SPSS描述性统计)
  3. 满足线性关系,才可以计算皮尔逊相关系数 matlab:corrcoef函数
  4. 对数据进行正态性检验(大样本:JB 用matlab;小样本:Shapiro-wilk 用SPSS)
  5. 符合正态分布,才可以假设检验皮尔逊系数的显著性(matlab、spss)
  6. 连续数据、正态分布、线性关系 上述任一条件不满足,就用spearman相关系数
  7. 计算斯皮尔曼相关系数(matlab函数corr) 并 假设检验显著性(小样本查表、大样本假设检验p值判断)

皮尔逊相关系数、假设检验

总体皮尔逊Pearson相关系数

数学建模:6 相关系数_第2张图片

  • 协方差为正 - 正相关性:XY变化方向相同,即当X大于(小于)其均值时,Y 也大于(小于)其均值;
  • 协方差为负 - 负相关性:XY变化方向相反,即当X大于(小于)其均值时,Y 小于(大于)其均值,则协方差为负;
  • 如果XY变化方向之间相互无规律,即分子中有的项为正,有的项为负,那么累加后正负抵消,接近0

结论:协方差绝对值越接近 1 ,相关性越强;接近 0 ,相关性越弱

       但协方差的大小和两个变量的量纲有关,因此不适合直接做比较,消除量纲影响:将两个变量各自标准化后,再求协方差(即总体协方差除以两个变量的标准差)
标准化公式:  \frac{X_{i} - E(X)}{\sigma_{X}} 减去均值 除以标准差 —— 服从均值为0的正态分布
数学建模:6 相关系数_第3张图片

样本皮尔逊Pearson相关系数

与总体相关系数相比,是 n-1

数学建模:6 相关系数_第4张图片

 皮尔逊相关系数注意点

  1. 只能用来衡量两个变量线性相关程度必须先确认这两个变量是线性相关,不是线性相关不能用这个;
  2. 如何确定两变量线性相关:在求皮尔逊相关系数前,先绘制数据的散点图,根据散点图粗略判断是否线性关系;
  3. 计算出皮尔逊相关系数的绝对值很接近1:不能说明有很大相关性,因为可能受异常值、离群值的影响;
  4. 计算出皮尔逊相关系数的绝对值很接近0:只能说明没有线性相关性,可能存在非线性相关性

数学建模:6 相关系数_第5张图片

 对相关系数大小的解释

数学建模:6 相关系数_第6张图片

对相关系数的解释应依赖于具体的应用背景和目的
事实上,比起相关系数的大小,我们往往更关注的是显著性。 (假设检验)

皮尔逊相关系数假设检验的条件 

  1. 实验数据通常假设是成对的来自于正态分布的总体。在求皮尔逊相关性系数以后,通常还会用 检验之类的方法来检验皮尔逊相关性系数,检验是基于数据呈正态分布的假设的。(这个是最需要验证的条件:实验数据服从正态分布;后两个条件一般默认满足)
  2. 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较大。
  3. 每组样本之间是独立抽样的。构造t统计量时需要用到。

对数据进行正态分布检验:正态分布JB检验(大样本 n>30)

偏度和峰度:

数学建模:6 相关系数_第7张图片

matlab计算偏度和峰度:

x = normrnd(2,3,100,1); % 生成100*1的随机向量,每个元素是均值为2,标准差为3的正态分布
skewness(x)             %偏度
kurtosis(x)             %峰度

步骤:

  1. 构造JB统计量
  2. 进行假设检验、p值判断法

数学建模:6 相关系数_第8张图片

matlab将上述步骤封装到 jbtest 中:

%% 正态分布检验
% 检验第一列数据是否为正态分布
[h,p] = jbtest(Test(:,1),0.05)

% 当输出h等于1时,表示拒绝原假设;h等于0则代表不能拒绝原假设
% p是p值,p < 置信水平0.05 就不是正态分布
% alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
% x就是我们要检验的随机变量,注意这里的x只能是向量

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

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

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)

对数据进行正态分布检验:Shapiro-wilk夏皮洛威尔克检验(小样本3≤n≤50)

matlab没有实现这个,用SPSS:

数学建模:6 相关系数_第9张图片

得到的结果只要看最后一列显著性,这就是p值:小于置信水平0.05就不服从正态分布

数学建模:6 相关系数_第10张图片

对数据进行正态分布检验:Q-Q图(大样本)(不推荐)

原理:

       在统计学中, Q‐Q 图(Q代表分位数 Quantile )是一种通过比较两个概率分布的分位数对这两个概率分布进行比较的概率图方法。
       首先选定分位数的对应概率区间集合,在此概率区间上,点 (x,y) 对应于第一个分布的一个分位数x 和第二个分布在和 x 相同概率区间上相同的分位数。
      这里,我们选择正态分布要检验的随机变量,并对其做出 QQ 图,如果要检验的随机变量是正态分布,那么QQ 图就是一条直线。
关键:
        要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)

matlab函数:qqplot

数学建模:6 相关系数_第11张图片

对皮尔逊相关系数进行假设检验

  • 置信水平 β = 1 - α:相信原假设成立的概率
  • 显著性水平 α :有多大的可能拒绝原假设,又称犯第一类错误的概率(原假设正确、但我们却认为错了)

假设检验皮尔逊相关系数是否显著接近于0

原假设:r = 0 皮尔逊系数与0没有显著差异,相关性并不强

数学建模:6 相关系数_第12张图片

数学建模:6 相关系数_第13张图片

x = -4:0.1:4;
y = tpdf(x,28);  % 服从t分布的概率密度曲线
plot(x,y,'-')
grid on % 在画出的图上加上网格线
t 分布表 https://wenku.baidu.com/view/d94dbd116bd97f192279e94a.html
数学建模:6 相关系数_第14张图片

更好的方法:p值判断法

       根据检验值(把待检验的皮尔逊系数 r 带入到检验统计量后得到的值)得到该检验值对应的 p 值,该 p 值再与置信水平比较检验,p > 显著性水平,说明 p 落在接受域,接受假设

matlab代码:

disp((1-tcdf(3.055,28))*2) 
% tcdf(3.055,28):x=3.055处,自由度为28的累积分布函数
% x处累积分布函数:-∞到x区间对应的概率
% 双侧检验的p值要乘以2

数学建模:6 相关系数_第15张图片

matlab计算相关系数及p值、得到显著性标记

matlab 计算的是双侧检验的 p 值,单侧就手动除以2

%% 计算各列之间的相关系数以及双侧检验的p值,单侧就手动除以2

[R,P] = corrcoef(Test)

% 下面的运算得到01矩阵,1的位置就是显著性标志的位置
% 在EXCEL表格中手动加上显著性标记 *

P < 0.01 % 标记3颗星的位置
(P < 0.05) .* (P > 0.01) % 标记2颗星的位置
(P < 0.1) .* (P > 0.05) % 标记1颗星的位置

数学建模:6 相关系数_第16张图片

SPSS显著性检验

SPSS进行显著性标记:“双变量”选项

数学建模:6 相关系数_第17张图片

Matlab计算描述性统计

数学建模:6 相关系数_第18张图片

MIN = min(Test);               % 每一列的最小值
MAX = max(Test);               % 每一列的最大值
MEAN = mean(Test);             % 每一列的均值
MEDIAN = median(Test);         %每一列的中位数
SKEWNESS = skewness(Test);     %每一列的偏度
KURTOSIS = kurtosis(Test);     %每一列的峰度
STD = std(Test);               % 每一列的标准差
RESULT = [MIN;MAX;MEAN;MEDIAN;SKEWNESS;KURTOSIS;STD] 
%将这些统计量放到一个矩阵中表示

corrcoef函数: correlation coefficient相关系数
  R = corrcoef(A)  
返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。
  R = corrcoef(A,B)
返回两个随机变量 A 和 B (两个向量)之间的系数。 

Excel计算描述性统计

数学建模:6 相关系数_第19张图片

美化表:

数学建模:6 相关系数_第20张图片

数学建模:6 相关系数_第21张图片

SPSS计算描述性统计

在计算皮尔逊相关系数之前 , 一定要做出散点图来看两组变量之间是否有线性关系:
数学建模:6 相关系数_第22张图片

数学建模:6 相关系数_第23张图片

斯皮尔曼spearman相关系数

斯皮尔曼相关系数 定义1:下面的公式

数学建模:6 相关系数_第24张图片

 斯皮尔曼相关系数 定义2:斯皮尔曼 求的是这两列等级之间的 皮尔逊相关系数

数学建模:6 相关系数_第25张图片

 MATLAB中计算斯皮尔曼相关系数

两种用法
  1. corr(X , Y , 'type' , 'Spearman') 这里的X Y必须是列向量
  2. corr(X , 'type' , 'Spearman') 计算X矩阵各列之间的斯皮尔曼相关系数,matlab这一函数封装使用的是定义2的计算方式

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

小样本 n<=30 检验斯皮尔曼相关系数的显著性:查表

r < 表中的数值:假设成立,r 与 0没有显著性差异
数学建模:6 相关系数_第26张图片

大样本检验斯皮尔曼相关系数的显著性

p 值 大于 显著性水平,接受假设,相关系数与0没有显著性差别

数学建模:6 相关系数_第27张图片

 Matlab:

% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')

 SPSS:

       下表只需要相关系数那一行贴到论文中,因为包括了计算出的相关系数及显著性标志 * ;下面的双尾显著性水平就是 p 值,属于计算过程不需要贴入论文;第三行是样本个数

数学建模:6 相关系数_第28张图片

你可能感兴趣的:(数学建模,算法,数据分析)