如何用R语言做冗余分析
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,今天就跟大家聊聊有关如何用R语言做冗余分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。冗余分析(redundancy analysis, R
千家信息网最后更新 2025年12月03日如何用R语言做冗余分析
今天就跟大家聊聊有关如何用R语言做冗余分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
冗余分析(redundancy analysis, RDA)自己之前也听过,好像是生态学研究中用的比较多,主要是用来探索环境和一些样本指标之间的关系。最近自己在看一些群体遗传相关的内容,发现RDA也可以用在群体遗传方面 ,比如这个参考链接 https://popgen.nescent.org/2018-03-27_RDA_GEA.html 就介绍了这个分析,主要研究内容自己还没有看明白:大体好像是利用芯片技术测了一些狼的基因型,同时采集了狼生活地点的环境数据,利用RDA同时分析基因型数据和环境数据。这个看的还有些模棱两可,还需要仔细看看。这个链接对应的两篇论文
https://onlinelibrary.wiley.com/doi/abs/10.1111/mec.13364

https://onlinelibrary.wiley.com/doi/full/10.1111/mec.14584

找资料的时候还找到了另外一篇论文
https://onlinelibrary.wiley.com/doi/abs/10.1111/1755-0998.12906
论文对应的数据和代码
https://github.com/Capblancq/RDA-genome-scan
今天的推文重复一下这个论文里的冗余分析的代码
首先是读入数据sim1.csv这个数据集1:14列是环境数据,后面都是基因型数据
geno<-read.csv("sim1.csv")[,-c(1:14)]
env<-read.csv("sim1.csv")[,c(1:14)]
geno[1:6,1:6]
head(env)
对基因型数据进行过滤这里又涉及到了最小等位基因频率这个概念
MAF <- 0.05
frequencies <- colSums(geno)/(2*nrow(geno))
maf <- which(frequencies > MAF & frequencies < (1-MAF))
geno <- geno[,maf]
接下来就是RDA分析了library(vegan)
RDA <- rda(geno ~ env$envir1 + env$envir2 + env$envir3 + env$envir4 + env$envir5 + env$envir6 + env$envir7 + env$envir8 + env$envir9 + env$envir10, env)
library(ggplot2)
p1<-ggplot() +
geom_line(aes(x=c(1:length(RDA$CCA$eig)), y=as.vector(RDA$CCA$eig)), linetype="dotted", size = 1.5, color="darkgrey") +
geom_point(aes(x=c(1:length(RDA$CCA$eig)), y=as.vector(RDA$CCA$eig)), size = 3, color="darkgrey") +
scale_x_discrete(name = "Ordination axes", limits=c(1:9)) +
ylab("Inertia") +
theme_bw()
#library(robustbase)
#install.packages("robust")
# library("robust")
# library(qvalue)
rdadapt<-function(rda,K)
{
loadings<-rda$CCA$v[,1:as.numeric(K)]
resscale <- apply(loadings, 2, scale)
resmaha <- covRob(resscale, distance = TRUE, na.action= na.omit, estim="pairwiseGK")$dist
lambda <- median(resmaha)/qchisq(0.5,df=K)
reschi2test <- pchisq(resmaha/lambda,K,lower.tail=FALSE)
qval <- qvalue(reschi2test)
q.values_rdadapt<-qval$qvalues
return(data.frame(p.values=reschi2test, q.values=q.values_rdadapt))
}
res_rdadapt<-rdadapt(RDA, 5)
p2<-ggplot() +
geom_point(aes(x=c(1:length(res_rdadapt[,1])), y=-log10(res_rdadapt[,1])), col = "gray83") +
geom_point(aes(x=c(1:length(res_rdadapt[,1]))[which(res_rdadapt[,2] < 0.1)], y=-log10(res_rdadapt[which(res_rdadapt[,2] < 0.1),1])), col = "orange") +
xlab("SNPs") + ylab("-log10(p.values)") +
theme_bw()
which(res_rdadapt[,2] < 0.1)
p3<-ggplot() +
geom_point(aes(x=RDA$CCA$v[,1], y=RDA$CCA$v[,2]), col = "gray86") +
geom_point(aes(x=RDA$CCA$v[which(res_rdadapt[,2] < 0.1),1], y=RDA$CCA$v[which(res_rdadapt[,2] < 0.1),2]), col = "orange") +
geom_segment(aes(xend=RDA$CCA$biplot[,1]/10, yend=RDA$CCA$biplot[,2]/10, x=0, y=0), colour="black", size=0.5, linetype=1, arrow=arrow(length = unit(0.02, "npc"))) +
geom_text(aes(x=1.2*RDA$CCA$biplot[,1]/10, y=1.2*RDA$CCA$biplot[,2]/10, label = colnames(env[,2:11]))) +
xlab("RDA 1") + ylab("RDA 2") +
theme_bw() +
theme(legend.position="none")
library(patchwork)
p1/(p2+p3)
看完上述内容,你们对如何用R语言做冗余分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
数据
分析
内容
基因
冗余
环境
论文
语言
代码
同时
群体
链接
研究
遗传
最小
模棱
模棱两可
接下来
中用
之间
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深渊之巢服务器
湖北统一软件开发服务标准
杭州专业软件开发平台
数据库建立自定义数据类型
数据库创意模型
国家网络安全与360
服务器安全市场规模
服务器小图标
腾讯买的服务器怎么使用
软件开发项目管理系统软件
软件开发也属于实体
打开数据库的网址是什么意思
总公司 网络安全管理办法
广电 软件开发部门上班时间
学习网络安全怎么学
长沙新生命网络技术工作室
广州哪些地方软件开发的多
福田区新一代网络技术开发商家
微信电脑版一直显示服务器异常
粤众互联网科技广东有限公司
家用nas能用华为服务器硬盘吗
二手服务器回收近期行情
如何确保部队网络安全
网络安全职称职务
ncbi所有数据库简
法制和网络安全知识讲座
计算机三级网络技术哪几题
丰台服务器硬盘回收价格查询
服务器配置需求文档
松潘软件开发项目管理