Accumulation function for parametric Rao's index of quadratic entropy (Q)
Source:R/RaoAUC.R
RaoAUC.Rd
RaoAUC computes the accumulation function (integral or area under the curve) of the parametric version of Rao's index of quadratic entropy (Q) on different classes of numeric matrices using a moving window algorithm.
Usage
RaoAUC(
alphas = 1:5,
x,
dist_m = "euclidean",
window = 9,
method = "classic",
rasterAUC = TRUE,
lambda = 0,
na.tolerance = 1,
rescale = FALSE,
diag = TRUE,
simplify = 0,
np = 1,
cluster.type = "SOCK",
debugging = FALSE
)
Arguments
- alphas
A continuous vector of alphas in the form start:end over which integrated the parametric Rao's index. Default value is 1:5.
- x
Input data may be a matrix, a Spatial Grid Data Frame, a SpatRaster, or a list of these objects. In the latter case, if
method="classic"
only the first element of the list will be considered.- dist_m
Define the type of distance to be calculated between numerical categories.
dist_m
can be a character string which defines the name of the distance to derive such as "euclidean". The distance names allowed are the same as forproxy::dist
. Alternatively,dist_m
can be a function which calculates a user-defined distance, (i.e.,function(x,y) {return(cos(y-x)-sin(y-x))}
) or a matrix of distances. Ifmethod="multidimension"
then only "euclidean", "manhattan", "canberra", "minkowski" and "mahalanobis" can be used. Default value is "euclidean". Ifproxy::dist
is a matrix then the function will assume that this is the distance matrix, and therefore no distance will be derived.- window
The side of the square moving window, it must be an odd numeric value greater than 1 to ensure that the target pixel is in the centre of the moving window. Default value is 3.
- method
Currently, there are two ways to calculate the parametric version of Rao's index. If
method="classic"
, then the normal parametric Rao's index will be calculated on a single matrix. Ifmethod="multidimension"
(experimental!) a list of matrices must be provided as input. In the latter case, the overall distance matrix will be calculated in a multi- or hyper-dimensional system by using the distance measure defined through the function argumentdist_m
. Each pairwise distance is then multiplied by the inverse of the squared number of pixels in the considered moving window, and the Rao's Q is finally derived by applying a summation. Default value is "classic".- rasterAUC
Boolean, if TRUE the output will be a SpatRaster object with x as a raster template.
- lambda
The value of the lambda of Minkowski's distance. Considered only if
dist_m = "minkowski"
andmethod="multidimension"
. Default value is 0.- na.tolerance
Numeric value \((0.0-1.0)\) which indicates the proportion of NA values that will be tolerated to calculate parametric Rao's index in each moving window over x. If the relative proportion of NA's in a moving window is bigger than na.tolerance, then the value of the window will be set as NA, otherwise Rao's index will be calculated considering the non-NA values. Default values are 1.0 (i.e., no tolerance for NA's). Default value is 1.0.
- rescale
Boolean. Considered only if
method="multidimension"
. If TRUE, each element ofx
is rescaled and centred.- diag
Boolean. If TRUE then the diagonal of the distance matrix is filled with 0's, otherwise with NA's. If
diag=TRUE
andalpha=0
, the output matrix will inexorably be composed of 0's.- simplify
Number of decimal places to be retained to calculate distances in Rao's index. Only if x is floats.
- np
The number of processes (cores) which will be spawned. Default value is 2.
- cluster.type
The type of cluster which will be created. The options are "MPI" (which calls "makeMPIcluster"), "FORK" (which calls "makeForkCluster"), and "SOCK" (which calls "makeCluster"). Default type is "SOCK".
- debugging
A boolean variable set to FALSE by default. If TRUE, additional messages will be printed. For debugging only.
Value
A matrix of dimension dim(x)
. If rasterAUC=TRUE
, then the output is a SpatRaster with x as a template.
Details
The accumulation function for the parametric Rao's Index (\(Q\)) is calculated integrating numerically over a range of alphas. *RaoAUC* is therefore equal to \((\int_{a}^{b} {1\over{N^4}}\cdot{d_{i,j}^{\alpha}})^{1\over{\alpha}} dx\). Where N is the number of pixels in a moving window, and alpha is a weight assigned to distances.
References
Rocchini, D., M. Marcantonio, and C. Ricotta (2017). Measuring Rao’s Q diversity index from remote sensing: An open source solution. Ecological Indicators. 72: 234–238.
Author
Matteo Marcantonio marcantoniomatteo@gmail.com
Examples
# Minimal example; RaoAUC with alphas ranging from 1 to 10
a <- matrix(c(10,10,10,20,20,20,20,30,30), ncol=3, nrow=3)
out <- RaoAUC(alphas=1:10, x=a, window=3, dist_m="euclidean", na.tolerance=1, rasterAUC=TRUE)
#> Warning: Simplify=0. Rounding data to 0 decimal places.
#> Warning: Input data are float numbers. Converting data to integer matrices...
#>
#> Processing alpha: 1 Moving Window: 3
#>
#> Processing alpha: 2 Moving Window: 3
#>
#> Processing alpha: 3 Moving Window: 3
#>
#> Processing alpha: 4 Moving Window: 3
#>
#> Processing alpha: 5 Moving Window: 3
#>
#> Processing alpha: 6 Moving Window: 3
#>
#> Processing alpha: 7 Moving Window: 3
#>
#> Processing alpha: 8 Moving Window: 3
#>
#> Processing alpha: 9 Moving Window: 3
#>
#> Processing alpha: 10 Moving Window: 3
#>
#> Integrating numerically Rao values over alphas...