Part 1: Alpha diversity main measures.

dataset: phyloseq

The diet swap data set represents a study with African and African American groups undergoing a two-week diet swap. For details, see https://www.nature.com/articles/ncomms7342.

phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 130 taxa and 222 samples ]
sample_data() Sample Data:       [ 222 samples by 8 sample variables ]
tax_table()   Taxonomy Table:    [ 130 taxa by 3 taxonomic ranks ]

Boxplots

Violin plots

theme_set(theme_bw(10))
plot_richness(phy, x = "bmi_group", measures = alpha_metrics) + geom_violin(aes(fill = factor(bmi_group)),
    trim = FALSE, draw_quantiles = c(0.25, 0.5, 0.75)) + geom_jitter(height = 0,
    width = 0.1)

Part 2: non-parametric test

Kruskal-Wallis test

perform Kruskal-Wallis test between bmi_groups, since it has three factors. The purpose behind the test would be more clear.

alphas <- estimate_richness(phy, measures = alpha_metrics)
kw <- t(sapply(alphas, function(x) unlist(kruskal.test(x ~ sample_data(phy)$bmi_group)[c("p.value",
    "statistic")])))
kw
             p.value statistic.Kruskal-Wallis chi-squared
Observed 0.022081536                             7.626027
Chao1    0.015152446                             8.379187
se.chao1 0.025379869                             7.347598
Shannon  0.001053162                            13.711917
Simpson  0.001623541                            12.846291

As Kruskal-Wallis test is significant

Post hoc

Post hoc by implementing Conover’s test

Using shannon index

df <- cbind(get_variable(phy), alphas$Shannon)

library("conover.test")

con <- conover.test::conover.test(df$`alphas$Shannon`, df$bmi_group, kw = T, method = "bonferroni")
  Kruskal-Wallis rank sum test

data: x and group
Kruskal-Wallis chi-squared = 13.7119, df = 2, p-value = 0

                           Comparison of x by group                            
                                 (Bonferroni)                                  
Col Mean-|
Row Mean |       lean      obese
---------+----------------------
   obese |   1.177492
         |     0.3604
         |
overweig |  -2.205510  -3.779721
         |     0.0427    0.0003*

alpha = 0.05
Reject Ho if p <= alpha/2

Using Simpson index

df1 <- cbind(get_variable(phy), alphas$Simpson)

con1 <- conover.test::conover.test(df1$`alphas$Simpson`, df1$bmi_group, kw = T, method = "bonferroni")
  Kruskal-Wallis rank sum test

data: x and group
Kruskal-Wallis chi-squared = 12.8463, df = 2, p-value = 0

                           Comparison of x by group                            
                                 (Bonferroni)                                  
Col Mean-|
Row Mean |       lean      obese
---------+----------------------
   obese |   1.099905
         |     0.4089
         |
overweig |  -2.162227  -3.646024
         |     0.0475    0.0005*

alpha = 0.05
Reject Ho if p <= alpha/2

Part 3: Linear regression

Using another phyloseq dataset from micorobiome package, this phyloseq has continuous variable among its metadata variables. We shall see the linear regression for the diversity_shannon as a dependent variable on the ‘age’ as the independent variable.

atlas1006

This data set contains genus-level microbiota profiling with HITChip for 1006 western adults with no reported health complications, reported in Lahti et al. (2014) https://doi.org/10.1038/ncomms5344.

phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 130 taxa and 1151 samples ]
sample_data() Sample Data:       [ 1151 samples by 10 sample variables ]
tax_table()   Taxonomy Table:    [ 130 taxa by 3 taxonomic ranks ]

Linear regression model.

Analysis of Variance Table

Response: diversity$Shannon
            Df  Sum Sq Mean Sq F value    Pr(>F)    
age          1   3.167  3.1666  18.406 1.943e-05 ***
Residuals 1093 188.045  0.1720                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

It is significant p_value

Regression plot

Acknowledgement An Introduction to Statistical Learning

regplot = function(x, y, ...) {
    fit = lm(y ~ x)
    plot(x, y, ...)
    abline(fit, col = "red")
}

