courbe raréfaction

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

martin notaro
Messages : 3
Enregistré le : 16 Juin 2014, 23:52

courbe raréfaction

Messagepar martin notaro » 12 Fév 2015, 15:01

Bonjour,

j'aimerais tracer une courbe de raréfaction d'espèces d'arbres en fonction de la surface prospectée.
Le tableau suivant montre le jeu de données utilisées, avec en 1ère ligne des numéros correspondant aux espèces d'arbres. Les 82 lignes suivantes correspondent aux 82 situations de placettes agroforestières de 1000 m² prospectées où se trouvent le nombre d'arbres pour chaque espèce.

http://www.cjoint.com/data/0Bmqd5jd9Yo.htm

Malheureusement je n'arrive pas à obtenir une seule courbe de raréfaction, mais plusieurs courbes apparaissent sur le graphique. Pourriez-vous s'il vous plait m'aiguiller et me dire les modifications que je devrais apporter au script?

don<-read.csv("E:/publication/R/rar.csv", sep=";", header=TRUE)
library(vegan)
summary(don)
str(don)
rarecurve(don,step=20, col = "blue", cex = 4,label=F)


Merci d'avance!

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Messagepar Eric Casellas » 12 Fév 2015, 16:21

Bonjour,

Je ne connais pas du tout ce paquet et ces fonctions, mais d'après l'aide :
Function rarecurve draws a rarefaction curve for each row of the input data.


Or tu as don qui est un data.frame de 82 lignes ce qui te donne 82 courbes.
Si tu ne veux qu'une seule courbe il te faut au préalable fusionner tes lignes...

Par exemple si on prend la somme des colonnes pour fusionner ça donne quelque chose comme :

Code : Tout sélectionner

rarecurve(t(colSums(don)),step=20, col = "blue", cex = 4,label=F)
Eric

martin notaro
Messages : 3
Enregistré le : 16 Juin 2014, 23:52

Messagepar martin notaro » 13 Fév 2015, 08:20

Merci bcp, ça finit par ressembler à qqch!

J'aurais encore deux questions.

Je n'ai pas réussi à trouver dans l'aide du package vegan comment modifier l'axe des abscisses. J'aimerais pouvoir y insérer une surface afin d'obtenir une courbe de raréfaction des espèces en fonction d'une surface prospectée. Comment s'y prendre svp?

Enfin comment faire pour insérer des courbes d'intervalles de confiance à 95%?

Merci :)

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Messagepar Eric Casellas » 16 Fév 2015, 13:05

Il faudrait préciser plus ce que tu veux faire et les codes que tu as jusqu'à maintenant, mais à priori je dirais qu'il faudrait que tu regarde du coté des paramètres graphiques généraux de R (correspond aux paramètres contenus dans les ... de rarecurve)

Code : Tout sélectionner

?par

par exemple avec xaxt="n" on peut désactiver l'affichage de l'axe des x pour ensuite en créer un à part, ou utiliser la fonction lines pour ajouter des courbes à un plot existant...
Eric

martin notaro
Messages : 3
Enregistré le : 16 Juin 2014, 23:52

Messagepar martin notaro » 09 Mar 2015, 16:06

Bonjour,

merci pour votre aide et désolé du temps que je mets à répondre.

Mon script a un peu changé :

md=specaccum(don, method = "rarefaction")
plot(md, ci.type="poly",col="darkblue", lwd=2, ci.lty=0, ci.col="lightblue",xlab="Surface prospectée (.10-1 ha)", ylab="Nombre d'espèces")

En sortie graphique l'axe des abscisses fait apparaitre l'échantillon, soit mes lignes de mon tableau. J'aimerais pouvoir convertir cette donnée. En effet chaque infividu correspond à 0,1 ha. J'aurais donc aimé pouvoi réajuster l'axe pas un facteur 0,1. Comment faire svp?

Franck Theeten
Messages : 17
Enregistré le : 07 Fév 2020, 17:09

Re: courbe raréfaction

Messagepar Franck Theeten » 24 Oct 2021, 20:55

Bonjour,

Ayant buté récemment sur le même type de problèmes, je me permets de renvoyer vers cette discussion qui affine l'exemple de la documentation du package "vegan" et permet d'aboutir à quelque-chose de fonctionnel :
https://groups.google.com/g/davis-rug/c/yC__V59-K_o


Dans mon cas, avec un fichier ayant deux colonnes : l'espèce ("SPECIES") et l'expédition ("EXPEDITION"), le code opérationnel est :

Code : Tout sélectionner

library("vegan")
library("plyr")
library("BiodiversityR")

p_file<-"MON_FICHIER.txt"
df<-data.frame(read.csv(file=p_file, sep="\t", header=TRUE))
df<-df[,1:2]

df <- ddply(df, .(df$SPECIES, df$EXPEDITION), nrow)
colnames(df)<-c("SPECIES","EXPEDITION", "n")
community<-makecommunitydataset(df, "EXPEDITION","SPECIES", "n")


comm_agg = colSums(community) # summing species counts by column
S <- specnumber(comm_agg) # observed number of species
raremax = 1 # number of individuals to use in rarefaction

# Plotting rarefied species number
Srare <- rarefy(comm_agg, raremax) # rarefied number of species
plot(S, Srare, xlab = "Observed No. of Species", ylab = "Rarefied No. of Species")
abline(0, 1)

# Plotting rarefaction curve
rarecurve(matrix(comm_agg, nrow = 1), step = 1, sample = raremax, cex = 0.6)


Les données doivent être converties sous forme matricielle, avec une colonne par espèce et une ligne par récolteur. La fonction makecommunitydataset du package BiodiversityR permet d'obtenir cette structure à partir du tableau de départ. colSums remet certes ensuite les données sous une forme à une seule colonne...
Si j'ai bien compris, le nom de raremax peut induire en erreur, car il indique la taille minimale des expéditions qui seront retenues dans le resampling effectué par rarecurve.

Toutefois, pour revenir à la question initiale, la courbe de raréfaction ne me paraît pas devoir être tracée en fonction de la surface prospectée, mais du nombre de spécimens récoltés lors de chaque évènement. Comme elle sous-échantillonne une ou plusieurs fois le jeu de données, puis calcule le taux moyen d'accroissement de la diversité, elle ne permet pas de préserver l'ordre chronologique des évènements de collecte. La courbe d'accumulation peut être plus facilement reliée à la progression de site en site que la courbe de régression.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité