Skip to contents

In multiplicative diversity partitioning, mean values of alpha diversity at lower levels of a sampling hierarchy are compared to the total diversity in the entire data set or the pooled samples (gamma diversity).

Usage

multipart(...)
# Default S3 method
multipart(y, x, index=c("renyi", "tsallis"), scales = 1,
    global = FALSE, relative = FALSE, nsimul=99, method = "r2dtable", ...)
# S3 method for class 'formula'
multipart(formula, data, index=c("renyi", "tsallis"), scales = 1,
    global = FALSE, relative = FALSE, nsimul=99, method = "r2dtable", ...)

Arguments

y

A community matrix.

x

A matrix with same number of rows as in y, columns coding the levels of sampling hierarchy. The number of groups within the hierarchy must decrease from left to right. If x is missing, two levels are assumed: each row is a group in the first level, and all rows are in the same group in the second level.

formula

A two sided model formula in the form y ~ x, where y is the community data matrix with samples as rows and species as column. Right hand side (x) must be grouping variable(s) referring to levels of sampling hierarchy, terms from right to left will be treated as nested (first column is the lowest, last is the highest level). The formula will add a unique indentifier to rows and constant for the rows to always produce estimates of row-level alpha and overall gamma diversities. You must use non-formula interface to avoid this behaviour. Interaction terms are not allowed.

data

A data frame where to look for variables defined in the right hand side of formula. If missing, variables are looked in the global environment.

index

Character, the entropy index to be calculated (see Details).

relative

Logical, if TRUE then beta diversity is standardized by its maximum (see Details).

scales

Numeric, of length 1, the order of the generalized diversity index to be used.

global

Logical, indicates the calculation of beta diversity values, see Details.

nsimul

Number of permutations to use. If nsimul = 0, only the FUN argument is evaluated. It is thus possible to reuse the statistic values without a null model.

method

Null model method: either a name (character string) of a method defined in make.commsim or a commsim function. The default "r2dtable" keeps row sums and column sums fixed. See oecosimu for Details and Examples.

...

Other arguments passed to oecosimu, i.e. method, thin or burnin.

Details

Multiplicative diversity partitioning is based on Whittaker's (1972) ideas, that has recently been generalised to one parametric diversity families (i.e. Rényi and Tsallis) by Jost (2006, 2007). Jost recommends to use the numbers equivalents (Hill numbers), instead of pure diversities, and proofs, that this satisfies the multiplicative partitioning requirements.

The current implementation of multipart calculates Hill numbers based on the functions renyi and tsallis (provided as index argument). If values for more than one scales are desired, it should be done in separate runs, because it adds extra dimensionality to the implementation, which has not been resolved efficiently.

Alpha diversities are then the averages of these Hill numbers for each hierarchy levels, the global gamma diversity is the alpha value calculated for the highest hierarchy level. When global = TRUE, beta is calculated relative to the global gamma value: $$\beta_i = \gamma / \alpha_{i}$$ when global = FALSE, beta is calculated relative to local gamma values (local gamma means the diversity calculated for a particular cluster based on the pooled abundance vector): $$\beta_ij = \alpha_{(i+1)j} / mean(\alpha_{ij})$$ where \(j\) is a particular cluster at hierarchy level \(i\). Then beta diversity value for level \(i\) is the mean of the beta values of the clusters at that level, \(\beta_{i} = mean(\beta_{ij})\).

If relative = TRUE, the respective beta diversity values are standardized by their maximum possible values (\(mean(\beta_{ij}) / \beta_{max,ij}\)) given as \(\beta_{max,ij} = n_{j}\) (the number of lower level units in a given cluster \(j\)).

The expected diversity components are calculated nsimul times by individual based randomization of the community data matrix. This is done by the "r2dtable" method in oecosimu by default.

Value

An object of class "multipart" with same structure as "oecosimu" objects.

References

Jost, L. (2006). Entropy and diversity. Oikos, 113, 363–375.

Jost, L. (2007). Partitioning diversity into independent alpha and beta components. Ecology, 88, 2427–2439.

Whittaker, R. (1972). Evolution and measurement of species diversity. Taxon, 21, 213–251.

Author

Péter Sólymos, solymos@ualberta.ca

See also

See adipart for additive diversity partitioning, hiersimu for hierarchical null model testing and oecosimu for permutation settings and calculating \(p\)-values.

Examples

## NOTE: 'nsimul' argument usually needs to be >= 99
## here much lower value is used for demonstration

data(mite)
data(mite.xy)
data(mite.env)
## Function to get equal area partitions of the mite data
cutter <- function (x, cut = seq(0, 10, by = 2.5)) {
    out <- rep(1, length(x))
    for (i in 2:(length(cut) - 1))
        out[which(x > cut[i] & x <= cut[(i + 1)])] <- i
    return(out)}
