radfit {vegan} | R Documentation |

Functions construct rank – abundance or dominance / diversity or Whittaker plots and fit brokenstick, pre-emption, log-Normal, Zipf and Zipf-Mandelbrot models of species abundance.

## S3 method for class 'data.frame': radfit(df, ...) ## S3 method for class 'radfit.frame': plot(x, order.by, BIC = FALSE, model, legend = TRUE, as.table = TRUE, ...) ## Default S3 method: radfit(x, ...) ## S3 method for class 'radfit': plot(x, BIC = FALSE, legend = TRUE, ...) radlattice(x, BIC = FALSE, ...) rad.null(x, family=poisson, ...) rad.preempt(x, family = poisson, ...) rad.lognormal(x, family = poisson, ...) rad.zipf(x, family = poisson, ...) rad.zipfbrot(x, family = poisson, ...) ## S3 method for class 'radline': plot(x, xlab = "Rank", ylab = "Abundance", type = "b", ...) ## S3 method for class 'radline': lines(x, ...) ## S3 method for class 'radline': points(x, ...) as.rad(x) ## S3 method for class 'rad': plot(x, xlab = "Rank", ylab = "Abundance", log = "y", ...)

`df` |
Data frame where sites are rows and species are columns. |

`x` |
A vector giving species abundances in a site, or an object to be plotted. |

`order.by` |
A vector used for ordering sites in plots. |

`BIC` |
Use Bayesian Information Criterion, BIC, instead of
Akaike's AIC. The penalty for a parameter is k = log(S) where
S is the number of species, whereas AIC uses k = 2. |

`model` |
Show only the specified model. If missing, AIC is used to
select the model. The model names (which can be abbreviated) are
`Preemption` , `Lognormal` , `Veiled.LN` ,
`Zipf` , `Mandelbrot` . |

`legend` |
Add legend of line colours. |

`as.table` |
Arrange panels starting from upper left corner (passed
to `xyplot` ). |

`family` |
Error distribution (passed to `glm` ). All
alternatives accepting `link = "log"` in `family`
can be used, although not all make sense. |

`xlab,ylab` |
Labels for `x` and `y` axes. |

`type` |
Type of the plot, `"b"` for plotting both observed points
and fitted lines, `"p"` for only points, `"l"` for only
fitted lines, and `"n"` for only setting the frame. |

`log` |
Use logarithmic scale for given axis. The default
`log =" y"` gives the traditional plot in community ecology
where the pre-emption model is a straight line, and with
`log = "xy"` Zipf model is a straight line. With
`log = ""` both axes are in the original arithmetic scale. |

`...` |
Other parameters to functions. |

Rank – Abundance Dominance (RAD) or Dominance/Diversity plots
(Whittaker 1965) display logarithmic species abundances against
species rank order. These plots are supposed to be
effective in analysing types of abundance distributions in
communities. These functions fit some of the most popular models mainly
following Wilson (1991). Function `as.rad`

constructs observed
RAD data.
Functions `rad.XXXX`

(where `XXXX`

is a name) fit
the individual models, and
function `radfit`

fits all models. The
argument of the function `radfit`

can be either a vector for a
single community or a data frame where each row represents a
distinct community. All these functions have their own `plot`

functions. When the argument is a data frame, `plot`

uses
`Lattice`

graphics, and other `plot`

functions use
ordinary graphics. The ordinary graphics functions return invisibly an
`ordiplot`

object for observed points, and function
`identify.ordiplot`

can be used to label selected
species. The most complete control of graphics can be achieved
with `rad.XXXX`

methods which have `points`

and `lines`

functions to add observed values and fitted models into existing
graphs. Alternatively, `radlattice`

uses
`Lattice`

graphics to display each
`radfit`

model in a separate panel together with their AIC or
BIC values.

Function `rad.null`

fits a brokenstick model where the expected
abundance of species at rank *r* is *a[r] = J/S sum(from x=r to S) 1/x* (Pielou 1975), where *J*
is the total number of individuals (site total) and *S* is the
total number of species in the community. This gives a Null model
where the individuals are randomly distributed among observed species,
and there are no fitted parameters.
Function `rad.preempt`

fits the niche preemption model,
a.k.a. geometric series or Motomura model, where the expected
abundance *a* of species at rank *r* is *a[r] = J*alpha*(1-alpha)^(r-1)*. The only estimated
parameter is the preemption coefficient *α* which gives the
decay rate of abundance per rank.
The niche preemption model is a straight line in a
RAD plot. Function `rad.lognormal`

fits a log-Normal model which
assumes that the logarithmic abundances are distributed Normally, or
*a[r] = exp(log(mu) +
log(sigma) * N)*, where *N* is a Normal deviate.
Function `rad.zipf`

fits the Zipf model *a[r] = J*p1*r^gamma* where *p1* is the fitted
proportion of the most abundant species, and *gamma* is a
decay coefficient. The
Zipf – Mandelbrot
model (`rad.zipfbrot`

) adds one parameter: *a[r] = J*c*(r+beta)^gamma* after which
*p1* of the Zipf model changes into a meaningless scaling
constant *c*. There are grand narratives about ecological
mechanisms behind each model (Wilson 1991), but
several alternative and contrasting mechanisms can produce
similar models and a good fit does not imply a specific mechanism.

Log-Normal and Zipf models are generalized linear
models (`glm`

) with logarithmic link function.
Zipf-Mandelbrot adds one
nonlinear parameter to the Zipf model, and is fitted using
`nlm`

for the nonlinear parameter and estimating other
parameters and log-Likelihood with `glm`

. Pre-emption
model is fitted as purely nonlinear model. There are no estimated
parameters in the Null model. The default
`family`

is `poisson`

which is appropriate only for
genuine counts (integers), but other families that accept ```
link =
"log"
```

can be used. Family `Gamma`

may be
appropriate for abundance data, such as cover. The ``best''
model is selected by `AIC`

. Therefore ``quasi'' families
such as `quasipoisson`

cannot be used: they do not
have `AIC`

nor log-Likelihood needed in non-linear
models.

Function `rad.XXXX`

will return an object of class
`radline`

, which is constructed to resemble results of `glm`

and has many (but not all) of its components, even when only
`nlm`

was used in fitting. At least the following
`glm`

methods can be applied to the result:
`fitted`

, `residuals.glm`

with alternatives
`"deviance"`

(default), `"pearson"`

, `"response"`

,
function `coef`

, `AIC`

,
`extractAIC`

, and `deviance`

.
Function `radfit`

applied to a vector will return
an object of class `radfit`

with item `y`

for the
constructed RAD, item `family`

for the error distribution, and
item `models`

containing each `radline`

object as an
item. In addition, there are special `AIC`

, `coef`

and
`fitted`

implementations for `radfit`

results.
When applied to a data frame
`radfit`

will return an object of class `radfit.frame`

which
is a list of `radfit`

objects; function `summary`

can be
used to display the results for individual `radfit`

objects.
The functions are still
preliminary, and the items in the `radline`

objects may change.

The RAD models are usually fitted for proportions instead of original
abundances. However, nothing in these models seems to require division
of abundances by site totals, and original observations are used in
these functions. If you wish to use proportions, you must standardize
your data by site totals, e.g. with `decostand`

and use
appropriate `family`

such as `Gamma`

.

The lognormal model is fitted in a standard way, but I do think this is not quite correct – at least it is not equivalent to fitting Normal density to log abundances like originally suggested (Preston 1948).

Some models may fail. In particular, estimation of the Zipf-Mandelbrot
model is difficult. If the fitting fails, `NA`

is returned.

Wilson (1991) defined preemption model as *a[r] = J*p1*(1 - alpha)^(r-1)*, where *p1*
is the fitted proportion of the first species. However, parameter
*p1* is completely defined by *α* since the fitted
proportions must add to one, and therefore I handle preemption as a
one-parameter model.

Veiled log-Normal model was included in earlier releases of this
function, but it was removed because it was flawed: an implicit veil
line also appears in the ordinary log-Normal. The latest release version
with `rad.veil`

was `1.6-10`

.

Jari Oksanen

Pielou, E.C. (1975) *Ecological Diversity*. Wiley & Sons.

Preston, F.W. (1948) The commonness and rarity of
species. *Ecology* 29, 254–283.

Whittaker, R. H. (1965) Dominance and diversity in plant
communities. *Science* 147, 250–260.

Wilson, J. B. (1991) Methods for fitting dominance/diversity
curves. *Journal of Vegetation Science* 2, 35–46.

`fisherfit`

and `prestonfit`

.
An alternative approach is to use
`qqnorm`

or `qqplot`

with any distribution.
For controlling graphics: `Lattice`

,
`xyplot`

, `lset`

.

data(BCI) mod <- rad.lognormal(BCI[1,]) mod plot(mod) mod <- radfit(BCI[1,]) ## Standard plot overlaid for all models ## Pre-emption model is a line plot(mod) ## log for both axes: Zipf model is a line plot(mod, log = "xy") ## Lattice graphics separately for each model radlattice(mod) # Take a subset of BCI to save time and nerves mod <- radfit(BCI[2:5,]) mod plot(mod, pch=".")

[Package *vegan* version 1.16-32 Index]