相关系数(correlation coefficient)用于描述两个变量之间的相关程度。一般在[-1, 1]之间。包括:
在本次笔记中仅讨论 连续型变量 的相关系数。
cor.test() 和 cor() 都是R自带包里的函数,两者差别仅为 cor() 只给出相关系数一个值, cor.test() 给出相关系数,p值等。
你可以把数据的两组feature提出来进行相关性分析,看是否有相关性;也可以把包含多个feature的表格作为 cor() input,得到的是一个对称的 correlation matrix . 即所有feature两两比较的相关系数。然后你可以拿去各种可视化。 cor.test() 似乎不能这样用。
使用 Hmisc 包的rcorr(),可以得到correlation matrix的p值矩阵。当然 rcorr() 也可以像 cor() 那样,只计算两个feature之间的相关系数。
如果你想比较 attitude 6个feature中前3个与后3个的关联,并且需要进行多重矫正,需要使用psych包的corr.test()。
你有关于一套sample的两套feature,比方说两个dataframe, 其行是相同的(sample),列为不同的feature.那么可以 corr.test(df1, df2, method= ...) 来计算两组feature的相关系数并加以矫正。这时得到的output不是对称的,而是 ncol(df1) * ncol(df2)
需要注意如果input为两个dataframe, 两者的row必须长度和顺序都一致。
可以根据P值,把P值做成 * , ** ...这样的的significant levels,便于后面画热图。总的来说以下函数可以塞进去两个你想比较的dataframe,得到相关系数,矫正后的P值,校正后的P值significant levels矩阵,结合 heatmap.2 ,就可以画图了...
spearmanCI()
安装 spearmanCI 包。在cor.test()中method使用pearson, 默认结果中有95%CI,但是spearman没有。
用法: spearmanCI(df[[var1]], df[[var2]], level=0.95)
注意一下它的Ouput不是一个完整的list...要把它读出来:
capture.output(spearmanCI(...))
R里做相关系数的函数茫茫多,不止这几个。以后如果要用到其他的再补上。
Ref:
更多见STHDA的教程
corr.test的文档