attach(data)
regplot(x = age, y = diversity$Shannon, xlab = "Age", ylab = "Shannon Diversity",
    pch = 20)

Important In microbiome analysis we do not check the normality conditions by Shapiro test for example, it is enough to check the histograms and see the pattern of the continuous variable.

LS0tDQp0aXRsZTogIkFscGhhIGRpdmVyc2l0eSINCmF1dGhvcjogIldpc2FtIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KDQoNCmBgYHtyIHBoeWxvc2VxLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHBoeWxvc2VxKQ0KbGlicmFyeSh2ZWdhbikNCiNsaWJyYXJ5KG1peE9taWNzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh2ZWdhbikNCmxpYnJhcnkodGljdG9jKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkocGVybXV0ZSkNCmxpYnJhcnkobGF0dGljZSkNCm9wdGlvbnMobWF4LnByaW50PSI3NSIpDQogIGtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGg9OCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpZy5oZWlnaHQ9NiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWw9VFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlPVRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvPVRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9RkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgICB0aWR5PVRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50PU5BLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1GQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmc9RkFMU0UpDQpvcHRzX2tuaXQkc2V0KHdpZHRoPTc1KQ0KYGBgDQoNCg0KIyBQYXJ0IDE6IEFscGhhIGRpdmVyc2l0eSBtYWluIG1lYXN1cmVzLg0KDQoNCmBgYHtyIEFscGhhLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KYWxwaGFfbWV0cmljcyA8LSBjKCJPYnNlcnZlZCIsICJTaGFubm9uIiwgIlNpbXBzb24iLCAiQ2hhbzEiKQ0KDQoNCmBgYA0KDQojIyBkYXRhc2V0OiBwaHlsb3NlcQ0KDQpUaGUgZGlldCBzd2FwIGRhdGEgc2V0IHJlcHJlc2VudHMgYSBzdHVkeSB3aXRoIEFmcmljYW4gYW5kIEFmcmljYW4gQW1lcmljYW4gZ3JvdXBzIHVuZGVyZ29pbmcgYSB0d28td2VlayBkaWV0IHN3YXAuIEZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly93d3cubmF0dXJlLmNvbS9hcnRpY2xlcy9uY29tbXM3MzQyLg0KDQoNCmBgYHtyIGRhdGFzZXQsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShtaWNyb2Jpb21lKQ0KZGF0YSgiZGlldHN3YXAiKQ0KcGh5PC0gZGlldHN3YXANCnBoeQ0KYGBgDQoNCg0KIyMjIEJveHBsb3RzDQoNCg0KYGBge3IgYm94cGxvdHMsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcGxvdF9yaWNobmVzcyhwaHksIHggPSAiYm1pX2dyb3VwIiwgbWVhc3VyZXMgPSBhbHBoYV9tZXRyaWNzKSArZ2VvbV9qaXR0ZXIoKQ0KDQp0aGVtZV9zZXQodGhlbWVfYncoMjApKQ0KDQpgYGANCg0KDQojIyMgVmlvbGluIHBsb3RzDQoNCmBgYHtyIHZpb2xpbiBwbG90c05ldywgZWNobz1ULCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnRoZW1lX3NldCh0aGVtZV9idygxMCkpDQpwbG90X3JpY2huZXNzKHBoeSwgeCA9ICJibWlfZ3JvdXAiLCBtZWFzdXJlcyA9IGFscGhhX21ldHJpY3MpICsgDQogIGdlb21fdmlvbGluKGFlcyhmaWxsID0gZmFjdG9yKGJtaV9ncm91cCkpLCB0cmltID0gRkFMU0UsIGRyYXdfcXVhbnRpbGVzID0gYygwLjI1LCAwLjUsIDAuNzUpKSArIA0KICBnZW9tX2ppdHRlcihoZWlnaHQgPSAwLCB3aWR0aCA9IDAuMSkNCmBgYA0KDQoNCiMgUGFydCAyOiBub24tcGFyYW1ldHJpYyB0ZXN0DQoNCiMjIEtydXNrYWwtV2FsbGlzIHRlc3QNCnBlcmZvcm0gS3J1c2thbC1XYWxsaXMgdGVzdCBiZXR3ZWVuIGJtaV9ncm91cHMsIHNpbmNlIGl0IGhhcyB0aHJlZSBmYWN0b3JzLiBUaGUgcHVycG9zZSBiZWhpbmQgdGhlIHRlc3Qgd291bGQgYmUgbW9yZSBjbGVhci4NCg0KYGBge3IgcGVyZm9ybSBLcnVza2FsLVdhbGxpcyB0ZXN0TmV3LCBlY2hvPVQsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KYWxwaGFzIDwtIGVzdGltYXRlX3JpY2huZXNzKHBoeSwgbWVhc3VyZXMgPSBhbHBoYV9tZXRyaWNzKQ0Ka3cgPC0gdChzYXBwbHkoYWxwaGFzLCBmdW5jdGlvbih4KSB1bmxpc3Qoa3J1c2thbC50ZXN0KHh+c2FtcGxlX2RhdGEocGh5KSRibWlfZ3JvdXApW2MoInAudmFsdWUiLCJzdGF0aXN0aWMiKV0pKSkNCmt3DQoNCg0KYGBgDQoqKkFzIEtydXNrYWwtV2FsbGlzIHRlc3QgaXMgc2lnbmlmaWNhbnQqKg0KDQojIyMgUG9zdCBob2MgDQpQb3N0IGhvYyBieSBpbXBsZW1lbnRpbmcgQ29ub3ZlcidzIHRlc3QNCg0KIyMjIyAqKlVzaW5nIHNoYW5ub24gaW5kZXgqKg0KDQpgYGB7ciBDb25vdmVydGVzdCwgZWNobz1ULCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmRmPC0gY2JpbmQoZ2V0X3ZhcmlhYmxlKHBoeSksIGFscGhhcyRTaGFubm9uKQ0KDQpsaWJyYXJ5KCJjb25vdmVyLnRlc3QiKQ0KDQpjb248LSBjb25vdmVyLnRlc3Q6OmNvbm92ZXIudGVzdChkZiRgYWxwaGFzJFNoYW5ub25gLCBkZiRibWlfZ3JvdXAsIGt3ID0gVCwgbWV0aG9kPSJib25mZXJyb25pIikNCg0KYGBgDQoNCg0KIyMjIyAqKlVzaW5nIFNpbXBzb24gaW5kZXgqKg0KDQpgYGB7ciBDb25vdmVydGVzdE1vcmUsIGVjaG89VCwgbWVzc2FnZT1GQUxTRSwgZXJyb3I9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpkZjE8LSBjYmluZChnZXRfdmFyaWFibGUocGh5KSwgYWxwaGFzJFNpbXBzb24pDQoNCmNvbjE8LSBjb25vdmVyLnRlc3Q6OmNvbm92ZXIudGVzdChkZjEkYGFscGhhcyRTaW1wc29uYCwgZGYxJGJtaV9ncm91cCwga3cgPSBULCBtZXRob2Q9ImJvbmZlcnJvbmkiKQ0KDQpgYGANCiMgUGFydCAzOiBMaW5lYXIgcmVncmVzc2lvbg0KDQpVc2luZyBhbm90aGVyIHBoeWxvc2VxIGRhdGFzZXQgZnJvbSBtaWNvcm9iaW9tZSBwYWNrYWdlLCB0aGlzIHBoeWxvc2VxIGhhcyBjb250aW51b3VzIHZhcmlhYmxlIGFtb25nIGl0cyBtZXRhZGF0YSB2YXJpYWJsZXMuIFdlIHNoYWxsIHNlZSB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gZm9yIHRoZSBkaXZlcnNpdHlfc2hhbm5vbiBhcyBhIGRlcGVuZGVudCB2YXJpYWJsZSBvbiB0aGUgJ2FnZScgYXMgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlLg0KDQojIyBhdGxhczEwMDYNCg0KVGhpcyBkYXRhIHNldCBjb250YWlucyBnZW51cy1sZXZlbCBtaWNyb2Jpb3RhIHByb2ZpbGluZyB3aXRoIEhJVENoaXAgZm9yIDEwMDYgd2VzdGVybiBhZHVsdHMgd2l0aCBubyByZXBvcnRlZCBoZWFsdGggY29tcGxpY2F0aW9ucywgcmVwb3J0ZWQgaW4gTGFodGkgZXQgYWwuICgyMDE0KSBodHRwczovL2RvaS5vcmcvMTAuMTAzOC9uY29tbXM1MzQ0Lg0KDQoNCmBgYHtyIGF0bGFzLCBlY2hvPUYsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShtaWNyb2Jpb21lKQ0KZGF0YSgiYXRsYXMxMDA2IikNCmF0bGFzMTAwNg0KYGBgDQojIyMgTGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwuDQoNCmBgYHtyIGxpbmVhcl9yZWdyZXNzaW9uLCBlY2hvPUYsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZGF0YTwtZ2V0X3ZhcmlhYmxlKGF0bGFzMTAwNikNCmRhdGEkZGl2ZXJzaXR5PC1lc3RpbWF0ZV9yaWNobmVzcyhhdGxhczEwMDYsIG1lYXN1cmVzID0gYWxwaGFfbWV0cmljcykNCmF0dGFjaChkYXRhKQ0KbGluZWFyX21vZWw8LSBsbShkaXZlcnNpdHkkU2hhbm5vbiB+IGFnZSwgZGF0YSkNCmFub3ZhKGxpbmVhcl9tb2VsKQ0KDQpgYGANCg0KKipJdCBpcyBzaWduaWZpY2FudCoqIHBfdmFsdWUNCg0KIyMjIyBSZWdyZXNzaW9uIHBsb3QNCg0KYGBge3IgcmVncmVhc2lvbl9wbG90LCBlY2hvPUYsIG1lc3NhZ2U9RkFMU0UsIGVycm9yPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcDwtZ2dwbG90KGRhdGEgPSBkYXRhLCBhZXMoeCA9IGFnZSwgeSA9IGRpdmVyc2l0eSRTaGFubm9uKSkgKyBnZW9tX3BvaW50KCkgKyB4bGFiKCdBZ2UnKSArIHlsYWIoJ1NoYW5ub24gRGl2ZXJzaXR5JykNCg0KcGxvdChwKQ0KYGBgDQoNCioqQWNrbm93bGVkZ2VtZW50KioNCltBbiBJbnRyb2R1Y3Rpb24gdG8gU3RhdGlzdGljYWwgTGVhcm5pbmddKGh0dHBzOi8vd3d3LnN0YXRsZWFybmluZy5jb20vKQ0KDQpgYGB7ciByZWdyZWFzaW9uX3Bsb3RfMSwgZWNobz1ULCBtZXNzYWdlPUZBTFNFLCBlcnJvcj1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnJlZ3Bsb3Q9ZnVuY3Rpb24oeCx5LC4uLil7DQogIGZpdD1sbSh5fngpDQogIHBsb3QoeCx5LC4uLikNCiAgYWJsaW5lKGZpdCxjb2w9InJlZCIpDQp9DQoNCmF0dGFjaChkYXRhKQ0KcmVncGxvdCh4ID0gYWdlLCB5ID0gZGl2ZXJzaXR5JFNoYW5ub24sIHhsYWI9IkFnZSIgLHlsYWI9IlNoYW5ub24gRGl2ZXJzaXR5IixwY2g9MjApIA0KYGBgDQoqKkltcG9ydGFudCoqIEluIG1pY3JvYmlvbWUgYW5hbHlzaXMgd2UgZG8gbm90IGNoZWNrIHRoZSBub3JtYWxpdHkgY29uZGl0aW9ucyBieSBTaGFwaXJvIHRlc3QgZm9yIGV4YW1wbGUsIGl0IGlzIGVub3VnaCB0byBjaGVjayB0aGUgaGlzdG9ncmFtcyBhbmQgc2VlIHRoZSBwYXR0ZXJuIG9mIHRoZSBjb250aW51b3VzIHZhcmlhYmxlLg0KDQoNCg0KDQoNCg==