2016-08-03 21 views
-1

Ich habe den Befehl specaccum() verwendet, um Speziesakkumulationskurven für meine Proben zu entwickeln. HierFinden, wo die Speziesakkumulationskurve Asymptote erreicht

sind einige Beispieldaten:

site1<-c(0,8,9,7,0,0,0,8,0,7,8,0) 
site2<-c(5,0,9,0,5,0,0,0,0,0,0,0) 
site3<-c(5,0,9,0,0,0,0,0,0,6,0,0) 
site4<-c(5,0,9,0,0,0,0,0,0,0,0,0) 
site5<-c(5,0,9,0,0,6,6,0,0,0,0,0) 
site6<-c(5,0,9,0,0,0,6,6,0,0,0,0) 
site7<-c(5,0,9,0,0,0,0,0,7,0,0,3) 
site8<-c(5,0,9,0,0,0,0,0,0,0,1,0) 
site9<-c(5,0,9,0,0,0,0,0,0,0,1,0) 
site10<-c(5,0,9,0,0,0,0,0,0,0,1,6) 
site11<-c(5,0,9,0,0,0,5,0,0,0,0,0) 
site12<-c(5,0,9,0,0,0,0,0,0,0,0,0) 
site13<-c(5,1,9,0,0,0,0,0,0,0,0,0) 

species_counts<-rbind(site1,site2,site3,site4,site5,site6,site7,site8,site9,site10,site11,site12,site13) 

accum <- specaccum(species_counts, method="random", permutations=100) 

plot(accum) 

Um sicherzustellen, ich habe genug abgetastet, muß ich die Kurve der Spezies Akkumulation Plot um sicherzustellen, dass eine Asymptote erreicht, definiert als eine Steigung von < 0,3 zwischen die letzten zwei Punkte (z. B. zwischen den Standorten 12 und 13).

results <- with(accum, data.frame(sites, richness, sd)) 

Dies erzeugt:

sites richness  sd 
1  1  3.46 0.9991916 
2  2  4.94 1.6625403 
3  3  5.94 1.7513054 
4  4  7.05 1.6779918 
5  5  8.03 1.6542263 
6  6  8.74 1.6794660 
7  7  9.32 1.5497149 
8  8  9.92 1.3534841 
9  9 10.51 1.0492422 
10 10 11.00 0.8408750 
11 11 11.35 0.7017295 
12 12 11.67 0.4725816 
13 13 12.00 0.0000000 

Ich fühle mich wie ich es bekommen. Ich könnte ein lm mit site vs. reich erzeugen und die exakte Steigung (Tangente?) Zwischen den Sites 12 und 13 extrahieren. Hier ein bisschen länger suchen.

+0

Es ist wichtig zu versuchen, um zu sehen, wenn Sie es zuerst bekommen können, dann Ihren Code bekannt geben und wir können helfen. – Vedda

+0

Was ist Ihr * spezifisches * Problem? – Barranka

Antwort

1

Streamlining Ihre Datenerzeugungsprozess ein wenig:

species_counts <- matrix(c(0,8,9,7,0,0,0,8,0,7,8,0, 
5,0,9,0,5,0,0,0,0,0,0,0, 5,0,9,0,0,0,0,0,0,6,0,0, 
5,0,9,0,0,0,0,0,0,0,0,0, 5,0,9,0,0,6,6,0,0,0,0,0, 
5,0,9,0,0,0,6,6,0,0,0,0, 5,0,9,0,0,0,0,0,7,0,0,3, 
5,0,9,0,0,0,0,0,0,0,1,0, 5,0,9,0,0,0,0,0,0,0,1,0, 
5,0,9,0,0,0,0,0,0,0,1,6, 5,0,9,0,0,0,5,0,0,0,0,0, 
5,0,9,0,0,0,0,0,0,0,0,0, 5,1,9,0,0,0,0,0,0,0,0,0), 
byrow=TRUE,nrow=13) 

immer eine gute Idee, set.seed() vor der Randomisierung Tests laufen (und lassen Sie uns wissen, dass specaccum im vegan Paket ist):

set.seed(101) 
library(vegan) 
accum <- specaccum(species_counts, method="random", permutations=100) 

Extrahieren Sie die Komponenten richness und sites aus dem zurückgegebenen Objekt und berechnen Sie d(richness)/d(sites) (beachten Sie, dass der Neigungsvektor ein Element kürzer als t ist er Herkunft site/Reichtum Vektoren: Seien Sie vorsichtig, wenn Sie Steigungen zusammenpassen mit bestimmten Anzahl von Websites)

(slopes <- with(accum,diff(richness)/diff(sites))) 
## [1] 1.45 1.07 0.93 0.91 0.86 0.66 0.65 0.45 0.54 0.39 0.32 0.31 

In diesem Fall sind versucht, die Steigung eigentlich nie unter 0,3 geht, sodass dieser Code für die Suche nach dem ersten Zeit, die die Steigung unter 0,3 fällt:

which(slopes<0.3)[1] 

kehrt NA.

+0

Danke Ben, das ist genau das, wonach ich gesucht habe! Ich werde versuchen, in Zukunft genauer zu sein. – lken