前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R中做零模型

R中做零模型

作者头像
Listenlii-生物信息知识分享
发布2021-03-26 15:13:32
3.1K0
发布2021-03-26 15:13:32
举报
文章被收录于专栏:Listenlii的生物信息笔记

前几天有人问我R里面怎么做零模型。 有现成的函数,picante包的randomizeMatrix直接就搞定了。 我回复之后随便在网上搜了一下,意外发现竟然没有搜到相关的文章。 那就简单写写吧。

代码语言:javascript
复制
1randomizeMatrix(samp, null.model = c("frequency", "richness",
2    "independentswap", "trialswap"), iterations = 1000)    
3#参数:
4samp:群落数据
5null.model:零模型构建方式
6iterations:迭代次数    

frequency:

物种出现频率固定,随机化物种内丰度; richness:

样本内物种丰富度固定,随机化样本内的丰度; independentswap:

同时固定物种出现频率和样本内物种丰富度,根据 (Gotelli 2000) 的独立交换算法(independent swap algorithm)进行随机化; trialswap:同时固定物种出现频率和样本内物种丰富度,根据(Miklos & Podani 2004) 的trial-swap算法进行随机化。

除此之外,在计算PD,MPD,MNTD的效应量时,也需要打乱距离矩阵来构建零模型。方法包括: taxa.labels:

打乱距离矩阵上所有物种的标签。 richness:

固定样本的物种丰富度,随机化样本内部的丰度。 frequency:

固定物种发生率,随机化物种内丰度。 sample.pool:

以相同概率从所有物种池(至少在一个样本中出现的物种的集合)中抽取物种进行随机化。 phylogeny.pool:

以相同概率从所有系统发育池(在距离矩阵中出现)中抽取物种进行随机化。 independentswap:同上 trialswap:同上

swap algorithm: 这种方法从原始矩阵开始,随机选择2 × 2的子矩阵,主对角线上是1,其他是0,反之亦然(即所谓的“棋盘单位”)。 交换0和1产生一个新的矩阵,使行和列总数保持不变,并且这个新矩阵可以进行另一次随机交换,以此类推。 trial‐swap algorithm: 原始的swap algorithm可能产生有偏的分布,trial‐swap是它的修改版本,对矩阵的交换次数进行了限制,使得结果收敛于均匀分布。

当然随机化的算法远不止以上提及的这些。。。

各种随机化方法可能存在两个问题: 1.随机化方法不是真正的随机化,而是伪随机化,产生的分布并不是真正随机的,而是有偏的。 2.对于微生物群落研究,如果方法太过随机化,得到的零模型群落和实际观测群落必然产生很大的偏差,那么所有过程都将是确定性的。如果随机化程度太小,则又和观测群落差别不大,过程将是随机的。如何选择方法非常重要。整个群落构建我感觉都挺坑的。。。

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

本文分享自 Listenlii 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档