如何用R语言做冗余分析
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,今天就跟大家聊聊有关如何用R语言做冗余分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。冗余分析(redundancy analysis, R
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
应对网络安全的药
佛山市优通网络技术
湖州软件开发互动平台在线学习
浪潮服务器软raid设置
甘肃智慧养老软件开发系统
信息系统中的数据库
万方医学网可以查全万方数据库吗
荔湾软件开发专业院校
解雇美国网络安全局局长
数据库用什么语言编辑
优秀中小学网络安全案例
网站数据库怎么才安全
网络安全中什么是中段
数据库技术领域的dba
tp钱包软件开发
网络安全相辅相成
视频监控网络安全运维
通过云服务器
软件开发区块链
广东深圳海讯网络技术
浦东新区加工软件开发活动
sql 数据库年龄
关系数据库是用
网络安全火眼金睛游戏
茄子网络安全手抄报
软件开发岗位和测试岗哪个好
scum设置自己的服务器
团区委网络安全
超融合为什么要3台服务器
嵌入式软件开发区网红小吃