DKI2() calculate a salinity-normalised version of the Danish quality
index (DKI) (Carstensen et al., 2014)
The DKI index is based on AMBI and can only be calculated after first calculating
AMBI, the AZTI Marine Biotic Index, and H', the Shannon diversity index.
Both indices are included in output from the function AMBI().
This function uses linear relationships between salinity and limits for AMBI
and Hdash to normalise the index. This is done to account for expected
lower species diversity in regions with lower salinity.
Since the index is normalised to salinity, the function also requires
measured or estimated salinity psal as an argument.
#' @references Carstensen, J., Krause-Jensen, D., Josefson, A. (2014). "Development and testing of tools for intercalibration of phytoplankton, macrovegetation and benthic fauna in Danish coastal areas." Aarhus University, DCE – Danish Centre for Environment and Energy, 85 pp. Scientific Report from DCE – Danish Centre for Environment and Energy No. 93. https://dce2.au.dk/pub/SR93.pdf
Details
The AMBI() and Hdash() functions take a dataframe of observations as an
argument. The DKI functions, DKI2() and DKI(), do not take a dataframe
as an argument. Instead they take values of the input parameters, either
single values or as vectors.
To calculate DKI for a dataframe of AMBI values, it could be called from
e.g. within a dplyr::mutate() function call. See the examples below.
See also
DKI()calculate DKI using the original methodAMBI_sal()minimum AMBI for normalisation = f(salinity)H_sal()maximum H' for normalisation = f(salinity)
Examples
# Simple example
DKI2(AMBI = 1.61, H = 2.36, N = 25, psal = 21.4)
#> [1] 0.7043697
# ------ Example workflow for calculating DKI (v2) from species counts ----
# calculate AMBI index
dfAMBI <- AMBI(test_data, by = c("station"), var_rep = "replicate")[["AMBI"]]
# show AMBI results
dfAMBI
#> # A tibble: 3 × 13
#> station AMBI AMBI_SD H S fNA N I II III IV V
#> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1.48 0.338 1.80 6 0 16 0.125 0.75 0.125 0 0
#> 2 2 1.89 0.238 3.54 22 0 80 0.4 0.138 0.3 0.15 0.0125
#> 3 3 4.12 0.884 2.50 9 0 24 0 0.125 0.292 0.0833 0.5
#> # ℹ 1 more variable: Disturbance <chr>
# add salinity values - these are realistic but invented values
dfAMBI <- dplyr::mutate(dfAMBI, psal=ifelse(station == 1, 21.3, 26.5))
# calculate DKI from AMBI results
dfAMBI <- dplyr::mutate(dfAMBI, DKI=DKI2(AMBI, H, N, psal))
