栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

07【其他类】模型——相关性分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

07【其他类】模型——相关性分析

07【其他类】模型——相关性分析

目录

一、引述

二、Person相关系数

2.1 总体和样本

2.1.1 总体person相关系数

2.1.2 样本person相关系数 

2.2  线性相关问题

2.2.1 相关系数不为0不等于线性相关

2.2.2 对于本例各变量之间的散点图

2.3 正态分布检验

2.3.1 JB检验

2.3.2 夏皮洛‐威尔克检验

2.3.3 Q_Q图 

2.4 求相关系数并假设检验 

2.4.1 假设检验的前提条件

2.4.2 假设检验的步骤

三、斯皮尔曼相关系数

3.1 斯皮尔曼相关系数的定义

3.1.1 第一种定义

3.1.2 第二种定义

3.2 假设检验

四、Person与斯皮尔曼相关系数的比较

五、代码

六、总结


一、引述

皮尔逊 pearson相关系数和斯皮尔曼spearman等级相关系数。 它们可用来衡量两个变量之间的相关性的大小,根据 数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。

引例:现有某中学八年级所有女学生的体测样本数据,请见下表,试计算各变量之 间的皮尔逊相关系数。

表1-1 某中学八年级所有女学生的体测样本数据

二、Person相关系数

2.1 总体和样本

1. 总体——所要考察对象的全部个体叫做总体。 我们总是希望得到总体数据的一些特征(例如均值方差等)。

2. 样本——从总体中所抽取的一部分个体叫做总体的一个样本。

*由于总体数据过于庞大且难以计算,所以我们通过计算这些抽取的样本的统计量来估计总体的统计量: 例如使用样本均值、样本标准差来估计总体的均值(平均水平)和总体的标准差(偏离程度)。

2.1.1 总体person相关系数

2.1.2 样本person相关系数 

 疑问:计算总体Person系数的分母是n,为什么在计算样本Person相关系数时用的是n-1?

2.2  线性相关问题

相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何。通过绘制散点图可以很容易地判定两个数据对象x和y之间的相关性。

2.2.1 相关系数不为0不等于线性相关
图2-1 Person相关系数=0.816的四种散点图

图2-2 冰激凌与温度之间关系的散点图

1. 非线性相关也会导致线性相关系数很大,例如图2-1中的右上角。

2. 离群点对相关系数的影响很大,例如图2-1中的左下角,去掉离群点后,相关系数为0.98。

3. 如果两个变量的相关系数很大也不能说明两者相关,例如图2-1中的右下角,可能是受到 了异常值的影响。

4. 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关 关系(非线性相关),例如图5

2.2.2 对于本例各变量之间的散点图
图2-3 各变量之间的矩阵散点图

由该矩阵散点图可以看出大部分数据并没有线性相关性,所以就算出来的Person相关系数是没有意义的,并不能表示出两变量之间的相关强度。为了下面过程的进行,这里我们假设各变量之间是线性相关的。

根据散点图,什么样的才是线性相关,什么样的不是线性相关?

如果部分数据线性相关,部分数据线性不相关呢?可以用Person相关系数吗?

相关系数从-1到1 的散点图如下,可做参考,

图2-4 相关度从-1到1的散点图

2.3 正态分布检验

实验数据通常假设是成对的来自于正态分布的总体。因为我们在求皮尔逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验,而t检验是基于数据呈正态分布的假设的,因此我们需要检验数据是否呈正态分布。

2.3.1 JB检验

偏度和峰度: 

JB检验的步骤: 

  • 第一步: 
  • 第二步:   
  • 第三步:

注意:JB检验适用于大样本n>30,在matlab中有相应的函数jbtest可供调用。

2.3.2 夏皮洛‐威尔克检验

夏皮洛‐威尔克检验步骤:

  • 第一步:
  • 第二步:  
  • 第三步: 

注意:夏皮洛‐威尔克检验适用于小样本3<=n<=50,但在matlab中没有相应的函数可供调用,可用spss软件进行检验(分析->描述性统计->探索->...)。 

2.3.3 Q_Q图 

在统计学中,Q‐Q图(Q代表分位数Quantile)是一种通过比较两个概 率分布的分位数对这两个概率分布进行比较的概率图方法。首先选定分位数的对应概率区间集合,在此概率区间上,点(x,y)对应 于第一个分布的一个分位数x和第二个分布在和x相同概率区间上相同的分位数。

这里,我们选择正态分布和要检验的随机变量,并对其做出QQ图, 可想而知,如果要检验的随机变量是正态分布,那么QQ图就是一条直线。

qqplot(Test(:,1)画图如下,

图2-5 Q_Q图

 注意:要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)

2.4 求相关系数并假设检验 

为什么进行假设检验?

因为我们计算的相关系数是根据样本来对整体进行估计的,由于估计中抽样误差的存在,所以估计以后还需要进行有关的假设检验。

2.4.1 假设检验的前提条件

1. 实验数据通常假设是成对的来自于正态分布的总体。因为我们在求皮尔 逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验, 而t检验是基于数据呈正态分布的假设的。(相关检验方法在2.3有介绍)

2. 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较 大。

3. 每组样本之间是独立抽样的。构造t统计量时需要用到

