R语言可视化RR语言做图

相关性分析 | R语言 -- 相关性矩阵及可视化

2021-01-21  本文已影响0人  生信摆渡

什么是相关矩阵?

相关矩阵 又称 相关性矩阵

之前,我们描述了如何在两个变量之间进行相关性测。在本文中,您将学习如何计算相关矩阵,该矩阵用于同时研究多个变量之间的依赖关系。结果是一个包含每个变量与其他变量之间的相关系数的表。

相关分析有不同的方法:Pearson参数相关检验SpearmanKendall基于秩的相关分析。这些方法将在下一节中讨论。

R教程的目的是向您展示如何计算和可视化相关矩阵。我们还提供了用于计算和可视化相关矩阵的在线软件

在R中的计算相关矩阵

R函数

您可能知道,R函数cor()可用于计算相关矩阵。该函数的简化格式为:

cor(x, method = c("pearson", "kendall", "spearman"))

如果您的数据包含缺失值,请使用以下R代码通过按大小写删除来处理缺失值。

cor(x, method = "pearson", use = "complete.obs")

将数据导入R

在这里,我们将使用从内置R数据集mtcars派生的数据作为示例:

# Load data
data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]
# print the first 6 rows
head(my_data, 6)
                   mpg disp  hp drat    wt  qsec
Mazda RX4         21.0  160 110 3.90 2.620 16.46
Mazda RX4 Wag     21.0  160 110 3.90 2.875 17.02
Datsun 710        22.8  108  93 3.85 2.320 18.61
Hornet 4 Drive    21.4  258 110 3.08 3.215 19.44
Hornet Sportabout 18.7  360 175 3.15 3.440 17.02
Valiant           18.1  225 105 2.76 3.460 20.22

计算相关矩阵

res <- cor(my_data)
round(res, 2)
       mpg  disp    hp  drat    wt  qsec
mpg   1.00 -0.85 -0.78  0.68 -0.87  0.42
disp -0.85  1.00  0.79 -0.71  0.89 -0.43
hp   -0.78  0.79  1.00 -0.45  0.66 -0.71
drat  0.68 -0.71 -0.45  1.00 -0.71  0.09
wt   -0.87  0.89  0.66 -0.71  1.00 -0.17
qsec  0.42 -0.43 -0.71  0.09 -0.17  1.00

在上表中,显示了可能的变量对之间的相关系数

请注意,如果您的数据包含缺失值,请使用以下R代码通过来处理缺失值。

cor(my_data, use = "complete.obs")

不幸的是,函数cor()仅返回变量之间的相关系数。在下一节中,我们将使用Hmisc R包来计算相关性p值

具有显着性水平(p值)的相关矩阵

功能 rcorr() [在Hmisc包]能为 皮尔森Spearman相关 计算 显着性水平。对于数据表中所有可能的列对,它都返回相关系数和相关的p值。

rcorr(x, type = c("pearson","spearman"))

x应该是一个矩阵。的相关性类型可以是皮尔森斯皮尔曼

install.packages("Hmisc")
library("Hmisc")
res2 <- rcorr(as.matrix(my_data))
res2
       mpg  disp    hp  drat    wt  qsec
mpg   1.00 -0.85 -0.78  0.68 -0.87  0.42
disp -0.85  1.00  0.79 -0.71  0.89 -0.43
hp   -0.78  0.79  1.00 -0.45  0.66 -0.71
drat  0.68 -0.71 -0.45  1.00 -0.71  0.09
wt   -0.87  0.89  0.66 -0.71  1.00 -0.17
qsec  0.42 -0.43 -0.71  0.09 -0.17  1.00
n= 32 
P
     mpg    disp   hp     drat   wt     qsec  
mpg         0.0000 0.0000 0.0000 0.0000 0.0171
disp 0.0000        0.0000 0.0000 0.0000 0.0131
hp   0.0000 0.0000        0.0100 0.0000 0.0000
drat 0.0000 0.0000 0.0100        0.0000 0.6196
wt   0.0000 0.0000 0.0000 0.0000        0.3389
qsec 0.0171 0.0131 0.0000 0.6196 0.3389       

rcorr()函数的输出包含 -r 相关矩阵-P 显著性水平

如果要从输出中提取p值或相关系数,请使用以下命令:

# Extract the correlation coefficients
res2$r
# Extract p-values
res2$P

格式化相关矩阵的简单函数

本节提供了一个简单的函数,用于将相关矩阵格式化为具有4列的表,其中包含:

可以使用以下自定义函数:

