fisherfit fits Fisher's logseries to abundance
prestonfit groups species frequencies into
doubling octave classes and fits Preston's lognormal model, and
prestondistr fits the truncated lognormal model
without pooling the data into octaves.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
fisherfit(x, ...) prestonfit(x, tiesplit = TRUE, ...) prestondistr(x, truncate = -1, ...) ## S3 method for class 'prestonfit' plot(x, xlab = "Frequency", ylab = "Species", bar.col = "skyblue", line.col = "red", lwd = 2, ...) ## S3 method for class 'prestonfit' lines(x, line.col = "red", lwd = 2, ...) veiledspec(x, ...) as.fisher(x, ...) ## S3 method for class 'fisher' plot(x, xlab = "Frequency", ylab = "Species", bar.col = "skyblue", kind = c("bar", "hiplot", "points", "lines"), add = FALSE, ...) as.preston(x, tiesplit = TRUE, ...) ## S3 method for class 'preston' plot(x, xlab = "Frequency", ylab = "Species", bar.col = "skyblue", ...) ## S3 method for class 'preston' lines(x, xadjust = 0.5, ...)
Community data vector for fitting functions or their result
Split frequencies 1, 2, 4, 8 etc between adjacent octaves.
Truncation point for log-Normal model, in log2 units. Default value -1 corresponds to the left border of zero Octave. The choice strongly influences the fitting results.
Colour of data bars.
Colour of fitted line.
Width of fitted line.
Kind of plot to drawn:
Add to an existing plot.
Adjustment of horizontal positions in octaves.
Other parameters passed to functions. Ignored in
In Fisher's logarithmic series the expected
number of species f with n observed individuals is
f_n = α x^n / n (Fisher et al. 1943).
The estimation is possible only for genuine
counts of individuals. The parameter α is used as a
diversity index, and α and its standard error can be
estimated with a separate function
parameter x is taken as a nuisance parameter which is not
estimated separately but taken to be n/(n+α). Helper
as.fisher transforms abundance data into Fisher
Preston (1948) was not satisfied with Fisher's model which seemed to
imply infinite species richness, and postulated that rare species is
a diminishing class and most species are in the middle of frequency
scale. This was achieved by collapsing higher frequency classes into
wider and wider “octaves” of doubling class limits: 1, 2, 3–4,
5–8, 9–16 etc. occurrences. It seems that Preston regarded
frequencies 1, 2, 4, etc.. as “tied” between octaves
(Williamson & Gaston 2005). This means that only half of the species
with frequency 1 are shown in the lowest octave, and the rest are
transferred to the second octave. Half of the species from the
second octave are transferred to the higher one as well, but this is
usually not as large a number of species. This practise makes data
look more lognormal by reducing the usually high lowest
octaves. This can be achieved by setting argument
tiesplit = TRUE.
tiesplit = FALSE the frequencies are not split,
but all ones are in the lowest octave, all twos in the second, etc.
Williamson & Gaston (2005) discuss alternative definitions in
detail, and they should be consulted for a critical review of
Any logseries data will look like lognormal when plotted in
Preston's way. The expected frequency f at abundance octave
o is defined by f = S0 exp(-(log2(o)-mu)^2/2/sigma^2), where
μ is the location of the mode and σ the width,
both in log2 scale, and S0 is the expected
number of species at mode. The lognormal model is usually truncated
on the left so that some rare species are not observed. Function
prestonfit fits the truncated lognormal model as a second
degree log-polynomial to the octave pooled data using Poisson (when
tiesplit = FALSE) or quasi-Poisson (when
tiesplit = TRUE)
prestondistr fits left-truncated
Normal distribution to log2 transformed non-pooled
observations with direct maximization of log-likelihood. Function
prestondistr is modelled after function
fitdistr which can be used for alternative
The functions have common
lines function adds the fitted curve to the
octave range with line segments showing the location of the mode and
the width (sd) of the response. Function
transforms abundance data to octaves. Argument
not influence the fit in
prestondistr, but it will influence
the barplot of the octaves.
The total extrapolated richness from a fitted Preston model can be
found with function
veiledspec. The function accepts results
prestonfit and from
veiledspec is called with a species count vector, it will
provides alternative ways of estimating the number of unseen
species. In fact, Preston's lognormal model seems to be truncated at
both ends, and this may be the main reason why its result differ
from lognormal models fitted in Rank–Abundance diagrams with
prestonfit returns an object with fitted
coefficients, and with observed (
freq) and fitted
fitted) frequencies, and a string describing the fitting
prestondistr omits the entry
fitted. The function
fisherfit returns the result of
nlm, where item
estimate is α. The
result object is amended with the
nuisance parameter and item
fisher for the observed data from
Bob O'Hara and Jari Oksanen.
Fisher, R.A., Corbet, A.S. & Williams, C.B. (1943). The relation between the number of species and the number of individuals in a random sample of animal population. Journal of Animal Ecology 12: 42–58.
Preston, F.W. (1948) The commonness and rarity of species. Ecology 29, 254–283.
Williamson, M. & Gaston, K.J. (2005). The lognormal distribution is not an appropriate null hypothesis for the species–abundance distribution. Journal of Animal Ecology 74, 409–422.
fitdistr of MASS package was used as the
density can be used for
smoothed non-parametric estimation of responses, and
qqplot is an alternative, traditional and more effective
way of studying concordance of observed abundances to any distribution model.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
data(BCI) mod <- fisherfit(BCI[5,]) mod # prestonfit seems to need large samples mod.oct <- prestonfit(colSums(BCI)) mod.ll <- prestondistr(colSums(BCI)) mod.oct mod.ll plot(mod.oct) lines(mod.ll, line.col="blue3") # Different ## Smoothed density den <- density(log2(colSums(BCI))) lines(den$x, ncol(BCI)*den$y, lwd=2) # Fairly similar to mod.oct ## Extrapolated richness veiledspec(mod.oct) veiledspec(mod.ll)
Loading required package: permute Loading required package: lattice This is vegan 2.4-4 Fisher log series model No. of species: 101 Fisher alpha: 37.96423 Preston lognormal model Method: Quasi-Poisson fit to octaves No. of species: 225 mode width S0 4.885798 2.932690 32.022923 Frequencies by Octave 0 1 2 3 4 5 6 7 Observed 9.500000 16.00000 18.00000 19.000 30.00000 35.00000 31.00000 26.50000 Fitted 7.994154 13.31175 19.73342 26.042 30.59502 31.99865 29.79321 24.69491 8 9 10 11 Observed 18.00000 13.00000 7.000000 2.0000 Fitted 18.22226 11.97021 7.000122 3.6443 Preston lognormal model Method: maximized likelihood to log2 abundances No. of species: 225 mode width S0 4.365002 2.753531 33.458185 Frequencies by Octave 0 1 2 3 4 5 6 7 Observed 9.50000 16.00000 18.00000 19.00000 30.00000 35.00000 31.00000 26.50000 Fitted 9.52392 15.85637 23.13724 29.58961 33.16552 32.58022 28.05054 21.16645 8 9 10 11 Observed 18.00000 13.000000 7.000000 2.00000 Fitted 13.99829 8.113746 4.121808 1.83516 Extrapolated Observed Veiled 235.40577 225.00000 10.40577 Extrapolated Observed Veiled 230.931018 225.000000 5.931018
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.