
ZL1023
V1
2022/11/19阅读:23主题:全栈蓝
R语言:相关系数热图
1. 原始图片


2. 模仿图片
①加载包
# 加载包
## Hadley Wickham开发的包
library(tidyverse)
## 本期使用gWQS包中的数据
library(gWQS)
## 绘制相关系数图的包
library(corrplot)
②示例数据集
❝示例数据集简介:gWQS包中有一个内置数据集,内置数据集的名称叫wqs_data[1],「wqs_data」数据集有「34种多环芳烃暴露数据」、25种邻苯二甲酸酯暴露数据和其他类型数据。
❞
本期仅使用wqs_data数据集中「前10种多环芳烃暴露数据」。
# 提取wqs_data中前10种多环芳烃暴露数据
PCBs <- wqs_data[1:10]
# 查看前10种多环芳烃暴露数据
head(PCBs)

③数据分布类型
做完实验之后,我们会得到大量的实验数据。一些同学拿到实验数据后就直接进行各种数据分析,包括T检验、方差分析、线性回归等等。然而,这样的分析结果可能是错的,为什么呢?
原因是一些数据分析方法对数据的分布类型是有要求的,我们经常使用的T检验和方差分析均要求数据呈「正态分布」。
因此,进行数据分析之前,我们要养成查看数据分布类型的习惯,数据分布类型对于数据分析来说非常重要。
# 使用Shapiro-Wilk检验来检验10种多环芳烃是不是正态分布?
PCBs_distribution <- apply(X=PCBs, MARGIN=2, FUN=shapiro.test)
# 将得到的列表数据展开后转换成数据框
PCBs_distribution <- as.data.frame(unlist(PCBs_distribution))
# 提取Shapiro-Wilk检验的p值
PCBs_p_value <- PCBs_distribution[c(grep(pattern="p.value", x=rownames(PCBs_distribution))), ]
# 将提取的p值转换成数值变量
PCBs_p_value <- as.numeric(PCBs_p_value)
# 给上述提取的p值赋予对应的多环芳烃名称
names(PCBs_p_value) <- rownames(PCBs_distribution)[c(grep(pattern="p.value", x=rownames(PCBs_distribution)))]
# 筛选p值小于0.05的多环芳烃,
## p值小于0.05的多环芳烃,不是正态分布
PCBs_p_value[PCBs_p_value<0.05]
named numeric(0)
Shapiro-Wilk检验结果表明10种多环芳烃都是正态分布,因此,下文计算10种多环芳烃的相关系数时,选择Pearson相关系数。
④相关系数图
# 相关性热图
corrplot(corr = cor(PCBs, method = "pearson"),
p.mat = cor.mtest(PCBs, method = "pearson", exact = FALSE)$p,
sig.level = 0.05,
pch.col = "grey40",
addCoef.col = "black",
method = "color",
type = "upper",
tl.col = "black",
tl.srt = 45,
addgrid.col = "black",
col = colorRampPalette(c("#4477AA", "#77AADD", "#FFFFFF", "#EE9988", "#BB4444"))(200))

Reference
wqs_data数据集: https://search.r-project.org/CRAN/refmans/gWQS/html/wqs_data.html
作者介绍

ZL1023
V1