# ++++++++++++++++++++++++++++
# flattenCorrMatrix
# ++++++++++++++++++++++++++++
# cormat : matrix of the correlation coefficients
# pmat : matrix of the correlation p-values
flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]
    )
}

用法示例:

library(Hmisc)
res2<-rcorr(as.matrix(mtcars[,1:7]))
flattenCorrMatrix(res2$r, res2$P)
    row column         cor            p
1   mpg    cyl -0.85216194 6.112697e-10
2   mpg   disp -0.84755135 9.380354e-10
3   cyl   disp  0.90203285 1.803002e-12
4   mpg     hp -0.77616835 1.787838e-07
5   cyl     hp  0.83244747 3.477856e-09
6  disp     hp  0.79094857 7.142686e-08
7   mpg   drat  0.68117189 1.776241e-05
8   cyl   drat -0.69993812 8.244635e-06
9  disp   drat -0.71021390 5.282028e-06
10   hp   drat -0.44875914 9.988768e-03
11  mpg     wt -0.86765939 1.293956e-10
12  cyl     wt  0.78249580 1.217567e-07
13 disp     wt  0.88797992 1.222311e-11
14   hp     wt  0.65874785 4.145833e-05
15 drat     wt -0.71244061 4.784268e-06
16  mpg   qsec  0.41868404 1.708199e-02
17  cyl   qsec -0.59124213 3.660527e-04
18 disp   qsec -0.43369791 1.314403e-02
19   hp   qsec -0.70822340 5.766250e-06
20 drat   qsec  0.09120482 6.195823e-01
21   wt   qsec -0.17471591 3.388682e-01

可视化相关矩阵

在R软件中可以用不同的方式显示相关矩阵

使用 symnum() 函数:符号数字编码

R函数 symnum() 根据相关程度用符号替换相关系数。它以相关矩阵作为参数:

symnum(x, cutpoints = c(0.3, 0.6, 0.8, 0.9, 0.95),
       symbols = c(" ", ".", ",", "+", "*", "B"),
       abbr.colnames = TRUE)
symnum(res, abbr.colnames = FALSE)
     mpg disp hp drat wt qsec
mpg  1                       
disp +   1                   
hp   ,   ,    1              
drat ,   ,    .  1           
wt   +   +    ,  ,    1      
qsec .   .    ,          1   
attr(,"legend")
[1] 0 ' ' 0.3 '.' 0.6 ',' 0.8 '+' 0.9 '*' 0.95 'B' 1

如图例所示,00.3之间的相关系数由空格(“”)替换;0.3和0.6之间的相关系数由“。”替换;等等…

使用corrplot()函数:绘制相关图

在同名程序包中的函数corrplot()创建相关矩阵的图形显示,突出显示数据表中最相关的变量。

在该图中,相关系数根据该值着色。相关矩阵也可以根据变量之间的关联程度进行重新排序。

install.packages("corrplot")

函数corrplot()相关矩阵作为第一个参数。第二个参数(类型=“上层”)用于仅显示相关矩阵的上三角。

library(corrplot)
corrplot(res, type = "upper", order = "hclust", 
         tl.col = "black", tl.srt = 45)
相关矩阵-R软件和统计

正相关以蓝色显示,负相关以红色显示。颜色强度和圆圈的大小与相关系数成正比。在相关图的右侧,图例颜色显示了相关系数和相应的颜色。

阅读更多:使用corrplot可视化相关矩阵

也可以将相关图与显着性检验相结合。我们将通过rcorr()函数(在Hmisc包中)使用在上一节中生成的结果res.cor2

# Insignificant correlation are crossed
corrplot(res2$r, type="upper", order="hclust", 
         p.mat = res2$P, sig.level = 0.01, insig = "blank")
# Insignificant correlations are leaved blank
corrplot(res2$r, type="upper", order="hclust", 
         p.mat = res2$P, sig.level = 0.01, insig = "blank")
相关矩阵-R软件和统计

在上图中,p值> 0.01的相关被认为是无关紧要的。在这种情况下,相关系数值留为空白或添加叉号。

使用chart.Correlation():绘制散点图

软件包 PerformanceAnalytics中 的功能chart.Correlation() [可用于显示相关矩阵的图表。

install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
my_data <- mtcars[, c(1,3,4,5,6,7)]
chart.Correlation(my_data, histogram=TRUE, pch=19)
散点图,图表

在上图中:

使用heatmap()

# Get some colors
col<- colorRampPalette(c("blue", "white", "red"))(20)
heatmap(x = res, col = col, symm = TRUE)
相关矩阵的热图

觉得有用的老铁麻烦点个小爱心~😏

上一篇下一篇

猜你喜欢

热点阅读