[R] How to conduct a PERMANOVA using a dissimilarity matrix

michael.eisenring at agroscope.admin.ch michael.eisenring at agroscope.admin.ch
Wed Dec 23 10:07:47 CET 2015


Dear Erica and Hazel,
Thank you very much for your help.
Based on Ericas feedback I use now a the raw data giving me information on abundance of bat species (I changed the data set) that were caught at 6 different sites (file named bats)

Thanks to Hazels input I use now an additional file (named forest_type) assigning a forest type (O or Y) to each site.
Using Adonis I would like to convert my bats in a first step to a soerenson (dis)similarity matrix and then use the Adonis function to see how bat communities differ between forest types.

With the help of you I was now able to write some code
The code seems to work. However, I have 2 more (basic) questions.

1) Do I have to convert my data sets in a specific way (I structured it as in the R help example using the dune data)? I have the problem that R thinks the first row (the very left one) with the header "Site" is just another species of bat ( if you open the bat file in R and scroll to the top you see what I mean, "Site" is next to "Kerivoula...." and it is treated just like another bat species). How can I solve the problem?

2)Is the code correct? I am especially unsure if my conversion to a dissimilarity matrix worked, since the results are exactly the same , regardless if I add method="bray" or not to my code.

Below is the code and the 2 data sets (dput)



#load data sets
#file with abundance information of each caught bat at each site
bats<-read.csv("bats_abundance.csv",sep=";",header=T)
#file with forest type (O,Y) information
forest_type<-read.csv("forest_type_6.csv",sep=";")
attach(bats)
attach(forest_type)
bats
forest_type

#Aim: compare how bat communities differ between O and Y forests
#How can I convert bats first to soerenson dissimilarity matrix ()
adonis(bats~forest, data=forest_type,method="bray")


> dput(bats)
structure(c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 
0L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L), .Dim = c(6L, 14L), .Dimnames = list(
    NULL, c("Site", "Kerivoula_smithii", "Scotophilus_nigrita", 
    "Minipoterus_natalensis", "Miniopterus_fraterculus", "Neoromicia_nana", 
    "Otomops_martiensseni", "Chaerephon_pumilus", "Rhinolophus_clivosus", 
    "Hipposideros_caffer", "Lissonycteris_angolensis", "Pipistrellus_hesperidus", 
    "Pipistrellus_nanulus", "Rhinolophus_fumigatus")))


> dput(forest_type)
structure(list(Site = 1:6, forest = structure(c(1L, 2L, 2L, 2L, 
1L, 1L), .Label = c("O", "Y"), class = "factor")), .Names = c("Site", 
"forest"), class = "data.frame", row.names = c(NA, -6L))





Thanks a lot,
Mike















Eisenring Michael, Msc.
PhD Student

Federal Department of Economic Affairs, Education and Research
EAER
Institute of Sustainability Sciences ISS
Biosafety

Reckenholzstrasse 191, CH-8046 Zürich
Tel. +41 44 37 77181
Fax +41 44 37 77201
michael.eisenring at agroscope.admin.ch
www.agroscope.ch

-----Ursprüngliche Nachricht-----
Von: Hazel Knipe [mailto:hazel_knipe at hotmail.co.uk] 
Gesendet: Dienstag, 22. Dezember 2015 18:34
An: Eisenring Michael Agroscope <michael.eisenring at agroscope.admin.ch>
Betreff: Re: How to conduct a PERMANOVA using a dissimilarity matrix

Dear Michael, 

You need to create another file dividing the different categories/ variables (make sure that they are in the same order for the variable you are testing), then attach it and run the adonis function. For example:

attach(metadata) 

adonis(formula = vegdist(matrixfile, method = "bray") ~ Site, data = metadata) 

It's also important to think about if you have nestedness in your design, in which case you would need to add strata = factor: 

adonis(formula = vegdist(matrixfile, method = "bray") ~ Species, data = metadata,      strata = Site) 

I hope this helps for now! Let me know if you need more detail. 

Hazel (BSc student). 



________________________________________
From: R-help <r-help-bounces at r-project.org> on behalf of michael.eisenring at agroscope.admin.ch <michael.eisenring at agroscope.admin.ch>
Sent: 22 December 2015 16:18
To: r-help at r-project.org
Subject: [R] How to conduct a PERMANOVA using a dissimilarity matrix

Dear R-List members,

I have to compare how similar two types of forest (old growth=O) and (young forest=Y) in terms of moth communities are.
I sampled moths at 4 O and 4 Y sites.
I need to analyse the data using a PERMANOVA approach. But I am having a really hard time to do this in R.

I found out that I need to create a dissimilarity matrix and read this matrix then into R to conduct a one-way Permanova with forest type (O or Y) as factor.
The package vegan with the function "adonis" seems to be able to do a permanova.

I created the matrix (based on Soerenson (dis)similarities) and imported it into R.

Could anyone help me with the next step? How can I conduct a permanova on my dataset? In the end I would need an R value and significance level telling me if community compositions differ significantly between sites.

Below is my code (not too much) and the data for the matrix.

#dput for matrix:

structure(c("", "O", "Y", "Y", "Y", "O", "O", "Y", "O", "O", "0", "0.544", "0.519", "0.533", "0.481", "0.548", "0.518", "0.479", "Y", "0.544", "0", "0.383", "0.416", "0.383", "0.358", "0.434", "0.399", "Y", "0.519", "0.383", "0", "0.398", "0.359", "0.392", "0.401", "0.374", "Y", "0.533", "0.416", "0.398", "0", "0.398", "0.399", "0.358", "0.348", "O", "0.481", "0.383", "0.359", "0.398", "0", "0.37", "0.317", "0.354", "O", "0.548", "0.358", "0.392", "0.399", "0.37", "0", "0.39", "0.365", "Y", "0.518", "0.434", "0.401", "0.358", "0.317", "0.39", "0", "0.371", "O", "0.479", "0.399", "0.374", "0.348", "0.354", "0.365", "0.371", "0"), .Dim = c(9L, 9L), .Dimnames = list(NULL, c("V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9")))


#Code
#load dissimilarity matrix (based on Soerenson similarity) moth_dta<-read.csv("Geo_sorenson_8.csv",header=T,sep=";")#Creates matrix from imported data
moth_dta<-as.matrix(moth_dta)
moth_dta
library(vegan)


Thank you very much,
Michael

Eisenring Michael, Msc.
PhD Student

Federal Department of Economic Affairs, Education and Research EAER Institute of Sustainability Sciences ISS Biosafety

Reckenholzstrasse 191, CH-8046 Z rich
Tel. +41 44 37 77181
Fax +41 44 37 77201
michael.eisenring at agroscope.admin.ch<mailto:michael.eisenring at agroscope.admin.ch>
www.agroscope.ch<http://www.agroscope.ch/>


        [[alternative HTML version deleted]]



More information about the R-help mailing list