humpfit {vegan} | R Documentation |

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:

`hump`

: the location of the hump on the biomass gradient.`scale`

: an arbitrary multiplier to translate the biomass into virtual number of plants.`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:

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

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.

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

[Package *vegan* version 1.16-32 Index]