前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言做冗余分析(RDA)的一个简单小例子

R语言做冗余分析(RDA)的一个简单小例子

作者头像
用户7010445
发布于 2021-03-15 02:43:41
发布于 2021-03-15 02:43:41
4.4K00
代码可运行
举报
运行总次数:0
代码可运行

冗余分析(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

image.png

论文对应的数据和代码

https://datadryad.org/stash/landing/show?id=doi%3A10.5061%2Fdryad.1s7v5

https://github.com/Capblancq/RDA-genome-scan

今天的推文重复一下这个论文里的冗余分析的代码

首先是读入数据

sim1.csv这个数据集1:14列是环境数据,后面都是基因型数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geno<-read.csv("sim1.csv")[,-c(1:14)]
env<-read.csv("sim1.csv")[,c(1:14)]
geno[1:6,1:6]
head(env)
对基因型数据进行过滤

这里又涉及到了最小等位基因频率这个概念

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MAF <- 0.05
frequencies <- colSums(geno)/(2*nrow(geno))
maf <- which(frequencies > MAF & frequencies < (1-MAF))
geno <- geno[,maf]
接下来就是RDA分析了
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

image.png

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言做基因表达量和变异位点的关联分析eQTL
http://www.bios.unc.edu/research/genomic_software/Matrix_eQTL/runit.html
用户7010445
2024/05/09
3060
R语言做基因表达量和变异位点的关联分析eQTL
跟着Nature Communications学数据分析:R语言LEA包做变异位点和环境数据的关联分析
https://www.nature.com/articles/s41467-022-34206-8
用户7010445
2023/11/20
4950
跟着Nature Communications学数据分析:R语言LEA包做变异位点和环境数据的关联分析
Day7:R语言课程 (R语言进行数据可视化)
在本课中需要制作与每个样本中的平均表达量相关的多个图,还需要使用所有可用的metadata来适当地注释图表。
科研菌
2020/12/22
6.7K0
Day7:R语言课程 (R语言进行数据可视化)
跟着NC学数据分析:R语言用分子距离/环境距离/地理距离做mantel检验
https://www.nature.com/articles/s41467-022-34206-8
用户7010445
2024/07/02
4690
跟着NC学数据分析:R语言用分子距离/环境距离/地理距离做mantel检验
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
1190
全网最全的R语言基础图形合集
R语言之可视化①③散点图+拟合曲线目录
gene2) Pearson's product-moment correlation data: data gene1 and data$gene2 t = 2.4858, df = 395, p-value = 0.01334 95 percent confidence interval: 0.02600102 0.21984192 cor 0.1241053
用户1359560
2018/12/14
2.4K0
R语言之可视化①③散点图+拟合曲线目录
R语言里做生态位分化分析(1)背景知识查询
发现ggtree的作者Y叔也关注了这个R包的作者的github。那这个作者也是个大佬无疑了。
用户7010445
2024/06/07
2090
R语言里做生态位分化分析(1)背景知识查询
跟着Science学作图:R语言ggplot2散点/连线/95%置信椭圆展示主成分分析结果
https://www.science.org/doi/10.1126/science.abk0989
用户7010445
2022/04/08
1.7K0
跟着Science学作图:R语言ggplot2散点/连线/95%置信椭圆展示主成分分析结果
ggplot: PCA~DCA~NMDS~PCoA~CCA
上周在南京举办了第三期微生物群落生态学信息分析研讨培训班。有学员想要我之前写的ggplot画图的代码。其实类似的代码在网上已经有很多了,不需要什么搜索技巧就能找到。我的这些代码就有一些参考了别人的。
Listenlii-生物信息知识分享
2020/05/29
1.7K0
R语言ggplot2绘制曼哈顿图展示GWAS分析的结果
之前分享过一篇推文介绍过这个内容 R语言ggplot2包画曼哈顿图的一个简单小例子,但是当时自己不太懂曼哈顿图,实现是直接借助ggplot2的geom_jitter()这个函数实现的。这个函数并不会考虑每个变异位点的位置,而实际的曼哈顿图是需要根据变异位点的位置来画的。今天的推文重新介绍一下ggplot2绘制曼哈顿图的代码。数据集就使用之前的推文中用到的数据跟着Nature Genetics学GWAS分析:emmax软件gwas分析/qqman包展示结果,这个数据太大,出图有些慢,只随机选取了其中1%的数据 (这个数据我自己的存储路径population.genomics/gwas/NG.tomato/at/)。
用户7010445
2023/09/21
1.1K0
R语言ggplot2绘制曼哈顿图展示GWAS分析的结果
跟着Science学作图:R语言ggplot2画箭头展示变量对主成分的贡献
https://www.science.org/doi/10.1126/science.abk0989
用户7010445
2022/05/23
7730
跟着Science学作图:R语言ggplot2画箭头展示变量对主成分的贡献
ggplot2-plotly|让你的火山图“活”过来
火山图(Volcano Plot)常用于展示基因表达差异的分布,横坐标常为Fold change(倍数),越偏离中心差异倍数越大;纵坐标为P value(P值),值越大差异越显著。得名原因也许是因为结果图像火山吧
生信补给站
2020/08/06
3.4K0
R语言实现PCOA分析
大家对主成分分析(principal components analysis, PCA) 都很熟悉,但是今天我们来介绍下主坐标分析(principal coordinate analysis, PCoA)。那么这两个差了个o字母具体有什么区别?首先PCA是常用的降维算法;利用线性变换,将数据变换到一个新的坐标系统中;然后再利用降维的思想,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上。这种降维的思想首先减少数据集的维数,同时还保持数据集的对方差贡献最大的特征,最终使数据直观呈现在二维坐标系。PCoA主要是探索数据相似度或者相异度可视化方法。可呈现研究数据相似性或差异性的可视化坐标,是一种非约束性的数据降维分析方法,可用来研究样本群落组成的相似性或相异性。其实通俗的讲,PCA主要是基于原始数据矩阵的降维;PCoA主要是基于样本的原始数据计算出来的距离矩阵的降维。如果样本数目比较多,而物种数目比较少,那肯定首选PCA;如果样本数目比较少,而物种数目比较多,那肯定首选PCoA。
一粒沙
2019/12/19
11K1
跟着Molecular Ecology学数据分析:R语言lfmm包做环境数据和变异数据的关联分析
https://onlinelibrary.wiley.com/doi/abs/10.1111/mec.16788
用户7010445
2023/11/27
1.1K0
跟着Molecular Ecology学数据分析:R语言lfmm包做环境数据和变异数据的关联分析
R函数,如何“抄”出水平
前面给大家介绍了,自己不会写R函数如何去“抄”高手写好的函数,我们直接“拿来”用就可以了。有读者反映为什么不直接用gdcVolcanoPlot这个函数,既然人家都已经写好了。这是一个很好的问题,这里我解答一下。原因有两个
生信交流平台
2020/10/23
9800
R函数,如何“抄”出水平
R语言之 ggplot 2 和其他图形
ggplot2 包提供了一套基于图层语法的绘图系统,它弥补了 R 基础绘图系统里的函数缺乏一致性的缺点,将 R 的绘图功能提升到了一个全新的境界。ggplot2 中各种数据可视化的基本原则完全一致,它将数学空间映射到图形元素空间。想象有一张空白的画布,在画布上我们需要定义可视化的数据(data),以及数据变量到图形属性的映射(mapping)。
timerring
2023/10/13
8210
R语言之 ggplot 2 和其他图形
R语言ggplot2气泡图叠加图片的简单小例子
之前有人在公众号留言问这幅图的实现办法,这个是气泡图,用ggplot2很方便能够实现,但是这个图比较特殊的是横坐标还有对应的图片,当然出图以后用其他软件来编辑是可以实现的,但是对齐之类的可能会比较麻烦。如果能用代码实现就能节省一些时间,正好最近看到一个ggplot2的扩展包 叫做 ggimg 对应的github的主页是 https://github.com/statsmaths/ggimg
用户7010445
2021/08/31
1.4K0
R语言ggplot2气泡图叠加图片的简单小例子
单基因TCGA的Cox森林图
Molcular Profile Cox Analysis 输入一个你想要的基因,比如RAC3,`Select Measure for plot可以设置OS,PFI,DSS和DFI`,然后点上方的搜索🔍,就可以看到出的图了 需要的结果 继续往下滚动鼠标,就可以看到数据了,而且还可以下载 数据在这 得到数据以后就可以用R画图了,注意,这里的HR和CI都是Log过的结果,跟别的地方计算的Cox结果有些不一样,可能是方法不一样吧,是因为网站计算的HR结果相差太大了吗? 由于是log过的结果,所以森林图
花落花相惜
2021/11/26
4520
R语言的ggplot2+ggforce包绘制散点图并添加分组边界
这里会遇到一个警告信息Warning message: The concaveman package is required for geom_mark_hull需要安装并加载concaveman这个包 ··· install.packages("concaveman") library(concaveman) ···
用户7010445
2021/03/15
2K0
跟着Nature学数据分析:plink计算SNP和SV之间的连锁不平衡R方值
https://www.nature.com/articles/s41586-022-04808-9
用户7010445
2024/05/27
5950
跟着Nature学数据分析:plink计算SNP和SV之间的连锁不平衡R方值
推荐阅读
相关推荐
R语言做基因表达量和变异位点的关联分析eQTL
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验