相关性分析和作图
相关的类型
1. Pearson、Spearman和Kendall相关
cor(x, y = NULL, use = "everything",method = c("pearson", "kendall", "spearman"))
states<-state.x77[,1:6]
cov(states)#协方差
cor <- cor(states)#相关性
1.计量资料 计量资料(measurement data)又称定量资料(quantitative data)或数值变量(numericalvariable)资料。为观测每个观察单位某项指标的大小而获得的资料。其变量值是定量的,表现为数值大小,一般有度量衡单位。根据其观测值取值是否连续,又可分为连续型(continuous)或离散型(discrete)两类。前者可在实数范围内任意取值,如身高、体重、血压等;后者只取整数值,如某医院每年的病死人数等。
2.计数资料 计数资料(cnumeration data)又称定性资料(qualitative data)或无序分类变量(unorderedcategorical variable)资料,亦称名义变量(nominal variable)资料。为将观察单位按某种属性或类别分组计数,分组汇总各组观察单位数后而得到的资料。其变量值是定性的,表现为互不相容的属性或类别,如试验结果的阳性阴性、家族史的有无等。分两种情形:
(1)二分类:如检查某小学学生大便中的蛔虫卵,以每个学生为观察单位,结果可报告为蛔虫卵阴性与阳性两类;如观察某药治疗某病患者的疗效,以每个患者为观察单位,结果可归纳为治愈与未愈两类。两类间相互对立,互不相容。
(2)多分类:如观察某人群的血型分布,以人为观察单位,结果可分为A型、B型、AB型与O型,为互不相容的四个类别。
3.等级资料 等级资料(ranked data)又称半定量资料(semi-quantitative data)或有序分类变量(ordinalcategorical variable)资料。为将观察单位按某种属性的不同程度分成等级后分组计数,分类汇总各组观察单位数后而得到的资料。其变量值具有半定量性质,表现为等级大小或属性程度。如观察某人群某血清反应,以人为观察单位,根据反应强度,结果可分一、±、+、++、+++、++++六级;又如观察用某药治疗某病患者的疗效,以每名患者为观察单位,结果可分为治愈、显效、好转、无效四级等。
2. 偏相关
library(ggm)
pcor(c(1,5,2,3,6),cov(states))
[1] 0.3462724
pcor(c(1,5,2,3,6),cov(states))##控制了变量
相关性的显著性检验
cor.test()
可以使用cor.test()函数对单个的Pearson、Spearman和Kendall相 系数进行检验。简化后的使用格式为:
cor.test(x, y,alternative = c("two.sided", "less", "greater"),#指定进行双侧检验或单侧检验method = c("pearson", "kendall", "spearman"),#计算的相关类型exact = NULL, conf.level = 0.95, continuity = FALSE, ...)
cor.test(states[,3],states[,5])Pearson's product-moment correlation
data: states[, 3] and states[, 5]
t = 6.8479, df = 48, p-value = 1.258e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:0.5279280 0.8207295
sample estimates:cor
0.7029752
corr.test()更好
library(psych)
res <-corr.test(states,use = "pairwise")
#"pairwise"或"complete" 分别表示对缺失值执行成对删除或行删除
corr <- res$r#可以查看相关性R值
corp <- res$p#可以查看P值
res$p.adj#可以查看FDR值
library(psych)
res <- corr.test(data, exp, use = 'pairwise', method = 'spearman', adjust = 'holm',#FDR值alpha = 0.05)
res$p.adj#可以查看FDR值
res$r#可以查看相关性R值
相关性方法选择
正态分布Pearson
直线相关(linear correlation)又称简单相关(simple correlation),用于双变量正态分布(bivariate normaldistribution)资料。直线相关的性质可由散点图直观的说明。
相关系数(coefficient of correlation)又称Pearson积差相关系数(coefficient of product-momentcorrelation),以符号r表示样本相关系数,符号p表示其总体相关系数。它用来说明具有直线关系的两变量间相关的密切程度与相关方向。R²取值在0到1之间且无单位,其数值大小反映了回归贡献的相对程度,也就是在Y的总变异中回归关系所能解释的百分比。回归平方和越接近总平方和,则r绝对值越接近1,说明相关的实际效果越好。
正态分布检测:t检验(连续变量)和卡方检验(分类变量)-CSDN博客
data <- iris##鸢尾花数据集
data1 <- data[,c(1,5)]
data2 <- data1[data1$Species=="setosa"|data1$Species=="versicolor",]
##提取鸢尾花数据集的部分数据进行分析shapiro.test(data2$Sepal.Length)
#W = 0.96964, p-value = 0.02076 不符合正太分布#密度图
ggdensity(data2$Sepal.Length, main = "Density plot of sepal length",xlab = "sepal length")
#正态性测试对样本量敏感。小样本最常通过正态性测试。
#因此,重要的是将外观检查和显着性测试相结合以做出正确的决定
#综合分析也可以采用t检验
秩相关Spearman
秩相关(rank correlation)或称等级相关,是用双变量等级数据作直线相关分析,这类方法对原变量分布不作要求,属于非参数统计方法。适用于下列资料:①不服从双变量正态分布而不宜作积差相关分析,这一点从原始数据的基本统计描述或直观的散点图中可以看出;②总体分布型未知,例如限于仪器测量精度个别样品的具体数值无法读出而出现“超限值”时(如X<0.001);③原始数据是用等级表示。用等级相关系数r来说明两个变量间直线相关关系的密切程度与相关方向。
相关性热图
corrplot包corrplot函数
数据处理:计算相关性系数和P值
rm(list = ls())
library(corrplot)
# 计算相关性
corData = cor(mtcars,method = "pearson", # 计算相关性的方法有"pearson", "spearman", "kendall"use = "pairwise.complete.obs") # 缺失值处理的方式
# 计算相关性的P值和置信区间
testRes = cor.mtest(mtcars,conf.level = 0.95, # 置信区间method = "pearson") # 计算相关性的方法有"pearson", "spearman", "kendall"
corrp <- testRes$p
绘图:
#pdf("plot.pdf",width = 4,height = 4)##保存图片
# 绘图
?corrplot
corrplot(corData,method = "square", # 图案形状 "square"方框,"circle"圆, "ellipse"椭圆, "number"数字, "shade"阴影花纹, "color"颜色方框, "pie饼图"type = "full", # 绘制范围"full"全部, "lower"下半部分, "upper"半部分col=colorRampPalette(c('#0000ff','#ffffff','#ff0000'))(100), # 主体颜色bg = "white", # 背景颜色# col.lim = c(-1,1), # 数据颜色的范围,是相关性数据的话,直接is.corr = T就好title = "ABCD", # 标题is.corr = T, # 输入相关性矩阵,数据范围-1到1add = F, # 是否在原来的图层上添加图形diag = T, # 是否显示主对角outline = "green", # 轮廓,True或False或设置颜色mar = c(5, 4, 4, 2), # bottom,left,top,right 指定的边距行数(需要一定的边距才能显示标题)addgrid.col = NA, # 网格线的颜色,NA为不绘制,NULl为默认的灰色addCoefasPercent = F, # 是否把相关性数值改为百分数order = "original", # 排序方式 c("original", "AOE", "FPC", "hclust", "alphabet")hclust.method = c("complete", "ward", "ward.D", "ward.D2", "single", "average","mcquitty", "median", "centroid"),#position of text labels标签参数(好像没有缩短图例的参数)tl.pos = "lt", # 位置'lt', 'ld', 'td', 'd' or 'n' tl.cex = 1, # 字体的大小tl.col = "black", # 字体的颜色tl.offset = 0.4, # 标签离图案的距离tl.srt = 60, # 坐标轴标签旋转角度#color-legend;图例参数cl.pos = "r", # 图例位置:r右边 b下边 n不显示cl.length = NULL, # 数字越大,图例的分隔越稠cl.cex = 0.8, # 图例的字体大小cl.ratio = 0.2, # 图例的宽度cl.align.text = "c", # 图例文字的对齐方式 l左对齐 c居中 r右对齐cl.offset = 1, # 图例文字距离图例颜色条的距离 居中时无效#数值显示number.cex = 1, # 相关性数字标签的字体大小number.font = 2, # 相关性数字标签的字体number.digits = 2, # 相关性数字标签,保留的小数点位数na.label = "", # 当为NA时,显示的内容## P值矩阵p.mat = testRes$p, sig.level = 0.05, # 当p大于sig.level时触发动作insig = "label_sig", # sig.level, insig, pch, pch.col, pch.cex,label_sig(星号)#置信区间plotCI = "n", # c("n", "square", "circle", "rect")lowCI.mat = testRes$lowCI, # p值置信区间下边界数据uppCI.mat = testRes$uppCI, # p值置信区间上边界数据
)
添加下三角:上下三角不一致
add = T, diag = F,
#添加图形
corrplot(corData,method = "number", type = "lower", #下三角col=colorRampPalette(c('#0000ff','#ffffff','#ff0000'))(100), # 主体颜色add = T, # 是否在原来的图层上添加图形diag = F, # 是否显示主对角order = "original", na.label = "", # 当为NA时,显示的内容p.mat = testRes$p, # P值矩阵sig.level = 0.05, # 当p大于sig.level时触发动作
)
dev.off()
ggcorrplot包ggcorrplot函数
数据
rm(list = ls())
library(ggcorrplot)
library(ggtext)
data(mtcars)
corr <- round(cor(mtcars), 2)#相关系数(保留2位小数)
p.mat <- cor_pmat(mtcars)##P值
作图
(这个图例要小很多)
?ggcorrplot
ggcorrplot(corr, method = "square", #"square", "circle"type ="full" , #full完全(默认),lower下三角,upper上三角ggtheme = ggplot2::theme_minimal,title = "ABCD",show.legend = TRUE, #是否显示图例。legend.title = "CorrA", #指定图例标题。show.diag =T , #对角线colors = c("blue", "white", "red"), #颜色设置outline.color = "white", #指定方形或圆形的边线颜色hc.order = FALSE, #是否按hclust(层次聚类顺序)排列##显示相关性系数设置lab =F , #是否添加相关系数lab_col = "black", #相关系数的颜色,只有当lab=TRUE时有效lab_size = 4, #指定相关系数大小,只有当lab=TRUE时有效。#P值显示p.mat = p.mat , #p.mat= p_mat,insig= "pch", pch.col= "red", pch.cex= 4,sig.level = 0.05,#P值insig = c("pch", "blank"),#显示Xpch = 8, #8为星号pch.cex = 4, #大小#标签tl.cex = 10, #指定变量文本的大小,tl.col = "black", #指定变量文本的颜色,tl.srt = 45, #指定变量文本的旋转角度。digits = 2 #指定相关系数的显示小数位数(默认2)。)
dev.off()
如果需要显示相关性系数:展示
##显示相关性系数设置
lab =T , #是否添加相关系数
lab_col = "black", #相关系数的颜色,只有当lab=TRUE时有效
lab_size = 4, #指定相关系数大小,只有当lab=TRUE时有效。
计算矩阵后使用pheatmap作图
pheatmap作图可以更好的展示P值
数据准备
rm(list = ls())
library(ggcorrplot)
library(ggtext)
library(psych)
library(pheatmap)
library(reshape2)data(mtcars)
corr <- round(cor(mtcars), 2)
p.mat <- cor_pmat(mtcars)
table(p.mat<0.05)#P计数##对所有p值进行判断,p<0.01的以“**”标注,p值0.01<p<0.05的以“*”标注
if (!is.null(p.mat)){ssmt <- p.mat< 0.01p.mat[ssmt] <-'**'smt <- p.mat >0.01& p.mat <0.05p.mat[smt] <- '*'p.mat[!ssmt&!smt]<- ''
} else {p.mat <- F
}
作图
#自定义颜色范围
mycol<-colorRampPalette(c("blue","white","tomato"))(100)
#绘制热图,可根据个人需求调整对应参数
?pheatmap
pheatmap(corr,scale = "none",#均一化处理cluster_row = T, #行距类cluster_col = T, #列聚类treeheight_col = 0, #设置为0 即不显示聚类树treeheight_row = 20,#行聚类树border=NA,#边框颜色display_numbers = p.mat,##显著性标记fontsize_number = 12, number_color = "white",cellwidth = 20, #格子宽度cellheight =20,#格子高度color=mycol,#颜色legend=T,#是否显示图例main="ABCD")#标题
dev.off()
参考:
1:医学统计学/孙振球,徐勇勇主编.—4版.一北京:人民卫生出版社,2014
2:R语言实战/(美)卡巴科弗(Kabacoff,R.I.)著;高涛,肖楠,陈钢译.--北京:人民邮电出版社,
2013.1
3:R语言---相关系数_r语言相关系数-CSDN博客
相关文章:

相关性分析和作图
相关的类型 1. Pearson、Spearman和Kendall相关 Pearson 积差相关系数衡量了两个定量变量之间的线性相关程度。(连续) Spearman等级相关系数则衡量分级定序变量之间的相关程度。(分类) Kendall’s Tau 相关系数也是一种非参数的…...

AlphaFold的原理及解读
1、背景 蛋白质是生物体内一类重要的生物大分子,其结构复杂多样,蛋白质的结构对于理解其功能和参与的生物学过程具有重要意义。从生物学角度上看,蛋白质的结构可以分为四个层次:初级结构、二级结构、三级结构和四级结构。 初级结…...

【ChatGLM3-6B】Docker下快速部署
【ChatGLM2-6B】小白入门及Docker下部署 前提下载安装包网盘地址 开始安装加载镜像启动镜像进入容器启动模型交互页面访问页面地址 前提 安装好了docker安装好了NVIDIA显卡16G 下载安装包 网盘地址 这里因为网盘上传文件有大小限制,所以使用了分卷压缩的方式…...

两部手机数据传输后备忘录不见了怎么回事
想必很多人都遇到过,当两部手机进行备忘录数据传输后,突然发现备忘录不见了,这让人不禁着急上火,我也曾经遇到过这种事情导致很多重要的内容都丢失了。 一般出现这种情况可能是因为,两部手机使用的是不同的云服务&…...
【Unity入门】LayerMask小结
LayerMask常用的几种方法 LayerMask.GetMask 根据 层名称 获取其层遮罩值 遮罩值 2^层索引 假设 UserLayerA 和 UserLayerB 是第十层和第十一层。 这两个层会具有 User Layer 值 10 和 11。若要获取其层遮罩值, 可以将其名称传入 GetMask。参数可以是 其名称的列…...
mysql按年、季度、月,统计
以下是按年、按季度和按月统计SQL查询语句: 按年统计: SELECTds.checker,YEAR(ds.create_time) AS settleYear,SUM(ds.quantity) AS quantity,SUM(ds.approval_price) AS approvalPrice FROMdata_settle ds WHEREds.delete_flag 0AND ds.approval_sta…...

Python的换行和转义:深入理解代码排版与字符串处理
更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python的换行和转义:深入理解代码排版与字符串处理,全文2700字,阅读大约8分钟。 在Python编程中,正确使用换行和转义字符是保…...

dart多线程双向通信的案例----【小学4年级课程】
下面是运行后的打印顺序 I/flutter (20170): 上班 I/flutter (20170): 这里是校长室:main I/flutter (20170): 这里是饭堂:fantang1 I/flutter (20170): 这里是收发室--检查小孩发回去给他妈妈的信息是:我是秘书的儿子,我来到在校长室了。校长今晚想吃羊…...

每日一练:简易计算器
1. 题目 设计实现一个简易的计算器,可以进行加减乘除的计算。可以考虑通过GUI和命令行输入等方式实现。 2. 设计思路 创建一个简单的用户界面,可以使用 Python 的 Tkinter模块。在界面上放置按钮,每个按钮代表一个数字、运算符或其他功能。…...

Jmeter和Testlink自动化测试框架研究与实施
摘 要 目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用…...
MethodArgumentNotValidException 与 ConstraintViolationException
MethodArgumentNotValidException 和ConstraintViolationException 都是用于处理参数校验异常的异常类,但它们在不同的上下文中使用。 1. MethodArgumentNotValidException: - MethodArgumentNotValidException 是在 Spring MVC 或 Spring Boot 中处…...

【数学】旋转矩阵
参考链接 OpenGL from OpenGL.GL import * from OpenGL.GLUT import * from math import * import numpy as np def draw_axes():glClear(GL_COLOR_BUFFER_BIT)# 绘制坐标轴glColor3f(1.0, 1.0, 1.0) # 设置坐标轴颜色为白色glBegin(GL_LINES)glVertex2f(-1.0, 0.0) # x 轴g…...
Python与设计模式--中介者模式
23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...

后台管理系统开源项目
最近项目没有什么事做,就自己整理,修改了一些vue2,react的后台管理系统项目,方便以后有需要可以直接提取,当然也方便了大家 vue2技术栈 lyl-vueProjectAdmin: vue2后台管理系统 react技术栈 lyl-reactAdminProject:…...

电子印章管理系统:是什么、3个平台推荐
说到印章,相信看过近现代电视剧的人都见过,一般在订立合约时最常用到,双方在合约上加盖印鉴,即代表着合约的成立。 我小时候还见过我父亲的印章,只是随着时代的发展,印章因为不易携带,容易被盗…...

现货黄金区间交易的两个要点
在现货黄金市场中,我们常碰到横盘区间行情。有区间,就终究会出现突破,因为金价不可能缺乏方向而一直在区间内运行。那既然要突破,我们又应当如何应对和交易呢?下面我们就来讨论一下。 切忌在突破发生时马上跟随突破方向…...
安卓底部导航栏BottomNavigationView
目录 1. BottomNavigationView (1) 准备BottomNavigationView使用的菜单资源文件 (2) 准备颜色选择器 (3) BottomNavigationView控件设置 (4) 在Java代码中设置OnItemSelectedListener监听器 (5) 与Fragment配合 2. BottomTabBar 实现安卓底部导航栏,google为…...
rust每日一库 rand 生成随机数
文章目录 生成随机值生成随机数生成范围内随机数生成自定义类型随机值从一组字母数字字符创建随机密码从一组用户定义字符创建随机密码 总结 生成随机值 rust中官方并没有像以他语言一样,rust并没有官方并没有提供生成随机数的工具,所以我们要借助rand包…...

Unity SRP 管线【第三讲:URP 光照】
3.2.3 以前属于Shader部分,Shader部分不进行讲解。 这里只涉及Unity内部管线的设置问题。 文章目录 3.2.3 向GPU发送灯光数据设置光源数据设置主光源设置额外点光源 Shader中的数据 3.2.3 向GPU发送灯光数据 在UniversalRenderPipeline.cs > RenderSingleCamera…...

怎么更新BI报表数据?问我就对了
BI大数据分析工具上有大量的BI报表模板,这些模板都是一个个完整的BI报表,只需将数据源更换,立即就能用来分析我们自己的数据。那,BI报表的数据怎么更新?接下来就来说说这事。 目的:更新BI报表数据 工具&a…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...