R: Bayesian analysis of multivariate counts data in DNA...
MCMC.OTU-package
R Documentation
Bayesian analysis of multivariate counts data in DNA metabarcoding and ecology.
Description
This package enables MCMC-based generalized linear mixed model analysis of multivariate counts data, such as common in DNA metabarcoding and community ecology. The results are summarized and plotted using ggplot2 functions.
Details
Package:
MCMC.OTU
Type:
Package
Version:
1.0.10
Date:
2016-02-10
License:
GPL-3
At the moment, the package handles experimental design with a single multilevel
fixed factor or two fully crossed multilevel fixed factors. Any number of scalar (OTU-specific)
random factors (i.e. blocking factors) are allowed. By default, it is assumed that variation in total counts per sample is not biologically relevant (refects sequencing or survey effort). See help for the core function mcmc.otu() for more details.
Author(s)
Mikhail V. Matz <matz@utexas.edu>
References
Elizabeth A. Green, Sarah W. Davies, Mikhail V. Matz, Monica Medina Quantifying cryptic Symbiodinium diversity within Orbicella faveolata and Orbicella franksi at the Flower Garden Banks, Gulf of Mexico. PeerJ 2014 2:e386 https://peerj.com/articles/386/
Examples
# Symbiodinium sp diversity in two coral species at two reefs (banks)
data(green.data)
# removing outliers
goods=purgeOutliers(
data=green.data,
count.columns=c(4:length(green.data[1,])),
zero.cut=0.25 # remove this line for real analysis
)
# stacking the data table
gs=otuStack(
data=goods,
count.columns=c(4:length(goods[1,])),
condition.columns=c(1:3)
)
# fitting the model
mm=mcmc.otu(
fixed="bank+species+bank:species",
data=gs,
nitt=3000,burnin=2000 # remove this line for real analysis!
)
# selecting the OTUs that were modeled reliably
acpass=otuByAutocorr(mm,gs)
# calculating effect sizes and p-values:
ss=OTUsummary(mm,gs,summ.plot=FALSE)
# correcting for mutliple comparisons (FDR)
ss=padjustOTU(ss)
# getting significatly changing OTUs (FDR<0.05)
sigs=signifOTU(ss)
# plotting them
ss2=OTUsummary(mm,gs,otus=sigs)
# bar-whiskers graph of relative changes:
# ssr=OTUsummary(mm,gs,otus=signifOTU(ss),relative=TRUE)
# displaying effect sizes and p-values for significant OTUs
ss$otuWise[sigs]
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(MCMC.OTU)
Loading required package: MCMCglmm
Loading required package: Matrix
Loading required package: coda
Loading required package: ape
Loading required package: ggplot2
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/MCMC.OTU/MCMC.OTU-package.Rd_%03d_medium.png", width=480, height=480)
> ### Name: MCMC.OTU-package
> ### Title: Bayesian analysis of multivariate counts data in DNA
> ### metabarcoding and ecology.
> ### Aliases: MCMC.OTU-package MCMC.OTU
>
> ### ** Examples
>
>
> # Symbiodinium sp diversity in two coral species at two reefs (banks)
> data(green.data)
>
> # removing outliers
> goods=purgeOutliers(
+ data=green.data,
+ count.columns=c(4:length(green.data[1,])),
+ zero.cut=0.25 # remove this line for real analysis
+ )
[1] "samples with counts below z-score -2.5 :"
[1] "EFAV153"
[1] "zscores:"
EFAV153
-3.884085
[1] "OTUs passing frequency cutoff 0.001 : 10"
[1] "OTUs with counts in 0.25 of samples:"
FALSE TRUE
3 7
>
> # stacking the data table
> gs=otuStack(
+ data=goods,
+ count.columns=c(4:length(goods[1,])),
+ condition.columns=c(1:3)
+ )
>
> # fitting the model
> mm=mcmc.otu(
+ fixed="bank+species+bank:species",
+ data=gs,
+ nitt=3000,burnin=2000 # remove this line for real analysis!
+ )
$PRIOR
$PRIOR$R
$PRIOR$R$V
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 0 0 0 0 0 0 0
[2,] 0 1 0 0 0 0 0 0
[3,] 0 0 1 0 0 0 0 0
[4,] 0 0 0 1 0 0 0 0
[5,] 0 0 0 0 1 0 0 0
[6,] 0 0 0 0 0 1 0 0
[7,] 0 0 0 0 0 0 1 0
[8,] 0 0 0 0 0 0 0 1
$PRIOR$R$nu
[1] 7.02
$PRIOR$G
$PRIOR$G$G1
$PRIOR$G$G1$V
[1] 1
$PRIOR$G$G1$nu
[1] 0
$FIXED
[1] "count~otu+bank+species+bank:species+otu:bank+otu:species+otu:bank:species"
$RANDOM
[1] "~sample"
MCMC iteration = 0
Acceptance ratio for liability set 1 = 0.000158
Acceptance ratio for liability set 2 = 0.000404
Acceptance ratio for liability set 3 = 0.000175
Acceptance ratio for liability set 4 = 0.000333
Acceptance ratio for liability set 5 = 0.000263
Acceptance ratio for liability set 6 = 0.000474
Acceptance ratio for liability set 7 = 0.000456
Acceptance ratio for liability set 8 = 0.000579
MCMC iteration = 1000
Acceptance ratio for liability set 1 = 0.211035
Acceptance ratio for liability set 2 = 0.422912
Acceptance ratio for liability set 3 = 0.220947
Acceptance ratio for liability set 4 = 0.435035
Acceptance ratio for liability set 5 = 0.342246
Acceptance ratio for liability set 6 = 0.422088
Acceptance ratio for liability set 7 = 0.367228
Acceptance ratio for liability set 8 = 0.509965
MCMC iteration = 2000
Acceptance ratio for liability set 1 = 0.294263
Acceptance ratio for liability set 2 = 0.424035
Acceptance ratio for liability set 3 = 0.300737
Acceptance ratio for liability set 4 = 0.453596
Acceptance ratio for liability set 5 = 0.379333
Acceptance ratio for liability set 6 = 0.419386
Acceptance ratio for liability set 7 = 0.375825
Acceptance ratio for liability set 8 = 0.521140
MCMC iteration = 3000
Acceptance ratio for liability set 1 = 0.297035
Acceptance ratio for liability set 2 = 0.447509
Acceptance ratio for liability set 3 = 0.318070
Acceptance ratio for liability set 4 = 0.481035
Acceptance ratio for liability set 5 = 0.359351
Acceptance ratio for liability set 6 = 0.411053
Acceptance ratio for liability set 7 = 0.389842
Acceptance ratio for liability set 8 = 0.477263
>
> # selecting the OTUs that were modeled reliably
> acpass=otuByAutocorr(mm,gs)
>
> # calculating effect sizes and p-values:
> ss=OTUsummary(mm,gs,summ.plot=FALSE)
>
> # correcting for mutliple comparisons (FDR)
> ss=padjustOTU(ss)
>
> # getting significatly changing OTUs (FDR<0.05)
> sigs=signifOTU(ss)
>
> # plotting them
> ss2=OTUsummary(mm,gs,otus=sigs)
>
> # bar-whiskers graph of relative changes:
> # ssr=OTUsummary(mm,gs,otus=signifOTU(ss),relative=TRUE)
>
> # displaying effect sizes and p-values for significant OTUs
> ss$otuWise[sigs]
$H35JRAZ01ATSK2
difference
pvalue bankeast:speciesfaveolata bankeast:speciesfranksi
bankeast:speciesfaveolata NA 0.082405883
bankeast:speciesfranksi 0.86400742 NA
bankwest:speciesfaveolata 0.02124985 0.003285617
bankwest:speciesfranksi 0.07235189 0.007556925
difference
pvalue bankwest:speciesfaveolata bankwest:speciesfranksi
bankeast:speciesfaveolata -0.5281631 -0.43595340
bankeast:speciesfranksi -0.6105690 -0.51835928
bankwest:speciesfaveolata NA 0.09220974
bankwest:speciesfranksi 0.8322792 NA
$H35JRAZ03DED1S
difference
pvalue bankeast:speciesfaveolata bankeast:speciesfranksi
bankeast:speciesfaveolata NA -0.31752780
bankeast:speciesfranksi 0.394117505 NA
bankwest:speciesfaveolata 0.003285617 0.02711453
bankwest:speciesfranksi 0.050959699 0.44127550
difference
pvalue bankwest:speciesfaveolata bankwest:speciesfranksi
bankeast:speciesfaveolata -1.2171363 -0.6525417
bankeast:speciesfranksi -0.8996085 -0.3350139
bankwest:speciesfaveolata NA 0.5645946
bankwest:speciesfranksi 0.1760919 NA
$H35JRAZ03DJU1V
difference
pvalue bankeast:speciesfaveolata bankeast:speciesfranksi
bankeast:speciesfaveolata NA -0.681777620
bankeast:speciesfranksi 0.42217817 NA
bankwest:speciesfaveolata 0.02544376 0.001727597
bankwest:speciesfranksi 0.02544376 0.001727597
difference
pvalue bankwest:speciesfaveolata bankwest:speciesfranksi
bankeast:speciesfaveolata 1.190879 1.11141242
bankeast:speciesfranksi 1.872657 1.79319004
bankwest:speciesfaveolata NA -0.07946675
bankwest:speciesfranksi 0.886129 NA
>
>
>
>
>
>
> dev.off()
null device
1
>