diversity(x, index = "shannon", MARGIN = 1, base = exp(1))
rarefy(x, sample, se = FALSE, MARGIN = 1)
renyi(x, scales=c(0,0.25,0.5,1,2,4,8,16,32,64,Inf), hill = FALSE)
fisher.alpha(x, MARGIN = 1, se = FALSE, ...)
specnumber(x, MARGIN = 1)
shannon
, simpson
or
invsimpson
.base
used in shannon
.nlm
se = TRUE
, function rarefy
returns a 2-row matrix
with rarefied richness (S
) and its standard error
(se
). Function renyi
returns a data frame of selected
indices.
With option se = TRUE
, function fisher.alpha
returns a
data frame with items for $\alpha$ (alpha
), its approximate
standard errors (se
), residual degrees of freedom
(df.residual
), and the code
returned by
nlm
on the success of estimation. Both variants of Simpson's index are based on $D = \sum p_i^2$. Choice simpson
returns $1-D$ and
invsimpson
returns $1/D$.
Shannon and Simpson indices are both special cases of R�nyi
diversity
$$H_a = \frac{1}{1-a} \log \sum p_i^a$$
where $a$ is a scale parameter, and Hill (1975) suggested to
use so-called ``Hill numbers'' defined as $N_a = \exp(H_a)$. Some Hill numbers are the number of species with
$a = 0$, $\exp(H')$ or the exponent of Shannon
diversity with $a = 1$, inverse Simpson with $a = 2$ and
$1/ \max(p_i)$ with $a = \infty$. According
to the theory of diversity ordering, one community can be regarded as
more diverse than another only if its R�nyi diversities are all higher
(T�thm�r�sz 1995).
Function rarefy
gives the expected species richness in random
subsamples of size sample
from the community. The size of
sample
should be smaller than total community size, but the function will
silently work for larger sample
as well and return non-rarefied
species richness (and standard error = 0).
Rarefaction can be performed only with genuine
counts of individuals: the current function will silently truncate
abundances to integers and give wrong results. The function
rarefy
is based on Hurlbert's (1971) formulation, and the
standard errors on Heck et al. (1975).
Function fisher.alpha
estimates the $\alpha$ parameter of
Fisher's logarithmic series (see fisherfit
).
The estimation is possible only for genuine
counts of individuals. The function can optionally return standard
errors of $\alpha$. These should be regarded only as rough
indicators of the accuracy: the confidence limits of $\alpha$ are
strongly
non-symmetric and standard errors cannot be used in Normal inference.
Function specnumber
finds the number of species. With
MARGIN = 2
, it finds frequencies of species. The function is
extremely simple, and shortcuts are easy in plain R.
Better stories can be told about Simpson's index than about
Shannon's index, and still more grandiose stories about
rarefaction (Hurlbert 1971). However, these indices are all very
closely related (Hill 1973), and there is no reason to despise one more than
others (but if you are a graduate student, don't drag me in, but obey
your Professor's orders). In particular, exponent of the Shannon
index is linearly related to inverse Simpson (Hill 1973) although the
former may be more sensitive to rare species. Moreover, inverse
Simpson is asymptotically equal to rarefied species richness in sample
of two individuals, and Fisher's $\alpha$ is very similar to
inverse Simpson.
Heck, K.L., van Belle, G. & Simberloff, D. (1975). Explicit calculation of the rarefaction diversity measurement and the determination of sufficient sample size. Ecology 56, 1459--1461. Hill, M.O. (1973). Diversity and evenness: a unifying notation and its consequences. Ecology 54, 427--473. Hurlbert, S.H. (1971). The nonconcept of species diversity: a critique and alternative parameters. Ecological Monographs 54, 187--211. T�thm�r�sz, B. (1995). Comparison of different methods for diversity ordering. Journal of Vegetation Science 6, 283--290.
data(BCI)
H <- diversity(BCI)
simp <- diversity(BCI, "simpson")
invsimp <- diversity(BCI, "inv")
r.2 <- rarefy(BCI, 2)
alpha <- fisher.alpha(BCI)
pairs(cbind(H, simp, invsimp, r.2, alpha), pch="+", col="blue")
## Species richness (S) and Pielou's evenness (J):
S <- specnumber(BCI) ## rowSums(BCI > 0) does the same...
J <- H/log(S)
Run the code above in your browser using DataLab