Dirichlet Multinomial Mixtures (DMM)的R实现
Dirichlet Multinomial Mixtures
Community typing with Dirichlet Multinomial Mixtures
Dirichlet Multinomial Mixtures (DMM) 是一种用于对微生物群落分析数据进行群落分型(或聚类)的概率方法。 这是一个无限的混合模型,这意味着该方法可以推断出最佳数量的群落类型。 请注意,群落类型的数量可能会随数据大小而增长。
library(microbiome)
library(DirichletMultinomial)
library(reshape2)
library(magrittr)
library(dplyr)
# Load example data
data(dietswap)
pseq <- dietswap# To speed up, only consider the core taxa
# that are prevalent at 0.1% relative abundance in 50% of the samples
# (note that this is not strictly correct as information is
# being discarded; one alternative would be to aggregate rare taxa)
pseq.comp <- microbiome::transform(pseq, "compositional")
taxa <- core_members(pseq.comp, detection = 0.1/100, prevalence = 50/100)
pseq <- prune_taxa(taxa, pseq)# Pick the OTU count matrix
# and convert it into samples x taxa format
dat <- abundances(pseq)
count <- as.matrix(t(dat))
拟合 DMM 模型.,让我们将群落类型的最大允许数量设置为3,以加速示例。
fit <- lapply(1:3, dmn, count = count, verbose=TRUE)
## Soft kmeans
## Expectation Maximization setup
## Expectation Maximization
## Hessian
## Soft kmeans
## iteration 10 change 0.000029
## Expectation Maximization setup
## Expectation Maximization
## iteration 10 change 0.000000
## Hessian
## Soft kmeans
## iteration 10 change 0.030731
## iteration 20 change 0.000110
## Expectation Maximization setup
## Expectation Maximization
## iteration 10 change 0.000063
## Hessian
判断拟合效果
lplc <- sapply(fit, laplace) # AIC / BIC / Laplace
aic <- sapply(fit, AIC) # AIC / BIC / Laplace
bic <- sapply(fit, BIC) # AIC / BIC / Laplace
#plot(lplc, type="b", xlab="Number of Dirichlet Components", ylab="Model Fit")
#lines(aic, type="b", lty = 2)
#lines(bic, type="b", lty = 3)
选择最佳模型
best <- fit[[which.min(unlist(lplc))]]
参数pi及theta
mixturewt(best)
## pi theta
## 1 0.3738027 159.10473
## 2 0.3188891 81.91265
## 3 0.3073082 64.24696
元素(otu)分配给不同cluster
ass <- apply(mixture(best), 1, which.max)
每个otu对每个组成群落的贡献
for (k in seq(ncol(fitted(best)))) {d <- melt(fitted(best))colnames(d) <- c("OTU", "cluster", "value")d <- subset(d, cluster == k) %>%# Arrange OTUs by assignment strengtharrange(value) %>%mutate(OTU = factor(OTU, levels = unique(OTU))) %>%# Only show the most important driversfilter(abs(value) > quantile(abs(value), 0.8)) p <- ggplot(d, aes(x = OTU, y = value)) +geom_bar(stat = "identity") +coord_flip() +labs(title = paste("Top drivers: community type", k))print(p)
}
Dirichlet Multinomial Mixtures (DMM)的R实现相关推荐
- 基于狄利克雷-多项式分布做文档聚类代码(dirichlet multinomial mixture model)
论文来源 Yin J, Wang J. A dirichlet multinomial mixture model-based approach for short text clustering[C ...
- Dirichlet Multinomial Mixture Model做短文本聚类
本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 论文来源 Yin J, Wang J. A dirich ...
- pvrect r语言 聚类_技术贴 | R语言——肠型分析:介绍、方法
点击蓝字↑↑↑"微生态",轻松关注不迷路 导读 2011年,肠型(Enterotypes)的概念首次在<自然>杂志上由Arumugam等[1]提出,该研究发现可以将人类 ...
- Multinomial Logit Model (MNL) 模型R语言nnet包multinom函数实现实例
最近做项目涉及到要使用multinomial logit model (MNL) 模型.看了一堆文献讲mnl, 但是没有给什么具体能上手的实例,就算有也是一笔带过,打算找一些使用R 语言来实现mnl模 ...
- 狄利克雷分布的matlab代码实现和R语言函数调用
主要参考的是:https://www.douban.com/note/45584915/ 和 http://www.biostatistic.net/thread-33740-1-1.html 最近需 ...
- r\$\gamma_0=\$
学习sklearn-example中有一句代码这样的: estimators = [("Finite mixture with a Dirichlet distribution\nprior ...
- Nature Microbiology:肠道菌群如何划分肠型
题目:基于肠道菌群组成的"肠型"如何定义? 认识肠道菌群领域的29位大佬,从熟悉他们的名字和单位开始. 作者:Paul I. Costea 1, Falk Hildebrand 1 ...
- AAAI-19录用论文清单
AAAI-19于1月27日在夏威夷召开,今年是33届会议. 会议录用论文清单, workshop16个,tutorials24个. 标题的词云分析: 作者单位词云(按作者人数计算/一篇文章可能有多个作 ...
- LFDMM源码剖析(融入词向量的概率图模型)
本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 论文来源 Nguyen D Q, Billingsley ...
最新文章
- redis字符串匹配_Redis的数据类型和抽象概念介绍
- Facebook如何预测广告点击:剖析经典论文GBDT+LR
- 可视化卷积神经网络的过滤器_万字长文:深度卷积神经网络特征可视化技术(CAM)最新综述...
- VMware记录(一)- vCenter Server 服务安装提示无法解析此完全限定域名
- python处理多个excel文件-Python将多个excel文件合并为一个文件
- 18.28 getchar()函数与缓冲区问题
- 后端:Java中如何更优雅的处理空值,看完你就懂了!
- 据说这是双11前互联网人的一天~
- eclipse工具栏sdk和avd图标
- web前端开发:JavaScript 基本语法,
- windows系统上安装与使用Android NDK r8d(二)
- 计算机一级b必背知识点,全国计算机等级考试B经典必考资料_知识点总结.doc
- html表格 行 自动向上,javascript – 在bootstraptable中向上或向下移动行
- linux c实现通用hash表
- Linux环境下右键无法新建文档的解决方法——Ubuntu 16.x
- 锁存器芯片74HC573芯片的用法,及其在实际电路中的应用
- 今秋如何让自己的C币也来个大丰收
- 停课不停学致家长的一封信
- formula 返回list_如何在Hibernate / JPA中使用@Formula
- 开放数据库:青少年健康主题数据库——国家人口健康科学数据中心