相关性分析和作图

相关的类型

1. PearsonSpearmanKendall相关
Pearson 积差相关系数衡量了两个定量变量之间的线性相关程度。(连续)
Spearman等级相关系数则衡量分级定序变量之间的相关程度。(分类)
Kendall’s Tau 相关系数也是一种非参数的等级相关度量。
cor() 函数可以计算这三种相关系数,而 cov() 函数可用来计算协方差。两个函数的参数有
很多,其中与相关系数的计算有关的参数可以简化为:
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. 偏相关
偏相关 是指在控制一个或多个定量变量时,另外两个定量变量之间的相互关系。你可以使用
ggm 包中的 pcor() 函数计算偏相关系数。
library(ggm)
pcor(c(1,5,2,3,6),cov(states))
[1] 0.3462724
在控制了收入、文盲率和高中毕业率的影响时,人口和谋杀率之间的相关系数为
0.346

pcor(c(1,5,2,3,6),cov(states))##控制了变量

相关性的显著性检验

cor.test()

可以使用cor.test()函数对单个的PearsonSpearmanKendall相 系数进行检验。简化后的使用格式为:

cor.test(x, y,alternative = c("two.sided", "less", "greater"),#指定进行双侧检验或单侧检验method = c("pearson", "kendall", "spearman"),#计算的相关类型exact = NULL, conf.level = 0.95, continuity = FALSE, ...)
当研究的假设为总体的相关系数小于 0 时,请使用alternative= "less" 。在研究的假设为总体的相关系数大于 0 时,应使用 alternative="greater"。在默认 情况下,假设为 alternative="two.side" (总体相关系数不等于 0 )。
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 
这段代码检验了预期寿命和谋杀率的 Pearson 相关系数为 0的原假设。及预期寿命和谋杀率存在相关性。
corr.test()更好
cor.test 每次只能检验一种相关关系。但幸运的是, psych包中提供的 corr.test() 函数可以一次做更多事情。 corr.test() 函数可以为 Pearson Spearman 或Kendall 相关计算相关矩阵和显著性水平。
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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/179105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言--不创建第三个变量,实现对两个数字的交换

我们先来看一下&#xff0c;创建临时变量交换两个数字。 #include<stdio.h> {int a2;int b3;int tmp0;printf("before:a%d b%d\n",a,b);tmpa;ab;btmp;printf("after:a%d b%d\n",a,b);return 0; } 图解&#xff1a; 运行结果&#xff1a; 再看一下不…

第二十章(多线程)

一.线程的简介 Windows操作系统是多任务操作系统&#xff0c;它以进程为单位。一个进程是一个包含有自身地址的程序&#xff0c;每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进程。系统可以分配给每一个进程有一段有限的使用CPU的时间&#xff08;也可以…

Gossip协议理解

概述 Gossip协议&#xff0c;又称epidemic协议&#xff0c;基于流行病传播方式的节点或进程之间信息交换的协议&#xff0c;在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中…

与 PCIe 相比,CXL为何低延迟高带宽?

文章目录 前言1. LatencyPCIE 生产者消费则模型结论Flit 包PCIE/CXL.ioCXL.cace & .mem总结 2. BandWidth常见开销CXL.IO Link efficiencyPCIe Link efficiencyCXL.IO bandwidthCXL.mem/.cache bandwidth 参考 前言 CXL 规范里没有具体描述与PCIe 相比低延时高带宽的原因&…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-10:低功耗 Tickless 模式)

学习之路主要为FreeRTOS操作系统在STM32F103&#xff08;STM32F103C8T6&#xff09;上的运用&#xff0c;采用的是标准库编程的方式&#xff0c;使用的IDE为KEIL5。 注意&#xff01;&#xff01;&#xff01;本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

因为计算机中丢失MSVCP140.dll,无法启动此程序运行软件的解决方法

msvcp140.dll重新安装五个解决方法与msvcp140.dll文件的作用和丢失对电脑的影响介绍 正文&#xff1a; 在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“缺少xxx.dll文件”。而msvcp140.dll就是其中之一。那么&#xff0c;msvcp140.…

