目录
相关系数
两种最为常用的相关系数:皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数。它们可用来衡量两个变量之间的相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析(建模论文中最容易用错的方法)。
皮尔逊相关系数
1.总体皮尔逊相关系数
假设有两个变量X、Y,那么两变量间的皮尔逊相关系数可通过以下公式计算:
皮尔逊相关系数也可以看成是剔除了两个变量量纲影响,即将X和Y标准化后的协方差。
2.样本皮尔逊相关系数
3.相关理解
- 这里的相关系数只是用来衡量两个变量线性相关程度的指标;也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能告诉你他俩相关程度如何。
- 非线性相关也会导致线性相关系数很大,例如图2。
- 离群点对相关系数的影响很大,例如图3,去掉离群点后,相关系数为0.98。
- 如果两个变量的相关系数很大也不能说明两者相关,例如图4,可能是受到了异常值的影响。
- 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关),例如图5。
如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱;
在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,我们一定要画出散点图来看才行。
4. 矩阵散点图
在计算皮尔逊相关系数之前,一定要做出散点图来看两组变量之间是否有线性关系
使用Spss : 图形 ‐ 旧对话框 ‐ 散点图/点图 ‐ 矩阵散点图
5.皮尔逊相关系数计算
使用corrcoef函数(correlation coefficient相关系数)
R = corrcoef(A)
R = corrcoef(A,B)
返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。
返回两个随机变量 A 和 B (两个向量)之间的系数。
6.使用EXCEL美化相关系数表
7.对皮尔逊相关系数进行假设检验
方法一:
- 在原假设条件成立的情况下,利用被检测的量构造出一个符合某一分布的统计量
- 将检验的值代入统计量中,得到特定的值(检验值t^*)
- 根据统计量的分布情况,绘制该分布的概率密度函数 pdf,并给定一个置信水平,根据置信水平查表寻找临界值,画出检验统计量的接受域和拒绝域。
- 判断t^*在拒绝域还是接受域
x = -4:0.1:4;
y = tpdf(x,28); %用于画t分布的pdf
plot(x,y,'-')
grid on % 在画出的图上加上网格线
方法二:p值判断法
得到检验值后根据这个值计算其对应的概率,再用1减去这个数得到p值
disp('该检验值对应的p值为:')
disp((1-tcdf(3.055,28))*2) %双侧检验的p值要乘以2,单侧的不用
%tcdf : 累积分布函数
8.计算相关系数和p值
[R,P] = corrcoef(Test)
R返回的是相关系数表,P返回的是对应于每个相关系数的p值
%% 计算各列之间的相关系数以及p值
[R,P] = corrcoef(Test)
% 在EXCEL表格中给数据右上角标上显著性符号
P < 0.01 % 标记3颗星的位置
(P < 0.05) .* (P > 0.01) % 标记2颗星的位置
(P < 0.1) .* (P > 0.05) % 标记1颗星的位置
标注:
- 没有星星表示不显著
- *(一颗星星)表示在置信水平为90%时显著异于零,p值小于0.1
- **(两颗星星)表示在置信水平为95%时显著异于零,p值小于0.05
- ***(三颗星星)表示在置信水平为99%时显著异于零,p值小于0.01
9.皮尔逊检验的条件
- 实验数据通常假设是成对的来自于正态分布的总体。(最重要)
- 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较大。
- 每组样本之间是独立抽样的。构造t统计量时需要用到。
检验正态分布:
雅克‐贝拉检验(Jarque‐Bera test)(大样本n>30)
偏度和峰度:
偏度≈0时,可认为分布是对称的,服从正态分布,峰度=3
matlab实现:
MATLAB中进行JB检验的语法
[h,p] = jbtest(x,alpha)
- 当输出 h =1时,表示拒绝原假设(不是正态分布),h=0则代表不能拒绝原假设(正态分布)。
- p代表了 p值
- alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
x就是我们要检验的随机变量,注意这里的x只能是向量。
%% 正态分布检验
% 检验第一列数据是否为正态分布
[h,p] = jbtest(Test(:,1),0.05)
% 用循环检验所有列的数据
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):
Shapiro‐wilk夏皮洛‐威尔克检验
H 0 : 该 变 量 服 从 正 态 分 布
H 1 : 该 变 量 不 服 从 正 态 分 布
计算出威尔克统计量,得到相应的 p 值m将 p值与显著性水平比较,如果小于就可以拒绝H0
Q-Q图检验:
如果要检验的随机变量是正态分布,那么QQ图就是一条直线。要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)
SPSS生成Q-Q图:
MATLAB生成Q-Q图:
qqplot(Test(:,1)) %第一列数据和正态分布的Q-Q图
符合正态分布的点非常贴合于一条直线,首尾没有分散的现象。
斯皮尔曼spearman相关系数
1.第一定义
注:如果有的数值相同,则将它们所在的位置取算术平均((4+5)/2)
2.第二定义
- 斯皮尔曼相关系d数被定义成等级变量之间的皮尔逊相关系数。
- 可以用MATLAB中求解皮尔逊相关系数的函数求解斯皮尔曼相关系数。
- MATLAB中计算斯皮尔曼相关系数
corr(X , Y , ‘type’ , ‘Spearman’) %这里的X和Y必须是列向量哦~ corr(X , ‘type’ , ‘Spearman’) %这时计算X矩阵各列之间的斯皮尔曼相关系数
X = [3 8 4 7 2]' % 一撇表示求转置 Y = [5 10 9 10 6]'% coeff = corr(X , Y , 'type' , 'Spearman')
3.斯皮尔曼相关系数的假设检验
小样本情况,即𝒏 ≤𝟑𝟎时,直接查临界值表即可。
大样本:
两个相关系数的选择
- 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,用spearman相关系数也可以, 就是效率没有pearson相关系数高。
- 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
- 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。(一般情况下都用斯皮尔曼相关系数)
定序数据是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;
我们可以用1表示差、2表示良、3表示优,但用2除以1得出的2并不代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。
注:斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只要数据满足单调关系(例如线性函数、指数函数、对数函数等)就能够使用。
%% 斯皮尔曼相关系数
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')
% 大样本下的假设检验
% 计算检验值
disp(sqrt(590)*0.0301)
% 计算p值
disp((1-normcdf(0.7311))*2) % normcdf用来计算标准正态分布的累积概率密度函数
% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
% % 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
% % 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