2016-08-03 88 views
-1

我已使用specaccum()命令为我的样品开发物种积累曲线。查找物种积累曲线达到渐近线的位置

下面是一些示例性数据:

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) 

为了确保我已经充分采样,我需要确保物种累积曲线的曲线达到渐近线,定义为< 0.3之间的斜率最后两点(站点12和13之间的ei)。

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

产生以下:

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 

我觉得我到达那里。我可以用站点对丰富度生成一个lm,并提取站点12和站点13之间的确切斜率(相切?)。在这里搜索更长的时间。

+0

尝试查看是否可以先获取它,然后发布代码并提供帮助,这一点很重要。 – Vedda

+0

你的*特定*问题是什么? – Barranka

回答

1

简化您的数据生成过程中一点点:

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) 

始终运行随机测试之前最好先set.seed()(让我们知道specaccumvegan包):

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

从返回的对象中提取richnesssites组件并计算d(richness)/d(sites)(注意,斜率向量是比t短的一个元素他出身网站/丰富载体:要小心,如果你想匹配与网站的特定编号)

(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 

在这种情况下斜坡,斜坡实际上从未低于0.3,所以这段代码寻找第一时间斜率低于0.3:

which(slopes<0.3)[1] 

返回NA

+0

谢谢你,这正是我一直在寻找的!我会尽力在未来更具体。 – lken