相关系数
本文介绍两种最为常用的相关系数:皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数。它们可用来衡量两个变量之间的相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析(建模论文中最容易用错的方法)。
描述性统计
- 使用MATLAB
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] %将这些统计量放到一个矩阵中表示
- 使用EXCEL
- 使用SPSS
Pearson相关系数
- 总体Pearson相关系数
假设有两个变量X、Y,那么两变量间的皮尔逊相关系数可通过以下公式计算:
可以证明
∣
ρ
X
Y
∣
≤
1
|\rho_{XY}|\leq1
∣ρXY∣≤1,且当
Y
=
a
X
+
b
Y=aX+b
Y=aX+b时,
ρ
X
Y
=
{
1
,
a
>
0
−
1
,
a
<
0
\rho_{XY}=\{ { 1, a>0 \atop -1,a<0}
ρXY={−1,a<01,a>0
皮尔逊相关系数也可以看成是剔除了两个变量量纲影响,即将X和Y标准化后的协方差。
- 样本Pearson相关系数
样本皮尔逊Pearson相关系数
- 相关理解
上面四个散点图对应的数据的皮尔逊相关系数均为0.816
- 非线性相关也会导致线性相关系数很大
- 离群点对相关系数的影响很大
- 如果两个变量的相关系数很大也不能说明两者相关,可能是受到了异常值的影响。
- 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关)
如果两个变量本身就是线性的关系,那么皮尔逊相关系数绝对值大的就是相关性强,小的就是相关性弱。 在不确定两个变量是什么关系的情况下,即使算出皮尔逊相关系数,发现很大,也不能说明那两个变量线性相关,甚至不能说他们相关,一定要画出散点图来看才行
-
矩阵散点图
在计算皮尔逊相关系数之前,一定要做出散点图来看两组变量之间是否有线性关系
使用Spss : 图形 ‐ 旧对话框 ‐ 散点图/点图 ‐ 矩阵散点图 -
皮尔逊相关系数的计算
使用corrcoef
函数(correlation coefficient相关系数)R = corrcoef(A)
返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。R = corrcoef(A,B)
返回两个随机变量 A 和 B (两个向量)之间的系数。
-
使用EXCEL美化相关系数表
-
对皮尔逊相关系数进行假设检验
- 方法一
- 提出原假设 H 0 H_0 H0和备择假设 H 1 H_1 H1。 H 0 : r = 0 H 1 : r ≠ 0 \ \ \ \ \ \ \ H_0:r=0\ \ \ \ \ H_1:r\neq0 H0:r=0 H1:r=0
- 在原假设成立的条件下,利用被检测的量构造出一个符合某一分布的统计量
统计量相当于被检验的量的一个函数,里面不可以有其他的随机变量。
其中分布一般有四种:标准正态分布, t t t分布, X 2 X^2 X2 分布, F F F分布
对于皮尔逊相关系数 r r r而言,在满足一定条件下,可以构造统计量: t = r n − 2 > 1 − r 2 t=r\sqrt{\frac{n-2}>{1-r^2}} t=r>n−21−r2, t t t是服从自由度为 n − 2 n-2 n−2的 t t t分布- 将检验的值代入统计量中,得到特定的值(检验值 t ∗ t^* t∗)
- 根据统计量的分布情况,绘制该分布的概率密度函数
p
d
f
pdf
pdf,并给定一个置信水平,根据置信水平查表寻找临界值,画出检验统计量的接受域和拒绝域。
x = -4:0.1:4; y = tpdf(x,28); %用于画t分布的pdf plot(x,y,'-') grid on % 在画出的图上加上网格线
- 判断 t ∗ t^* t∗在拒绝域还是接受域
- 方法二
得到检验值后根据这个值计算其对应的概率,再用1减去这个数得到 p p p值disp('该检验值对应的p值为:') disp((1-tcdf(3.055,28))*2) %双侧检验的p值要乘以2,单侧的不用 %tcdf : 累积分布函数
p < 0.01 p<0.01 p<0.01, 说明在 99 % 99\% 99%的置信水平上拒绝原假设
p < 0.05 p<0.05 p<0.05, 说明在 95 % 95\% 95%的置信水平上拒绝原假设
p < 0.10 p<0.10 p<0.10, 说明在 90 % 90\% 90%的置信水平上拒绝原假设
p > 0.01 p>0.01 p>0.01, 说明在 99 % 99\% 99%的置信水平上无法拒绝原假设
p > 0.05 p>0.05 p>0.05, 说明在 95 95% 95的置信水平上无法拒绝原假设
p > 0.10 p>0.10 p>0.10, 说明在 90 % 90\% 90%的置信水平上无法拒绝原假设 -
显著性标记
- 没有星星表示不显著
- *(一颗星星)表示在置信水平为90%时显著异于零,p值小于0.1
- **(两颗星星)表示在置信水平为95%时显著异于零,p值小于0.05
- ***(三颗星星)表示在置信水平为99%时显著异于零,p值小于0.01
%% 计算各列之间的相关系数以及p值
[R,P] = corrcoef(Test)
% 在EXCEL表格中给数据右上角标上显著性符号
P < 0.01 % 标记3颗星的位置
(P < 0.05) .* (P > 0.01) % 标记2颗星的位置
(P < 0.1) .* (P > 0.05) % 标记1颗星的位置
Matlab计算的是双侧检验的p值,如果需要单侧的话只需要除以2即可。
- 皮尔逊相关系数假设检验的条件
- 实验数据通常假设是成对的来自于正态分布的总体。(最重要)
- 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较大。
- 每组样本之间是独立抽样的。构造t统计量时需要用到。
检验正态分布
正态分布JB检验(大样本 n > 30 n>30 n>30)
-
雅克‐贝拉检验(Jarque‐Bera test)
H 0 : 该 变 量 服 从 正 态 分 布 H_0 : 该变量服从正态分布 H0:该变量服从正态分布
H 1 : 该 变 量 不 服 从 正 态 分 布 H_1 : 该变量不服从正态分布 H1:该变量不服从正态分布 -
偏度和峰度
当偏度≈0时,可认为分布是对称的,服从正态分布
正态分布的峰度为3
- 使用MATLAB检验
MATLAB中进行JB检验的语法:[h,p] = jbtest(x,alpha)
当输出 h h h 等于1时,表示拒绝原假设(不是正态分布), h h h 等于0则代表不能拒绝原假设(正态分布)。
p p p 代表了 p p p 值
a l p h a alpha alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95
x x 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检验(小样本 n ≤ 3 ≤ 50 n\leq 3\leq 50 n≤3≤50)
- Shapiro‐wilk夏皮洛‐威尔克检验
H 0 : 该 变 量 服 从 正 态 分 布 H_0 : 该变量服从正态分布 H0:该变量服从正态分布
H 1 : 该 变 量 不 服 从 正 态 分 布 H_1 : 该变量不服从正态分布 H1:该变量不服从正态分布 - 计算出威尔克统计量,得到相应的 p p p 值m将 p p p 值与显著性水平比较,如果小于就可以拒绝 H 0 H_0 H0,反之接受 H 0 H_0 H0
Q-Q图检验
如果要检验的随机变量是正态分布,那么QQ图就是一条直线。要利用Q‐Q图鉴别样本数据是否近似于正态分布,只需看Q‐Q图上的点是否近似地在一条直线附近。(要求数据量非常大)
- SPSS生成Q-Q图
- MATLAB生成Q-Q图
qqplot(Test(:,1)) %第一列数据和正态分布的Q-Q图
符合正态分布的点非常贴合于一条直线,首尾没有分散的现象。
斯皮尔曼spearman相关系数
-
第一种定义
对于样本容量为 n n n的样本, X X X和 Y Y Y为两组数据, d i d_i di为 X i X_i Xi和 Y i Y_i Yi之间的等级差,相关系数
r s = 1 − 6 ∑ i = 1 n d i 2 n ( n 2 − 1 ) r_s=1-\frac{6\displaystyle\sum^{n}_{i=1}d_i^2}{n(n^2-1)} rs=1−n(n2−1)6i=1∑ndi2
r s r_s rs位于 − 1 -1 −1和 1 1 1之间。
(等级为把一个数所在的列从小到大的排序后这个数所在位置,如果数值相同,就取算术平均) -
第二种定义
- 斯皮尔曼相关系d数被定义成等级变量之间的皮尔逊相关系数。
- 可以用MATLAB中求解皮尔逊相关系数的函数求解斯皮尔曼相关系数。
corrcoef(RX,RY)
此处RX
RY
是等级
-
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')
MATLAB使用第二种定义
- 小样本情况下(n ≤ 30 \leq 30 ≤30),将斯皮尔曼系数值和临界值表中的比较即可 ( r r r大于临界值可以得出显著结论)
- 大样本情况下,统计量
r
s
n
−
1
∼
N
(
0
,
1
)
r_s\sqrt{n-1} \sim N(0,1)
rsn−1∼N(0,1)
H 0 : r s = 0 H_0 : r_s=0 H0:rs=0, H 1 : r s ≠ 0 H_1 : r_s\neq 0 H1:rs=0,计算出 r s n − 1 r_s\sqrt{n-1} rsn−1,求出对应的 p p p 值与显著性水平相比。
% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
两个相关系数的选择
- 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,用spearman相关系数也可以, 就是效率没有pearson相关系数高。
- 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
- 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。
(一般情况下都用斯皮尔曼相关系数)
定序数据是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;
我们可以用1表示差、2表示良、3表示优,但用2除以1得出的2并不代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。