The website of the package is available here
Here we are! We are moving from maptools
,
sp
, rgeos
, raster
and
rgdal
to sf
, terra
and
tmap
. All the functions and the documentation were modified
accordingly. If you spot an error or a bug, please open an issue on
github.
The stable version of geocmeans
is available on CRAN.
You can install it with the command below.
install.packages("geocmeans")
You can install a development version of the geocmeans
package using the command below.
remotes::install_github(repo = "JeremyGelb/geocmeans", build_vignettes = TRUE, force = TRUE)
Jeremy Gelb, Laboratoire d’Équité Environnemental INRS (CANADA), Email: jeremy.gelb@ucs.inrs.ca
Philippe Apparicio, Laboratoire d’Équité Environnemental INRS (CANADA), Email: philippe.apparicio@ucs.inrs.ca
Provides functions to apply Spatial Fuzzy c-means Algorithm, visualize and interpret results. This method is well suited when the user wants to analyze data with a fuzzy clustering algorithm and to account for the spatial dimension of the dataset. In addition, indexes for measuring the spatial consistency and classification quality are proposed. The algorithms were developed first for brain imagery as described in the articles of Cai and al. 2007 and Zaho and al. 2013. Gelb and Apparicio proposed to apply the method to perform a socio-residential and environmental taxonomy in Lyon (France). The methods can be applied to dataframes or to rasters.
Four Fuzzy classification algorithms are proposed :
CMeans
GFCMeans
SFCMeans
SGFCMeans
Each function return a membership matrix, the data used for the classification (scaled if required) and the centers of the clusters.
For each algorithm, it is possible to calculate a “robust version”
and to add a noise group (used to catch outliers). See the parameters
robust
and noise_cluser
in the documentation
for more details.
The algorithms available require different parameters to be fixed by
the user. The function selectParameters
is a useful tool to
compare the results of different combinations of parameters. A multicore
version, selectParameters.mc
, using a plan from the package
future
is also available to speed up the calculus.
Many indices of classification quality can be calculated with the
function calcqualityIndexes
:
fclust::SIL.F
)fclust::PE
)fclust::PC
)fclust::MPC
)fclust::XB
)geocmeans::calcFukuyamaSugeno
)geocmeans::calcDavidBouldin
)geocmeans::calcCalinskiHarabasz
)geocmeans::calcGD43
and
calcGD53
)geocmeans::calcNegentropyI
)To assess the stability of the obtained clusters, a function for
bootstrap validation is proposed: boot_group_validation
.
The results can be used to verify if the obtained clusters are stable
and how much their centres vary.
Clustering methods like CMeans depend on the initial centers
selected. In geocmeans
, they are selected randomly, and two
runs of the functions can yield different results. To facilitate the
reproductibility of the results, the main functions of the package
(CMeans
, GFCMeans
, SFCMeans
,
SGFCMeans
, selectParameters
,
selectParameters.mc
) have a seed
parameter. It
can be set by the user to ensure that the results of the functions are
exactly the same.
Several functions are also available to facilitate the interpretation of the classification:
summarizeClusters
(also accessible with the generic function summary
)spiderPlots
violinPlots
mapClusters
(support
polygon, points and polylines)There is also a shiny app that can be used to go deeper in the result
interpretation. It requires the packages shiny
,
leaflet
, bslib
, plotly
,
shinyWidgets
, car
.
Several spatial indices can be calculated to have a better spatial
understanding of the obtained clusters, like the global or local Moran I
calculated on the membership values, or the join-count-test on the most
likely group for each observation. ELSA and Fuzzy ELSA statistics can
also be calculated to identify areas with high or low multidimensional
spatial autocorrelation in the membership values. See functions
spConsistency
, calcELSA
,
calcFuzzyELSA
and spatialDiag
.
We proposed an index to quantify the spatial inconsistency of a
classification (Gelb
and Apparicio). If in a classification close observations tend to
belong to the same group, then the value of the index is close to 0. If
the index is close to 1, then the belonging to groups is randomly
distributed in space. A value higher than one can happen in the case of
negative spatial autocorrelation. The index is described in the vignette
adjustinconsistency
. The function spatialDiag
does a complete spatial diagnostic of the membership matrix resulting
from a classification.
Detailed examples are given in the vignette
introduction
vignette("introduction","geocmeans")
If you would like to install and run the unit tests interactively,
include INSTALL_opts = "--install-tests"
in the
installation code.
remotes::install_github(repo = "JeremyGelb/geocmeans", build_vignettes = TRUE, force = TRUE, INSTALL_opts = "--install-tests")
testthat::test_package("geocmeans", reporter = "stop")
To contribute to geocmeans
, please follow these guidelines.
Please note that the geocmeans
project is released with
a Contributor
Code of Conduct. By contributing to this project, you agree to abide
by its terms.
geocmeans
version 0.3.4 is licensed under GPL2
License.