Function fisherfit
fits Fisher's logseries to abundance
data. Function prestonfit
groups species frequencies into
doubling octave classes and fits Preston's lognormal model, and
function prestondistr
fits the truncated lognormal model
without pooling the data into octaves.
fisherfit(x, ...)
prestonfit(x, tiesplit = TRUE, ...)
prestondistr(x, truncate = -1, ...)
# S3 method for prestonfit
plot(x, xlab = "Frequency", ylab = "Species", bar.col = "skyblue",
line.col = "red", lwd = 2, ...)
# S3 method for prestonfit
lines(x, line.col = "red", lwd = 2, ...)
veiledspec(x, ...)
as.fisher(x, ...)
# S3 method for 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 preston
plot(x, xlab = "Frequency", ylab = "Species", bar.col = "skyblue", ...)
# S3 method for preston
lines(x, xadjust = 0.5, ...)
The function prestonfit
returns an object with fitted
coefficients
, and with observed (freq
) and fitted
(fitted
) frequencies, and a string describing the fitting
method
. Function prestondistr
omits the entry
fitted
. The function fisherfit
returns the result of
nlm
, where item estimate
is \(\alpha\). The
result object is amended with the nuisance
parameter and item
fisher
for the observed data from as.fisher
Community data vector for fitting functions or their result
object for plot
functions.
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.
Labels for x
and y
axes.
Colour of data bars.
Colour of fitted line.
Width of fitted line.
Kind of plot to drawn: "bar"
is similar bar plot
as in plot.fisherfit
, "hiplot"
draws vertical lines
as with plot(..., type="h")
, and "points"
and
"lines"
are obvious.
Add to an existing plot.
Adjustment of horizontal positions in octaves.
Other parameters passed to functions. Ignored in
prestonfit
and tiesplit
passed to as.preston
in
prestondistr
.
Bob O'Hara and Jari Oksanen.
In Fisher's logarithmic series the expected number of species
\(f\) with \(n\) observed individuals is \(f_n = \alpha x^n /
n\) (Fisher et al. 1943). The estimation is possible only for
genuine counts of individuals. The parameter \(\alpha\) is used as
a diversity index which can be estimated with a separate function
fisher.alpha
. The parameter \(x\) is taken as a
nuisance parameter which is not estimated separately but taken to be
\(n/(n+\alpha)\). Helper function as.fisher
transforms
abundance data into Fisher frequency table. Diversity will be given
as NA
for communities with one (or zero) species: there is no
reliable way of estimating their diversity, even if the equations
will return a bogus numeric value in some cases.
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
.
With 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
log-Normal model.
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_o = S_0 \exp(-(\log_2(o) -
\mu)^2/2/\sigma^2)\), where
\(\mu\) is the location of the mode and \(\sigma\) the width,
both in \(\log_2\) scale, and \(S_0\) 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
)
error. Function prestondistr
fits left-truncated
Normal distribution to \(\log_2\) transformed non-pooled
observations with direct maximization of log-likelihood. Function
prestondistr
is modelled after function
fitdistr
which can be used for alternative
distribution models.
The functions have common print
, plot
and lines
methods. The 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 as.preston
transforms abundance data to octaves. Argument tiesplit
will
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
both from prestonfit
and from prestondistr
. If
veiledspec
is called with a species count vector, it will
internally use prestonfit
. Function specpool
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
functions rad.lognormal
.
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.
diversity
, fisher.alpha
,
radfit
, specpool
. Function
fitdistr
of MASS package was used as the
model for prestondistr
. Function 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.
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)
Run the code above in your browser using DataLab