humpfit {vegan}R Documentation

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


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.


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, ...)


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.


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.


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.


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:


Jari Oksanen


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.


## 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...
# 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".
plot(profile(sol, parm=1:2))
confint(sol, parm=c(1,2))

[Package vegan version 1.16-32 Index]