## The hierarchy of sample aggregation
levsm <- with(mite.xy, data.frame(
    l2=cutter(y, cut = seq(0, 10, by = 2.5)),
    l3=cutter(y, cut = seq(0, 10, by = 5))))
## Multiplicative diversity partitioning
multipart(mite, levsm, index="renyi", scales=1, nsimul=19)
#> multipart object
#> 
#> Call: multipart(y = mite, x = levsm, index = "renyi", scales = 1,
#> nsimul = 19)
#> 
#> nullmodel method ‘r2dtable’ with 19 simulations
#> options:  index renyi, scales 1, global FALSE
#> alternative hypothesis: statistic is less or greater than simulated values
#> 
#>         statistic      SES    mean    2.5%     50%   97.5% Pr(sim.)  
#> alpha.1    11.235  -94.360 14.0792 14.0262 14.0828 14.1254     0.05 *
#> gamma      12.006 -428.491 14.1349 14.1275 14.1344 14.1432     0.05 *
#> beta.1      1.071   33.432  1.0040  1.0010  1.0035  1.0074     0.05 *
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
multipart(mite ~ l2 + l3, levsm, index="renyi", scales=1, nsimul=19)
#> multipart object
#> 
#> Call: multipart(formula = mite ~ l2 + l3, data = levsm, index =
#> "renyi", scales = 1, nsimul = 19)
#> 
#> nullmodel method ‘r2dtable’ with 19 simulations
#> options:  index renyi, scales 1, global FALSE
#> alternative hypothesis: statistic is less or greater than simulated values
#> 
#>         statistic      SES    mean    2.5%     50%   97.5% Pr(sim.)  
#> alpha.1    8.0555  -63.043 12.2113 12.1244 12.2024 12.3445     0.05 *
#> alpha.2   11.2353 -129.870 14.0901 14.0554 14.0920 14.1344     0.05 *
#> alpha.3   12.0064 -312.074 14.1361 14.1236 14.1353 14.1457     0.05 *
#> gamma     14.1603    0.000 14.1603 14.1603 14.1603 14.1603     1.00  
#> beta.1     1.3568   25.580  1.1578  1.1417  1.1586  1.1673     0.05 *
#> beta.2     1.0710   43.293  1.0033  1.0004  1.0036  1.0058     0.05 *
#> beta.3     1.1794  367.366  1.0017  1.0010  1.0018  1.0026     0.05 *
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
multipart(mite ~ ., levsm, index="renyi", scales=1, nsimul=19, relative=TRUE)
#> multipart object
#> 
#> Call: multipart(formula = mite ~ ., data = levsm, index = "renyi",
#> scales = 1, relative = TRUE, nsimul = 19)
#> 
#> nullmodel method ‘r2dtable’ with 19 simulations
#> options:  index renyi, scales 1, global FALSE
#> alternative hypothesis: statistic is less or greater than simulated values
#> 
#>         statistic      SES      mean      2.5%       50%   97.5% Pr(sim.)  
#> alpha.1  8.055481  -56.254 12.184113 12.024772 12.187365 12.2862     0.05 *
#> alpha.2 11.235261  -93.274 14.070751 14.021412 14.070151 14.1308     0.05 *
#> alpha.3 12.006443 -325.585 14.137141 14.125559 14.138195 14.1483     0.05 *
#> gamma   14.160271    0.000 14.160271 14.160271 14.160271 14.1603     1.00  
#> beta.1   0.078594   21.540  0.068257  0.067509  0.068149  0.0692     0.05 *
#> beta.2   0.535514   29.843  0.502365  0.499982  0.502373  0.5041     0.05 *
#> beta.3   0.589695  383.334  0.500818  0.500423  0.500781  0.5012     0.05 *
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
multipart(mite ~ ., levsm, index="renyi", scales=1, nsimul=19, global=TRUE)
#> multipart object
#> 
#> Call: multipart(formula = mite ~ ., data = levsm, index = "renyi",
#> scales = 1, global = TRUE, nsimul = 19)
#> 
#> nullmodel method ‘r2dtable’ with 19 simulations
#> options:  index renyi, scales 1, global TRUE
#> alternative hypothesis: statistic is less or greater than simulated values
#> 
#>         statistic      SES    mean    2.5%     50%   97.5% Pr(sim.)  
#> alpha.1    8.0555  -56.958 12.1867 12.0755 12.1805 12.3216     0.05 *
#> alpha.2   11.2353  -73.466 14.0824 14.0036 14.0909 14.1397     0.05 *
#> alpha.3   12.0064 -451.311 14.1380 14.1295 14.1393 14.1451     0.05 *
#> gamma     14.1603    0.000 14.1603 14.1603 14.1603 14.1603     1.00  
#> beta.1     1.7578   86.358  1.1620  1.1492  1.1625  1.1726     0.05 *
#> beta.2     1.2603   91.808  1.0055  1.0015  1.0049  1.0112     0.05 *
#> beta.3     1.1794  531.368  1.0016  1.0011  1.0015  1.0022     0.05 *
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1