相关系数|皮尔逊和斯皮尔曼

总体皮尔逊相关系数

如果两组数据 X:\left \{ X_{1},X_{2},...,X_{n} \right \}Y:\left \{ Y_{1},Y_{2},...,Y_{n} \right \} 是总体数据,

那么总体均值:E\left ( X \right )=\frac{\sum_{i=1}^{n}X_{i}}{n}\: \: ,\: \: E\left ( Y \right )=\frac{\sum_{i=1}^{n}Y_{i}}{n}

总体协方差:Cov\left ( X,Y \right )=\frac{\sum_{i=1}^{n}\left ( X_{i}-E\left ( X \right ) \right )\left ( Y_{i}-E\left ( Y \right ) \right )}{n}

直观理解协方差: 如果 X Y 变化方向相同,即当 X 大于(小于)其均值时, Y
大于(小于)其均值,在这两种情况下,乘积为正。如果 X Y 的变化方向一直
保持相同,则协方差为正;同理,如果 X Y 变化方向一直相反,则协方差为负;
如果 X Y 变化方向之间相互无规律,即分子中有的项为正,有的项为负,那么
累加后正负抵消。

总体皮尔逊相关系数:\rho _{XY}=\frac{Cov\left ( X,Y \right )}{\sigma _{x}\sigma_{y}}

\sigma_{x}=\sqrt{\frac{\sum_{i=1}^{n}\left ( X_{i}-E\left ( X \right ) \right )^{2}}{n}}

皮尔逊相关系数也可以看成是剔除了两个变量量纲影响,即将 X Y 标准化后的协方差。
 
  1. 非线性相关会导致线性相关系数很大
  2. 离群点对相关系数的影响很大
  3. 如果两个变量的相关系数很大也不能说明两者相关,可能是受到了异常值的影响。
  4. 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关关系(非线性相关)

对相关系数大小的解释

相关性
无相关性 -0.09~0.0 0.0~0.09
弱相关性 -0.3~-0.1 0.1~0.3
中相关性 -0.5~-0.3 0.3~0.5
强相关性 -1.0~-0.5 0.5~1.0
clc,clear
a=rand(6,6);
r=corrcoef(a); %返回a的相关系数的矩阵
//b=rand(6,6);
//r2=corrcoef(a,b);  %返回a和b之间的系数

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

先提出原假设(为0)和备择假设(显著异于0)

对于相关系数r来说,我们构造统计量t=r\sqrt{\frac{n-2}{1-r^{2}}} (n为样本)

t是服从自由度为n-2的t分布

x=-4:0.1:4;
y=tpdf(x,28);
plot(x,y,'-')
grid on %加网格线

画出该分布的概率密度函数pdf后。给定95%的置信水平,找到临界值

T分布表 - 百度文库

画出检验统计量的接受域和拒绝域

比较t和临界值下结论(是否显著为0)

还可以使用p值判断法(推荐)

disp('该检验值对应的p值为:')
disp((1-tcdf(3.055,28))*2) %3.055为t值,28为n-2
%双侧检验的p值要乘以2

tcdf为累积分布函数

[r,p]=corrcoef(a);
%p返回的是对应于每个相关系数的p值
p<0.01             %***
(p<0.05).*(p>0.01) %**
(p<0.1).*(p>0.05)  %*

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

第一, 实验数据通常假设是成对的来自于正态分布的总体。 因为我们在求皮尔
逊相关性系数以后,通常还会用 t 检验之类的方法来进行皮尔逊相关性系数检验,
t 检验是基于数据呈正态分布的假设的。
%%正态分布JB检验(big sample)
%检验第一列数据是否为正态分布
[h,p] = jbtest(Test(:,1),0.05)
%用循环检验所有列的数据
n_c = size(Test,2); % number of column 数据的列数
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)

第二, 实验数据之间的差距不能太大。 皮尔逊相关性系数受异常值的影响比较
大。
第三:每组样本之间是独立抽样的。 构造 t 统计量时需要用到。

斯皮尔曼相关系数

定义两组数据 X:\left \{ X_{1},X_{2},...,X_{n} \right \}Y:\left \{ Y_{1},Y_{2},...,Y_{n} \right \}

其斯皮尔曼(等级)相关系数:

r_{s}=1-\frac{6\sum_{i=1}^{n}d_{i}^{2}}{n\left ( n^{2}-1 \right )}

其中d_{i}X_{i}Y_{i}之间的等级差。

一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置

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

clc,clear
x=[3 8 4 7 2]';     %列向量!
y=[5 10 9 10 6]';
coeff=corr(x,y,'type','spearman')

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

小样本(n\leq 30)查表

相关系数|皮尔逊和斯皮尔曼_第1张图片

大样本:

% 直接给出相关系数和p值
[R,P]=corr(a, 'type' , 'spearman')
p 值大于 0.05, 因此我们无法拒绝原假设。
(和 0 没有显著的差异)

两个相关系数的比较:

斯皮尔曼相关系数和皮尔逊相关系数选择 :
1. 连续数据,正态分布,线性关系,用 pearson 相关系数是最恰当,当然用
spearman 相关系数也可以, 就是效率没有 pearson 相关系数高。
2. 上述任一条件不满足,就用 spearman 相关系数,不能用 pearson 相关系数。
3. 两个定序数据之间也用 spearman 相关系数,不能用 pearson 相关系数。
定序数据 是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量
形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;
我们可以用 1 表示差、 2 表示良、 3 表示优,但请注意,用 2 除以 1 得出的 2 并不
代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。
注:斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只要数据满足单调关系
(例如线性函数、指数函数、对数函数等)就能够使用。

你可能感兴趣的:(数学建模,概率论,matlab,线性代数,矩阵)