Clustering for biotic elements or for species delimitation (mixture method)
Clusters a presence-absence matrix object (for clustering
ranges/finding biotic elements, Hennig and Hausdorf, 2004) or
an object of genetic information (for species delimitation, Hausdorf
and Hennig, 2010)
by calculating an MDS from
the distances, and applying maximum likelihood Gaussian mixtures clustering
with "noise" (package mclust
) to the MDS points. The solution
is plotted. A standard execution (using the default distance of
prabinit
) will be prabmatrix <- prabinit(file="path/prabmatrixfile",
neighborhood="path/neighborhoodfile")
clust <- prabclust(prabmatrix)
print(clust)
Examples for species delimitation are given below in the examples section.
Note: Data formats are described
on the prabinit
and alleleinit
help pages. You may also consider the example datasets
kykladspecreg.dat
, nb.dat
,
Heterotrigona_indoFO.txt
or MartinezOrtega04AFLP.dat
.
Note: prabclust
calls the function
mclustBIC
in package mclust. An alternative is the use of hprabclust
.
prabclust(prabobj, mdsmethod = "classical", mdsdim = 4, nnk = ceiling(prabobj$n.species/40), nclus = 0:9, modelid = "all", permutations=0) ## S3 method for class 'prabclust' print(x, bic=FALSE, ...)
prabobj |
object of class |
mdsmethod |
|
mdsdim |
integer. Dimension of the MDS points. For
|
nnk |
integer. Number of nearest neighbors to determine the
initial noise estimation by |
nclus |
vector of integers. Numbers of clusters to perform the mixture estimation. |
modelid |
string. Model name for |
permutations |
integer. It has been found occasionally that
depending on the order of observations the algorithms |
x |
object of class |
bic |
logical. If |
... |
necessary for summary method. |
Note that if mdsmethod!="classical"
, zero distances between
non-identical objects are replaced by the smallest nonzero distance
divided by 10 to prevent the MDS methods from producing an error.
print.prabclust
does not produce output.
prabclust
generates an object of class prabclust
. This is a
list with components
clustering |
vector of integers indicating the cluster memberships of
the species. Noise can be recognized by output component |
clustsummary |
output object of |
bicsummary |
output object of |
points |
numerical matrix. MDS configuration. |
nnk |
see above. |
mdsdim |
see above. |
mdsmethod |
see above. |
symbols |
vector of characters, similar to |
permchange |
logical. If |
Note that we used mdsmethod="kruskal"
in our publications, but
mdsmethod="classical"
is now the default, because of
occasional numerical instabilities of the isoMDS
-implementation
for Jaccard, Kulczynski or geco distance matrices.
Sometimes, prabclust
produces an error because mclustBIC
cannot handle all models properly. In this case we recommend to change
the modelid
parameter. "noVVV"
and "VVV"
are
reasonable alternative choices (one of these is expected to reproduce
the error, but the other one might work).
Fraley, C. and Raftery, A. E. (1998) How many clusters? Which clusterin method? - Answers via Model-Based Cluster Analysis. Computer Journal 41, 578-588.
Hausdorf, B. and Hennig, C. (2010) Species Delimitation Using Dominant and Codominant Multilocus Markers. Systematic Biology, 59, 491-503.
Hennig, C. and Hausdorf, B. (2004) Distance-based parametric bootstrap tests for clustering of species ranges. Computational Statistics and Data Analysis 45, 875-896. http://stat.ethz.ch/Research-Reports/110.html.
# Biotic element/range clustering: data(kykladspecreg) data(nb) set.seed(1234) x <- prabinit(prabmatrix=kykladspecreg, neighborhood=nb) # If you want to use your own ASCII data files, use # x <- prabinit(file="path/prabmatrixfile", # neighborhood="path/neighborhoodfile") print(prabclust(x)) # Here is an example for species delimitation with codominant markers; # only 50 individuals were used in order to have a fast example. data(tetragonula) ta <- alleleconvert(strmatrix=tetragonula[1:50,]) tai <- alleleinit(allelematrix=ta) print(prabclust(tai)) # Here is an example for species delimitation with dominant markers; # only 50 individuals were used in order to have a fast example. # You may want to use stressvals to choose mdsdim. data(veronica) vei <- prabinit(prabmatrix=veronica[1:50,],distance="jaccard") print(prabclust(vei,mdsmethod="kruskal",mdsdim=3))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.