目录
一、引述
二、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 某中学八年级所有女学生的体测样本数据
1. 总体——所要考察对象的全部个体叫做总体。 我们总是希望得到总体数据的一些特征(例如均值方差等)。
2. 样本——从总体中所抽取的一部分个体叫做总体的一个样本。
*由于总体数据过于庞大且难以计算,所以我们通过计算这些抽取的样本的统计量来估计总体的统计量: 例如使用样本均值、样本标准差来估计总体的均值(平均水平)和总体的标准差(偏离程度)。
疑问:计算总体Person系数的分母是n,为什么在计算样本Person相关系数时用的是n-1?
相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何。通过绘制散点图可以很容易地判定两个数据对象x和y之间的相关性。
1. 非线性相关也会导致线性相关系数很大,例如图2-1中的右上角。
2. 离群点对相关系数的影响很大,例如图2-1中的左下角,去掉离群点后,相关系数为0.98。
3. 如果两个变量的相关系数很大也不能说明两者相关,例如图2-1中的右下角,可能是受到 了异常值的影响。
4. 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关 关系(非线性相关),例如图5
由该矩阵散点图可以看出大部分数据并没有线性相关性,所以就算出来的Person相关系数是没有意义的,并不能表示出两变量之间的相关强度。为了下面过程的进行,这里我们假设各变量之间是线性相关的。
根据散点图,什么样的才是线性相关,什么样的不是线性相关?
如果部分数据线性相关,部分数据线性不相关呢?可以用Person相关系数吗?
相关系数从-1到1 的散点图如下,可做参考,
实验数据通常假设是成对的来自于正态分布的总体。因为我们在求皮尔逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验,而t检验是基于数据呈正态分布的假设的,因此我们需要检验数据是否呈正态分布。
偏度和峰度:
JB检验的步骤:
注意:JB检验适用于大样本n>30,在matlab中有相应的函数jbtest可供调用。
夏皮洛‐威尔克检验步骤:
注意:夏皮洛‐威尔克检验适用于小样本3<=n<=50,但在matlab中没有相应的函数可供调用,可用spss软件进行检验(分析->描述性统计->探索->...)。
在统计学中,Q‐Q图(Q代表分位数Quantile)是一种通过比较两个概 率分布的分位数对这两个概率分布进行比较的概率图方法。首先选定分位数的对应概率区间集合,在此概率区间上,点(x,y)对应 于第一个分布的一个分位数x和第二个分布在和x相同概率区间上相同的分位数。
这里,我们选择正态分布和要检验的随机变量,并对其做出QQ图, 可想而知,如果要检验的随机变量是正态分布,那么QQ图就是一条直线。
qqplot(Test(:,1)画图如下,
注意:要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)
为什么进行假设检验?
因为我们计算的相关系数是根据样本来对整体进行估计的,由于估计中抽样误差的存在,所以估计以后还需要进行有关的假设检验。
1. 实验数据通常假设是成对的来自于正态分布的总体。因为我们在求皮尔 逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验, 而t检验是基于数据呈正态分布的假设的。(相关检验方法在2.3有介绍)
2. 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较 大。
3. 每组样本之间是独立抽样的。构造t统计量时需要用到
注明:
- 置信水平β:即相信原假设成立的概率。
- 显著性水平α:即有多大可能拒绝原假设。其中β=1-α。
- 双侧检验和单侧检验
- p值判别法:上面的p值即[1-(3.05505除对应的概率值)]*2,如果是单侧检验就不用乘以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');
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);
本章节知识点总结如下图,
疑问:
- 相关性分析在什么时候用?
- 相关系数的假设检验为什么是要显著于0?
- t分布和t检验是什么?统计量如何构造的?
- 什么样的散点图才是线性的?
结束语:本文部分内容来自于B站“数学建模学习交流”以及疯学网数学建模系列教程