1.理论部分
Pearson(默认)
最常规的线性分析。计算公式
适用条件
- 变量线性关系、连续
- 两个变量总体符合正态分布
- 标准差不能为0
- 异常值较敏感
Spearman(秩相关系数)
其值与两个相关变量的具体值无关,而仅仅与其值之间的大小关系有关。
即
(1,10,100,101)->(1,2,3,4)
(21,10,15,13)->(4,1,3,2)
再利用Pearson公式对转换后的(1,2,3,4,)计算相关性.
适用条件:
- 等级变量之间的相关系数
- 对处理异常比较好,因为最大值最小值的具体数值对整体数据影响较大,但是排序通常不会有明显变化
Kendall(和谐系数)
其值与两个相关变量的具体值无关,而仅仅与其值之间的大小关系有关。
对于X,Y的两对观察值Xi,Yi和Xj,Yj,如果Xi<Yi并且Xj<Yj,或者Xi>Yi并且Xj>Yj,则称这两对观察值是和谐的,否则就是不和谐的。偏向一致性评价
计算公式
显著性检测
进行相关性检测时数据量越大,相关系数越小,所以相关系数和显著性应该同时说明。
计算公式:
查表确定显著性水平α
以上理论知识相关参考:https://www.cnblogs.com/kemaswill/archive/2012/11/01/2749842.html
2.R实现部分
require(xlsx);
require(psych);
require(corrplot);
require(corrgram);
require(PerformanceAnalytics);
data<-"E:\\corr\\CorrM_1000.xlsx";
M1<-read.xlsx(data,1,encoding='UTF-8');
##计算相关系数,并绘制相关系数矩阵
##corr<-cor(M1,method="pearson");
##无法生成散点图
##corrplot.mixed(corr,upper="circle",lower="shade",addCoef.col = "black");
##计算显著性水平
##corr.test(M1, adjust = "none", use = "complete")
##有上下两个部分,但是无法生成相关系数的圆圈
##corrgram(M1,lower.panel=panel.fill,upper.panel=panel.pts,text.panel=panel.txt)
##也无法生成相关系数的圆圈
chart.Correlation(M1, histogram=TRUE, pch=30);
效果图
其中,1个点代表90%的置信度,1颗星代表95%的置信度,2颗代表99%的置信度,3颗星代表99.9%的置信度
一直想绘制散点图在下(或下),相关性圆圈在上(或下),并标注出相关性大小和显著性,但一直没有成功。知道的评论区教教我呀~~~
另,panel所有函数: