No-interaction Model for Hump-backed Species Richness vs. Biomass

Description

Function humpfit fits a no-interaction model for species richness vs. biomass data (Oksanen 1996). This is a null model that produces a hump-backed response as an artifact of plant size and density.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
humpfit(mass, spno, family = poisson, start)
## S3 method for class 'humpfit'
summary(object, ...)
## S3 method for class 'humpfit'
predict(object, newdata = NULL, ...) 
## S3 method for class 'humpfit'
plot(x, xlab = "Biomass", ylab = "Species Richness", lwd = 2, 
    l.col = "blue", p.col = 1, type = "b", ...)
## S3 method for class 'humpfit'
points(x, ...)
## S3 method for class 'humpfit'
lines(x, segments=101,  ...)
## S3 method for class 'humpfit'
profile(fitted, parm = 1:3, alpha = 0.01, maxsteps = 20, del = zmax/5, ...)

Arguments

mass

Biomass.

spno

Species richness.

start

Vector of starting values for all three parameters.

family

Family of error distribution. Any family can be used, but the link function is always Fisher's diversity model, and other link functions are silently ignored.

x, object, fitted

Result object of humpfit

newdata

Values of mass used in predict. The original data values are used if missing.

xlab,ylab

Axis labels in plot

lwd

Line width

l.col, p.col

Line and point colour in plot

type

Type of plot: "p" for observed points, "l" for fitted lines, "b" for both, and "n" for only setting axes.

segments

Number of segments used for fitted lines.

parm

Profiled parameters.

alpha, maxsteps, del

Parameters for profiling range and density.

...

Other parameters to functions.

Details

The no-interaction model assumes that the humped species richness pattern along biomass gradient is an artifact of plant size and density (Oksanen 1996). For low-biomass sites, it assumes that plants have a fixed size, and biomass increases with increasing number of plants. When the sites becomes crowded, the number of plants and species richness reaches the maximum. Higher biomass is reached by increasing the plant size, and then the number of plants and species richness will decrease. At biomasses below the hump, plant number and biomass are linearly related, and above the hump, plant number is proportional to inverse squared biomass. The number of plants is related to the number of species by the relationship (link function) from Fisher's log-series (Fisher et al. 1943).

The parameters of the model are:

  1. hump: the location of the hump on the biomass gradient.

  2. scale: an arbitrary multiplier to translate the biomass into virtual number of plants.

  3. alpha: Fisher's alpha to translate the virtual number of plants into number of species.

The parameters scale and alpha are intermingled and this function should not be used for estimating Fisher's alpha. Probably the only meaningful and interesting parameter is the location of the hump.

Function may be very difficult to fit and easily gets trapped into local solutions, or fails with non-Poisson families, and function profile should be used to inspect the fitted models. If you have loaded package MASS, you can use functions plot.profile, pairs.profile for graphical inspection of the profiles, and confint.profile.glm for the profile based confidence intervals.

The original model intended to show that there is no need to speculate about ‘competition’ and ‘stress’ (Al-Mufti et al. 1977), but humped response can be produced as an artifact of using fixed plot size for varying plant sizes and densities.

Value

The function returns an object of class "humpfit" inheriting from class "glm". The result object has specific summary, predict, plot, points and lines methods. In addition, it can be accessed by the following methods for glm objects: AIC, extractAIC, deviance, coef, residuals.glm (except type = "partial"), fitted, and perhaps some others. In addition, function ellipse.glm (package ellipse) can be used to draw approximate confidence ellipses for pairs of parameters, if the normal assumptions look appropriate.

Note

The function is a replacement for the original GLIM4 function at the archive of Journal of Ecology. There the function was represented as a mixed glm with one non-linear parameter (hump) and a special one-parameter link function from Fisher's log-series. The current function directly applies non-linear maximum likelihood fitting using function nlm. Some expected problems with the current approach are:

  • The function is discontinuous at hump and may be difficult to optimize in some cases (the lines will always join, but the derivative jumps).

  • The function does not try very hard to find sensible starting values and can fail. The user may supply starting values in argument start if fitting fails.

  • The estimation is unconstrained, but both scale and alpha should always be positive. Perhaps they should be fitted as logarithmic. Fitting Gamma family models might become easier, too.

Author(s)

Jari Oksanen

References

Al-Mufti, M.M., Sykes, C.L, Furness, S.B., Grime, J.P & Band, S.R. (1977) A quantitative analysis of shoot phenology and dominance in herbaceous vegetation. Journal of Ecology 65,759–791.

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 of an animal population. Journal of Animal Ecology 12, 42–58.

Oksanen, J. (1996) Is the humped relationship between species richness and biomass an artefact due to plot size? Journal of Ecology 84, 293–295.

See Also

fisherfit, profile.glm, confint.glm.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
##
## Data approximated from Al-Mufti et al. (1977)
##

mass <- c(140,230,310,310,400,510,610,670,860,900,1050,1160,1900,2480)
spno <- c(1,  4,  3,  9, 18, 30, 20, 14,  3,  2,  3,  2,  5,  2)
sol <- humpfit(mass, spno)
summary(sol) # Almost infinite alpha...
plot(sol)
# confint is in MASS, and impicitly calls profile.humpfit.
# Parameter 3 (alpha) is too extreme for profile and confint, and we
# must use only "hump" and "scale".
library(MASS)
plot(profile(sol, parm=1:2))
confint(sol, parm=c(1,2))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.