#TDM4: ANALYSES DE GROUPEMENT# ############################## #################################### ## avec donnees Herbiers à Zostera## #################################### ######################################## #importation du tableau espece*stations# ######################################## #fichier datamacrofaune 2013 (un des 2 fichiers envoyés) #Preparer le fichier sous excel: les faire reflechir données absentes à remplacer par NA ou 0? # Verifier qu'ils savent bien remplacer dans le tableau les données manquantes par 0 #Enlever les espaces dans le titre des colonnes et les lignes data<-read.table("macrofauneBA2013.txt",header=TRUE,row.names=1) head(data) View(data) #OBJECTIF: groupes de stations sur la base des communautés de la macrofaune #Les faire reflechir sur le sens du tableau=> mode direct donc la matrice doit être transposé data2<-t(data) View(data2) ############################################ #observation et caracterisation des donnees# ############################################ summary(data2)# fluctuations par stations boxplot(data2) #fluctuations des gammes de variations d'abondances par espèces => besoin de transformer les données pour eviter de donner trop de poids à certaines espèces dans la réalisation des groupes de stations #les faire reflechir quelles possibles pour ce type de données et notamment pourquoi pas centrer réduites=>transformation en log10(x+1) pour attenuer ces differences #TRANSFORMATION ################# log(data2+1)->datatrf View(datatrf) #sqrt(data2)->datatrf#leur donner la fonction boxplot(datatrf)#Ca va beaucoup mieux même si les espèces les plus abondantes gardent les valeurs max => après tout c'est ce qu'on veut et c'est pour cela qu'on n'utilise pas centrer-reduire #EXPLORATION GRAPHIQUE ######################## library(ade4) boxplot(datatrf)#Ca va beaucoup mieux même si les espèces les plus abondantes garde les valeurs max => aprés tout c'est ce qu'on veut et c'est pour cela qu'on n'utilise pas centrer-reduire par(mfrow=c(1,1));table.value(datatrf)#on voit deja la difference Herbiers et sables donc on s'attends à ce genre de resultats ############################################################################################################## #REMARQUE: si tu as le temps tu peux leur donner les fonctions pour eviter de leur faire calculer à la main #Calculer les indices de diversité classiques par station ########################################################### library(vegan) RS<-specnumber(data2);RS #Richesse spécifique par ligne H<-diversity(data2,index="shannon",base=2);H #Indice de Shannon avec base 2 (comme appris en TP) J<-H/log(RS);J #Equitabilité de Pielou div<-cbind(RS,H,J);div ################################################################################################### ############################################################################################# #calcul de la matrice d'association pour les stations herbiers ############################################################################################# #Les faire reflechir au coefficient à utiliser: les faire chercher dans leur cours, quels coef dispo, critères de choix (double 0 important? verifier qu'ils ont bien compris et ce que cela représente; tableau d'abondances vs presence absence) #=>en utilisant le coefficient de dissimilarite de Bray Curtis# ##-> LLeur montrer LA FONCTION dist() ?dist ##=>n'existe pas dans la fonction dist() #donc : chargement et installation du package vegan, utilisation de la fonction vegdist() library(vegan) ?vegdist ##LEUR FAIRE REMARQUER QU'IL S'AGIT ICI D'UNE DISSIMILARITE QUI EST CALCULEE, MAIS CA NE CHANGE RIEN #creation de la matrice d'association matdist<-vegdist(datatrf,method="bray")# min = 0 = similarité; max = 1 = dissimilarité matdist ####################################################### #CREATION DU DENDROGRAMME en utilisant les 3 methodes## ####################################################### #Leur montrer le lien simple et montrer l'aide de la fonction hclust pour voir les différentes méthodes différentes dispo ?hclust LS<-hclust(matdist,method="single") plot(LS,ylab="dissimilarite de Bray-Curtis", hang=-1,xlab="stations", main="CAH Liens Simples sur dissimilarités de Bray-Curtis")#hang=-1 juste pour que les stations soit alignées en bas, c'est plus élégant #leur demander de représenter sur une même fenêtre les 3 methodes vues en cours LS<-hclust(matdist,method="single") LC<-hclust(matdist,method="complete") LM<-hclust(matdist,method="average") par(mfrow=c(1,3)) plot(LS,ylab="dissimilarite de Bray-Curtis",hang=-1, xlab="stations", main="CAH Liens Simples sur dissimilarités de Bray-Curtis") plot(LC,ylab="Dissim de BC",hang=-1, xlab="stations",main="CAH Liens complet") plot(LM,ylab="Dissim BC",hang=-1, xlab="stations",main ="CAH UPGMA") abline(h=0.8,col="red")#pour tracer une droite à la dissim = 0,7 qui correspond à 4 groupes sur le lien moyen (le plus utilisé car bon intermédiaires, rappeler les défauts des 2 autres méthodes #conclusion : la faune des herbiers se divise en 4 groupes de stations (ou couper? : le plus simple saut de dissim le plus important) #Pour attribuer à chaque station un numero de groupes groupe<-cutree(LM,k=3)# avec k je choisi le nombre de groupe que je veux groupe<-cutree(LM,h=0.8)# avec h je choisi la dissimilarité que je veux ####################################################### #ESPECES INDICATRICES PAR METHODE INDVAL## ####################################################### #INDVAL: spécificité et fidélité:"The indval approach looks for species that are #both necessary and sufficient, i.e. if you find that species you should be in that type, #and if you are in that type you should find that species" #Spécificité: espèce uniquement présente dans un groupe; fidélité= présente dans toutes les stations du groupe library(labdsv) indval(data2,groupe)->IV;IV gr<-IV$maxcls[IV$pval<=0.05];gr #groupe de station où espèce avec indval max et significatif iv<-IV$indcls[IV$pval<=0.05];iv #groupe de station avec indval correspondant aux indval max et significatif pv<-IV$pval[IV$pval<=0.05];pv #pvalue correspondantes tabIV<-data.frame(group=gr,indval=iv,pvalue=pv);tabIV #Tableau avec pour les espèces indicatrices significatives, leur appartenance aux groupes et la p-value correspondante ###################################### ##Avec des données environnementales## ###################################### #Base de données issues du SOMLIT pour 2007: echantillonnage mensuel en 3 stations SOMLIT<-read.table("dataSOMLIT.txt",h=T,row.names=1) View(SOMLIT) names(SOMLIT) SOMLIT2<-SOMLIT[,-c(1:3)] View(SOMLIT2) boxplot(SOMLIT2) #Transformation necessaire (données centrées réduites) car ici les gammes de variations differentes sont dues à des problèmes d'unités!!! SOMLITtrf<-scale(SOMLIT2) vegdist(SOMLITtrf,method="euclidean")->matdist hclust(matdist,method="average")->clust par(mfrow=c(1,1));plot(clust,ylab="dist euclidienne",hang=-1,xlab="echant") abline(h=5,col="red") # => difficilement interpretable comme ca, on aurait besoin de savoir quelle variable explique cela: cf analyses factorielle au prochain cours groupe<-cutree(clust,k=3) #Faire ANOVA pour voir comment variables évoluent entre groupe: exemple température lm<-lm(groupe~log(T),SOMLIT2) par(mfrow=c(2,2)); plot(lm) anova(lm)