(三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Q1&#xff1a;卷积网络和传统网络的区别Q2:卷积神经网络的架构Q3:卷积神经网络中的参数共享&#xff0c;也是比传统网络的优势所在4、 具体的实现代码网络搭建…

Linux Nmap命令解析(Nmap指令)(功能:主机发现、ping扫描、arp扫描、端口扫描、服务版本检测、操作系统识别等)

文章目录 Linux Nmap 命令解析简介Nmap 的核心功能主机发现端口扫描服务版本检测OS 指纹识别&#xff08;操作系统指纹识别&#xff09;脚本扫描 安装 NmapNmap 命令结构Nmap 命令文档英文中文 主机发现Ping 扫描ARP 扫描关于nmap -PR&#xff08;ARP Ping Scan&#xff09;和n…

CentOS7.9虚拟机EDA环境,支持模拟集成电路、数字集成电路、数模混合设计全流程,包含工艺库

目录 前言一、配置准备工作1.1 网盘文件说明1.2 EDA工具介绍 二、虚拟机运行2.1 虚拟机工具启动2.2 软件配置使用2.3 Module工具切换环境变量和软件版本 获取方法附录&#xff1a;部分EDA工具运行效果图 前言 搭建了CentOS7.9虚拟机环境&#xff0c;工具包括但不限于&#xff…

json处理由fastjson换jackjson

fastjson没有jackjson稳定&#xff0c;所以换成jackjson来处理对象转json和json转对象问题。 首先下载jackjson包&#xff0c;三个都要引用 然后修改实现类 package JRT.Core.Util;import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.ja…

安防视频监控汇聚EasyNVR视频集中存储平台级联上级时下级未回复原因是什么?该如何解决?

安防监控系统EasyNVR视频云存储平台可实现设备接入、实时直播、录像、检索与回放、视频云存储、视频分发等视频能力服务&#xff0c;可覆盖全终端平台&#xff08;pc、手机、平板等终端&#xff09;&#xff0c;在智慧工厂、智慧工地、智慧社区、智慧校园等场景中有大量落地应用…

unity3d地图、地面跟着NPC跑

清除烘焙后&#xff0c;再 将地图、地面的设置为非静态。只设置NPC的寻路路面为静态&#xff0c;再烘焙

VS2010配置opencv2.4.10

1.下载opencv2.4.10&#xff0c;百度网盘链接如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1UdoQJbRUEB_G2urT703xYQ 提取码&#xff1a;7lbd 2.运行opencv-2.4.10.exe&#xff0c;将文件提取到一个自定义目录里&#xff1a; 3.添加系统环境变量 在“系统变量…

持续集成交付CICD:GitLab Webhook触发Jenkins流水线

目录 一、实验 1.Jenkins远程下载GiaLab仓库代码 2.curl远程触发Jenkins流水线 3.GitLab Webhook触发Jenkins流水线 二、问题 1.GitLab配置Webhook时报错 一、实验 1.Jenkins远程下载GiaLab仓库代码 (1) Jenkins添加选项参数 (2)添加字符参数 (3)查看构建参数情况 (4)添…

C++ 背包理论基础01 + 滚动数组

背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态&#xff0c;取或者不…

桥接设计模式

package com.jmj.pattern.bridge;/*** 视频文件(实现化角色)*/ public interface VideoFile {void decode(String fileName); }package com.jmj.pattern.bridge;public class RmvFile implements VideoFile{Overridepublic void decode(String fileName) {System.out.println(&…

语文老师怎么和家长沟通

作为一位语文老师&#xff0c;深知教育不单单是传授知识&#xff0c;更是引导学生发展潜能&#xff0c;培养品格。而在这个过程中&#xff0c;与家长建立良好的沟通关系是至关重要的。 建立信任关系 与家长沟通的第一步是建立信任关系。作为老师&#xff0c;需要展现出专业、热…

堆排序(详解)

在上篇文章中&#xff0c;我们说利用堆的插入和删除也可以排序数据&#xff0c;但排序的只是堆里面的数组&#xff1b;同时每次排序数据都要单独写一个堆的实现&#xff0c;很不方便&#xff0c;这次就来着重讲讲如何使用堆排序。 1.建堆 给了你数据&#xff0c;要利用堆对数据…

开发定制化抖音票务小程序的技术解析

通过定制化抖音票务小程序&#xff0c;可以为用户提供更加个性化的活动体验&#xff0c;同时也为企业和品牌提供了更多的营销机会。 一、小程序开发框架的选择 在开发定制化抖音票务小程序之前&#xff0c;选择合适的小程序开发框架至关重要。目前&#xff0c;主流的小程序框…