2.4.2 假设检验的步骤
  • 第一步:                
  • 第二步:           
  • 第三步:         
  • 第四步:

  • 第五步:                      

注明:

  1. 置信水平β:即相信原假设成立的概率。
  2. 显著性水平α:即有多大可能拒绝原假设。其中β=1-α。
  3. 双侧检验和单侧检验
  4. p值判别法:上面的p值即[1-(3.05505除对应的概率值)]*2,如果是单侧检验就不用乘以2。之后与显著性水平α作比较,若小于α就拒绝原假设,反之接受原假设。

三、斯皮尔曼相关系数

3.1 斯皮尔曼相关系数的定义

3.1.1 第一种定义

 注明:如果有的数值相同,则将它们所在的位置取算术平均。

3.1.2 第二种定义

斯皮尔曼相关系数第二种定义为:斯皮尔曼关系数就是等级之间的皮尔逊相关系数

matlab中的代码如下,

RX = [2 5 3 4 1];

RY = [1 4.5 3 4.5 2];

R = corrcoef(RX,RY); %计算RX和RY的Person相关系数

或

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

Y = [5 10 9 10 6]'

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

3.2 假设检验

四、Person与斯皮尔曼相关系数的比较

1. 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用 spearman相关系数也可以, 就是效率没有pearson相关系数高。

2. 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。

3. 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。

(定序数据是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。)

4. 斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只要数据满足单调关系(例如线性函数、指数函数、对数函数等)就能够使用。

五、代码

//线性相关的检验(SPSS软件)

  • 第一步:导入数据                                              

                  
  • 第二步:选择“散点图”                                                                  

  • 第三步:选择“矩阵散点图”                                                                                                      

  •  第四步:得到矩阵散点图                                                                                      

//FileName:G_normTest.m

%% 正态分布检验——jb检验
clear;clc;
load 'physical fitness test.mat';
[n1,n2]=size(Test);%得到数据的行列大小
H=zeros(1,6);%初始化数据
P=zeros(1,6);
for i=1:n2%对每一列数据进行jb检验
    [h,p]=jbtest(Test(:,i),0.05);
    H(i)=h;
    P(i)=p;
end
disp(H);
disp(P);

%%注明:
% 1. MATLAB中进行JB检验的语法:[h,p] = jbtest(x,alpha)
% 当输出h等于1时,表示拒绝原假设;h等于0则代表不能拒绝原假设。
% alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
% x就是我们要检验的随机变量,注意这里的x只能是向量

//FileName:G_Person.m

%% Person相关系数
% 当各变量之间呈线性关系且各变量的数据成正态分布时使用Person相关系数
clear,clc;
load 'physical fitness test.mat';

%计算各列之间的Person相关系数以及p值
[R,P]=corrcoef(Test);%Test矩阵各列之间的Person相关系数
sign=P<0.05;%找到P值小于0.05的,即拒绝原假设的部分
disp(R);
disp(P);
disp(sign);

//FileName:G_Spearman.m

%% 斯皮尔曼相关系数
%当各变量不是线性相关或数据不连续、不成正态分布时可用斯皮尔曼相关系数
clear,clc;
load 'physical fitness test.mat';
[R,P]=corr(Test,'type','Spearman');%求斯皮尔曼相关系数以及p值
disp('R=');disp(R);
disp('P=');disp(P);
disp(P<0.05);

//模拟假设检验原理(这部分为拓展) 

%% 假设检验部分

% Person相关系数=0.5,构造的统计量t=rs*sqrt((n-2)/(1-rs^2)),自由度为n-2(28)
% 根据置信水平95%求接受域
clear,clc;
x=-4:0.1:4;
y=tpdf(x,28);%求t分布,自由度为28
%figure(1);
plot(x,y,"b-")
grid on

hold on
x_1=tinv(0.975,28);%求P(X<=x)=0.975对应的x值
y_1=tpdf(x_1,28);
plot([x_1,x_1],[0,y_1],"r-");
plot([-x_1,-x_1],[0,y_1],"r-");

% 求p值
t = 0.5*sqrt(28/(1-0.5^2));
p=(1-tcdf(t,28))*2; %tcd函数为tinv函数的反函数
disp(p<0.05);

%斯皮尔曼相关系数=0.5,构造统计量z=rs*sqrt(n-1)
x1=-4:0.1:4;
y1=normpdf(x1,0,1);
figure(2);
plot(x1,y1,'b-');
grid on

hold on
x1_1=norminv(0.975);
y1_1=normpdf(x1_1);
plot([-x1_1,-x1_1],[0,y1_1],'r-');
plot([x1_1,x1_1],[0,y1_1],'r-');

%计算p值
z=0.5*sqrt(30-1);
p1=(1-normcdf(z))*2;
disp(p1<0.05);

六、总结

本章节知识点总结如下图,

图5-1 本章节知识点流程图

疑问:

  1. 相关性分析在什么时候用?
  2. 相关系数的假设检验为什么是要显著于0? 
  3. t分布和t检验是什么?统计量如何构造的?
  4. 什么样的散点图才是线性的?

结束语:本文部分内容来自于B站“数学建模学习交流”以及疯学网数学建模系列教程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号