文章目录
- 皮尔逊相关系数
- 假设检验
- 下面来看一个例子
- 斯皮尔曼(spearman)相关系数
- 注意
皮尔逊相关系数
-
总体皮尔逊(Pearson)相关系数
如果有 A:{A1,A2,⋯,An}A:\{A_1, A_2, \cdots, A_n\}A:{A1,A2,⋯,An} 和 Y:{Y1,Y2,⋯,Yn}Y:\{Y_1, Y_2, \cdots, Y_n\}Y:{Y1,Y2,⋯,Yn} 这两组数据,并且这两组数据都是总体数据。(即调查所有对象而得出的数据),那么可以求出总体均值为:E(X)=∑i=1nXin,E(Y)=∑i=1nYinE(X) = \frac{\sum_{i = 1}^{n}X_i}{n}, E(Y) = \frac{\sum_{i = 1}^{n}Y_i}{n}E(X)=n∑i=1nXi,E(Y)=n∑i=1nYi 同时,总体协方差也就可以表示为:Cov(X,Y)=∑i=1n(Xi−E(X))(Yi−E(Y))nCov(X, Y) = \frac{\sum_{i = 1}^{n}(X_i - E(X))(Y_i - E(Y))}{n}Cov(X,Y)=n∑i=1n(Xi−E(X))(Yi−E(Y)) 协方差可以理解为 XXX 和 YYY 的变化方向是否相同。但是,协方差要受到量纲的影响,因此不适合作为比较。有了协方差以及总体均值,那么总体皮尔逊(Pearson)相关系数便可表示为:ρ=Cov(X,Y)σ=∑i=1n(Xi−E(X))σXYi−E(Y)σYn\rho = \frac{Cov(X, Y)}{\sigma} = \frac{\sum_{i = 1}^{n}\frac{(X_i - E(X))}{\sigma_{X}}\frac{Y_i - E(Y)}{\sigma_Y}}{n}ρ=σCov(X,Y)=n∑i=1nσX(Xi−E(X))σYYi−E(Y)其中,σX\sigma_XσX 和 σY\sigma_YσY 表示 XXX 和 YYY 的标准差,计算公式为:σX=∑i=1n(Xi−E(X))2n,σY=∑i=1n(Yi−E(Y))2n\sigma_X = \sqrt{\frac{\sum_{i = 1}^{n}(X_i - E(X))^2}{n}}, \sigma_Y = \sqrt{\frac{\sum_{i = 1}^{n}(Y_i - E(Y))^2}{n}}σX=n∑i=1n(Xi−E(X))2,σY=n∑i=1n(Yi−E(Y))2我们还可以得出,∣ρXY∣≤1|\rho_{XY}| \leq 1∣ρXY∣≤1,0≤ρ≤10 \leq \rho \leq 10≤ρ≤1 时,表示 XXX 和 YYY 之间成正相关关系,反之则成负相关关系。
-
样本皮尔逊(Pearson)系数
样本均值:Xˉ=∑i=1nXin,Yˉ=∑i=1nYin\bar{X} =\frac{\sum_{i = 1}^{n}X_i}{n}, \bar{Y} = \frac{\sum_{i = 1}^{n}Y_i}{n}Xˉ=n∑i=1nXi,Yˉ=n∑i=1nYi
样本协方差为:Cov(X,Y)=∑i=1n(Xi−Xˉ)(Yi−Yˉ)n−1Cov(X, Y) = \frac{\sum_{i = 1}^{n}(X_i - \bar{X})(Y_i - \bar{Y})}{n - 1}Cov(X,Y)=n−1∑i=1n(Xi−Xˉ)(Yi−Yˉ) (注意分母是 n−1n - 1n−1 , 而不是 nnn ! !)
样本皮尔逊(Pearson)相关系数:rXY=Cov(X,Y)SXSYr_{XY} = \frac{Cov(X, Y)}{S_X S_Y}rXY=SXSYCov(X,Y)
其中,SX=∑i=1n(Xi−Xˉ)2n−1,∑i=1n(Yi−Yˉ)2n−1S_X = \sqrt{\frac{\sum_{i = 1}^{n}(X_i - \bar{X})^2}{n - 1}}, \sqrt{\frac{\sum_{i = 1}^{n}(Y_i - \bar{Y})^2}{n - 1}}SX=n−1∑i=1n(Xi−Xˉ)2,n−1∑i=1n(Yi−Yˉ)2 同样,分母都是 n−1n - 1n−1 哦!! -
关于皮尔逊相关系数容易理解错误的点
∙\bullet∙ 必须要在两个变量线性相关时,求出的相关系数才能说明这两个变量的相关性
∙\bullet∙ 异常点对于线性相关系数的影响很大,不能一概而论
∙\bullet∙ 相关系数为0,只能说明这两个变量不是线性相关的,但也有可能会有其他更为复杂的关系。 -
使用皮尔逊相关系数之前需要:
∙\bullet∙ 做出散点图确定这两个变量是否初步拥有线性相关关系
不确定两个变量的关系,及时相关系数很大也无法判断。
确定两个变量具有线性相关关系,计算皮尔逊(Pearson)相关系数时,可以直接在 MatlabMatlabMatlab 中调用 corrceofcorrceofcorrceof 函数来计算。
假设检验
假设检验一般有如下几个步骤:
- 提出原假设 H0H_0H0 以及备择假设 H1H_1H1 (两个假设互补)
- 在原假设成立的条件下,利用要检验的量构造一个满足某一分布的统计量(分布一般有:标准正态分布、ttt 分布、χ2\chi^2χ2 分布、FFF 分布)
- 根据这个统计量,将检验对象带入统计量,得到一个检验值。
- 确定置信水平(99%, 95%, 90%,一般选取95%),根据置信水平确定临界值。
- 由检验值和临界值的大小来判断假设是否能够显著接受。
下面来看一个例子
首先必须画出散点图确定是否有相关性哦!!!
经过 MatlabMatlabMatlab 处理后可得的相关系数表为:
这是一个对称矩阵,矩阵中的数据表示行和列的相关系数。
- 提出假设:
H0H_0H0 :rrr = 0,H1H_1H1 :rrr ≠ 0 - 提出满足分布的统计量
可以构造统计量为:t=rn−21−r2t = r\sqrt{\frac{n - 2}{1 - r^2}}t=r1−r2n−2可以证明 ttt 时服从自由度为 n−2n - 2n−2 的 ttt 分布。 - 带入得检验值
看第一行、第二列的值为:0.0580,样本数为730,因此 t∗=0.0580730−21−0.05802=1.5676t^* = 0.0580\sqrt{\frac{730 - 2}{1 - 0.0580^2}}=1.5676t∗=0.05801−0.05802730−2=1.5676 - 给定置信水平,确定临界值
给定置信水平为 95%,根据 ttt 分布表查阅对应的临界值
比较检验值是否在接受域或者拒绝域。
{若在拒绝域,结论:在95%的置信水平上,我们拒绝原假设,r显著不为0若在接受域,结论:在95%的置信水平上,我们无法拒绝原假设\left\{\begin{aligned} &\text{若在拒绝域,结论:在95\%的置信水平上,我们拒绝原假设,r显著不为0} \\ &\text{若在接受域,结论:在95\%的置信水平上,我们无法拒绝原假设}\end{aligned}\right.{若在拒绝域,结论:在95%的置信水平上,我们拒绝原假设,r显著不为0若在接受域,结论:在95%的置信水平上,我们无法拒绝原假设
-
补充P值判断法
根据得到的检验值 t∗t^*t∗,可以计算出这个检验值对应的概率。{若是单侧检验,可在 Matlab 中P=1−tcdf(t∗,728)若是双侧检验,可在 Matlab 中P=(1−tcdf(t∗,728))×2\left\{\begin{aligned} &\text{若是单侧检验,可在 Matlab 中} P = 1 - tcdf(t^*, 728) \\ &\text{若是双侧检验,可在 Matlab 中} P = (1 - tcdf(t^*, 728)) \times 2 \end{aligned} \right.{若是单侧检验,可在 Matlab 中P=1−tcdf(t∗,728)若是双侧检验,可在 Matlab 中P=(1−tcdf(t∗,728))×2 -
皮尔逊相关系数假设检验的条件
∙\bullet∙ 实验数据满足正态分布
∙\bullet∙ 实验数据不能差距太大
∙\bullet∙ 魅族样本之间时独立抽样的
在平常的题目中,可以当作第二个和第三个条件成立。但是,第一个条件必须需要经过检验,检验成立才能使用皮尔逊(Pearson)相关系数检验。 -
正态分布检验
∙\bullet∙ 正态分布 JBJBJB 检验(大样本 n>30n > 30n>30 时)对于一个随机变量{Xi}\{X_i\}{Xi} ,假设其偏度为 SSS,峰度为 KKK,那么可以构造JB统计量:JB=n6[S2+(K−3)24]JB = \frac{n}{6}[S^2 + \frac{(K - 3)^2}{4}]JB=6n[S2+4(K−3)2]可以证明,如果 {Xi}\{X_i\}{Xi} 是正态分布,那么在大样本情况下 JB−χ2(2)JB - \chi^2(2)JB−χ2(2) (自由度为2的卡方分布)
注:正态分布的偏度为 0,峰度为 3那么假设检验的步骤如下:
H0H_0H0:该变量服从正态分布,H1H_1H1:该随机变量不服从正态分布。
然后可以计算变量的偏度和峰度,得到检验值 JB∗JB^*JB∗ ,并计算出其相应的 ppp 值。
将 ppp 值与 0.05 作比较,小于 0.05 则可拒绝原假设,否则不能拒绝原假设。
可以在 MatlabMatlabMatlab 中调用 [h,p]=jbtest(column,置信水平)[h, p] = jbtest(column, \text{置信水平})[h,p]=jbtest(column,置信水平),hhh 表示 JB∗JB^*JB∗ 的值,ppp 表示对应的 ppp 值。∙\bullet∙ 夏皮洛-威尔克(Shapiro-wilk)检验
H0H_0H0:该随机变量服从正态分布,H1H_1H1:该随机变量不服从正态分布
计算出威尔克统计量后,可以求出对应的 ppp 值
将 ppp 值与 0.05 比较,如果小于 0.05 则可以拒绝原假设,否则不能拒绝原假设。
计算威尔克统计量可以使用 SPSSSPSSSPSS 工具。∙\bullet∙ Q−Q图Q-Q \text{图}Q−Q图
直接在 MatlabMatlabMatlab 中调用 qqplot(column)qqplot(column)qqplot(column) 函数做出图像,如果 QQQQQQ 图近似于一条直线,该随机变量满足正态分布。
注意:作 QQQQQQ 图要求数据量非常大,做出图像才会更加准确。
斯皮尔曼(spearman)相关系数
- 一种定义
XXX 和 YYY 为两组数据,其斯皮尔曼相关系数定义为:rs=1−6∑i=1ndi2n(n2−1)r_s = 1 - \frac{6\sum_{i = 1}^{n}d_i^2}{n(n^2 - 1)}rs=1−n(n2−1)6∑i=1ndi2其中,did_idi 为 XiX_iXi 和 YiY_iYi 之间的等级差(一个数的等级 = 将它的一列数按照从小到大排序后,这个数的位置)
同样,rsr_srs 位于 -1 和 1 之间
|X|Y|X的等级|Y的等级|等级差|等级差的平方|
|–|--|–|--|–|--|
|3|5|2|1|1|1|
|8|10|5|4.5|0.5|0.25|
|4|8|3|3|0|0|
|7|10|4|4.5|-0.5|0.25|
|2|6|1|2|-1|1|
根据公式:rs=1−6∑i=1ndi2n(n2−1)r_s = 1 - \frac{6\sum_{i = 1}^{n}d_i^2}{n(n^2 - 1)}rs=1−n(n2−1)6∑i=1ndi2可得:rs=1−6×(1+0.25+0.25+1)5×24=0.875r_s = 1 - \frac{6\times(1+0.25+0.25+1)}{5\times24} = 0.875rs=1−5×246×(1+0.25+0.25+1)=0.875 - 另一种定义
等级之间的皮尔逊相关系数
X | Y | X的等级 | Y的等级 | 等级差 | 等级差的平方 |
---|---|---|---|---|---|
3 | 5 | 2 | 1 | 1 | 1 |
8 | 10 | 5 | 4.5 | 0.5 | 0.25 |
4 | 8 | 3 | 3 | 0 | 0 |
7 | 10 | 4 | 4.5 | -0.5 | 0.25 |
2 | 6 | 1 | 2 | -1 | 1 |
rank_X = [2 5 3 4 1]
rank_Y = [1 4.5 3 4.5 2]
R = corrcoef(rank_X, rank_Y)
在 MatlabMatlabMatlab 中,可以使用 corr()corr()corr() 函数,corr(rankX,rankY,′type′,′Spearman′)corr(rank_X, rank_Y, 'type', 'Spearman')corr(rankX,rankY,′type′,′Spearman′)
(注意:MatlabMatlabMatlab 中使用的是第二种计算方法)
∙\bullet∙ 小样本情况下(n<30n < 30n<30),可以直接查表
∙\bullet∙ 大样本情况下,可以构造统计量为:rsn−1r_s\sqrt{n - 1}rsn−1
H0H_0H0:rs=0r_s = 0rs=0,H1H_1H1:rs≠0r_s ≠ 0rs=0
计算检验值 z∗=rsn−1z^* = r_s\sqrt{n - 1}z∗=rsn−1,并求出对应的 ppp 值与 0.05 比较。{若是单侧检验,P=1−normcdf(z∗)若是双侧检验,P=(1−normcdf(z∗))×2\left\{\begin{aligned} &\text{若是单侧检验},P = 1 - normcdf(z^*) \\ &\text{若是双侧检验},P = (1 - normcdf(z^*))\times 2 \end{aligned} \right.{若是单侧检验,P=1−normcdf(z∗)若是双侧检验,P=(1−normcdf(z∗))×2或者直接在 MatlabMatlabMatlab 中:[R,P]=corr(rankX,rankY,′type′,′Spearman′)[R, P] = corr(rank_X, rank_Y, 'type', 'Spearman')[R,P]=corr(rankX,rankY,′type′,′Spearman′)
注意
-
皮尔逊相关系数条件:连续数据、正态分布、线性关系。
因此,要使用皮尔逊相关系数:
首先要是连续数据
然后画散点图初步确定线性关系
接着还要进行正态分布检验
最后才能使用。当这些条件满足时,也可以使用斯皮尔曼相关系数,但是效率没皮尔逊相关系数高。
-
上述条件任意不满足,就用斯皮尔曼相关系数,不能使用皮尔逊相关系数。
-
两个定序数据也可以使用斯皮尔曼相关系数,不能使用皮尔逊相关系数。
有什么好的建议,烦请告知hhh~~~