R/generics.R
, R/model.R
, R/metricsExternal.R
, and 1 more
externalMetric.Rd
Compute one or more external metrics for two or more objects.
Note that there are many external metrics available, and there exists no external metric that works best in all scenarios. It is recommended to carefully consider which metric is most appropriate for your use case.
Many of the external metrics depend on implementations in other packages:
clusterCrit desgraupes2018clustercritlatrend
mclustcomp you2018mclustcomplatrend
igraph csardi2006igraphlatrend
psych revelle2019psychlatrend
See mclustcomp::mclustcomp()
for a grouped overview of similarity metrics.
Call getInternalMetricNames()
to retrieve the names of the defined internal metrics.
Call getExternalMetricNames()
to retrieve the names of the defined internal metrics.
# S4 method for class 'lcModel,lcModel'
externalMetric(
object,
object2,
name = getOption("latrend.externalMetric"),
...
)
# S4 method for class 'lcModels,missing'
externalMetric(object, object2, name = "adjustedRand")
# S4 method for class 'lcModels,character'
externalMetric(object, object2 = "adjustedRand")
# S4 method for class 'lcModels,lcModel'
externalMetric(object, object2, name, drop = TRUE)
# S4 method for class 'list,lcModel'
externalMetric(object, object2, name, drop = TRUE)
The object to compare to the second object
The second object
The name(s) of the external metric(s) to compute. If no names are given, the names specified in the latrend.externalMetric
option (none by default) are used.
Additional arguments.
Whether to return a numeric vector
instead of a data.frame
in case of a single metric.
For externalMetric(lcModel, lcModel)
: A numeric
vector of the computed metrics.
For externalMetric(lcModels)
: A distance matrix of class dist representing
the pairwise comparisons.
For externalMetric(lcModels, name)
: A distance matrix of class dist representing
the pairwise comparisons.
For externalMetric(lcModels, lcModel)
: A named numeric
vector or data.frame
containing the computed model metrics.
For externalMetric(list, lcModel)
: A named numeric
vector or data.frame
containing the computed model metrics.
Metric name | Description | Function / Reference |
adjustedRand | Adjusted Rand index. Based on the Rand index, but adjusted for agreements occurring by chance. A score of 1 indicates a perfect agreement, whereas a score of 0 indicates an agreement no better than chance. | mclustcomp::mclustcomp() , hubert1985comparinglatrend |
CohensKappa | Cohen's kappa. A partitioning agreement metric correcting for random chance. A score of 1 indicates a perfect agreement, whereas a score of 0 indicates an agreement no better than chance. | psych::cohen.kappa() , cohen1960coefficientlatrend |
F | F-score | mclustcomp::mclustcomp() |
F1 | F1-score, also referred to as the Sørensen–Dice Coefficient, or Dice similarity coefficient | mclustcomp::mclustcomp() |
FolkesMallows | Fowlkes-Mallows index | mclustcomp::mclustcomp() |
Hubert | Hubert index | clusterCrit::extCriteria() |
Jaccard | Jaccard index | mclustcomp::mclustcomp() |
jointEntropy | Joint entropy between model assignments | mclustcomp::mclustcomp() |
Kulczynski | Kulczynski index | clusterCrit::extCriteria() |
MaximumMatch | Maximum match measure | mclustcomp::mclustcomp() |
McNemar | McNemar statistic | clusterCrit::extCriteria() |
MeilaHeckerman | Meila-Heckerman measure | mclustcomp::mclustcomp() |
Mirkin | Mirkin metric | mclustcomp::mclustcomp() |
MI | Mutual information | mclustcomp::mclustcomp() |
NMI | Normalized mutual information | igraph::compare() |
NSJ | Normalized version of splitJoin . The proportion of edits relative to the maximum changes (twice the number of ids) | |
NVI | Normalized variation of information | mclustcomp::mclustcomp() |
Overlap | Overlap coefficient, also referred to as the Szymkiewicz–Simpson coefficient | mclustcomp::mclustcomp() vijaymeena2016surveylatrend |
PD | Partition difference | mclustcomp::mclustcomp() |
Phi | Phi coefficient. | clusterCrit::extCriteria() |
precision | precision | clusterCrit::extCriteria() |
Rand | Rand index | mclustcomp::mclustcomp() |
recall | recall | clusterCrit::extCriteria() |
RogersTanimoto | Rogers-Tanimoto dissimilarity | clusterCrit::extCriteria() |
RusselRao | Russell-Rao dissimilarity | clusterCrit::extCriteria() |
SMC | Simple matching coefficient | mclustcomp::mclustcomp() |
splitJoin | total split-join index | igraph::split_join_distance() |
splitJoin.ref | Split-join index of the first model to the second model. In other words, it is the edit-distance between the two partitionings. | |
SokalSneath1 | Type-1 Sokal-Sneath dissimilarity | clusterCrit::extCriteria() |
SokalSneath2 | Type-2 Sokal-Sneath dissimilarity | clusterCrit::extCriteria() |
VI | Variation of information | mclustcomp::mclustcomp() |
Wallace1 | Type-1 Wallace criterion | mclustcomp::mclustcomp() |
Wallace2 | Type-2 Wallace criterion | mclustcomp::mclustcomp() |
WMSSE | Weighted minimum sum of squared errors between cluster trajectories | |
WMMSE | Weighted minimum mean of squared errors between cluster trajectories | |
WMMAE | Weighted minimum mean of absolute errors between cluster trajectories |
See the documentation of the defineExternalMetric()
function for details on how to define your own external metrics.
Other metric functions:
defineExternalMetric()
,
defineInternalMetric()
,
getExternalMetricDefinition()
,
getExternalMetricNames()
,
getInternalMetricDefinition()
,
getInternalMetricNames()
,
metric()
Other lcModel functions:
clusterNames()
,
clusterProportions()
,
clusterSizes()
,
clusterTrajectories()
,
coef.lcModel()
,
converged()
,
deviance.lcModel()
,
df.residual.lcModel()
,
estimationTime()
,
fitted.lcModel()
,
fittedTrajectories()
,
getCall.lcModel()
,
getLcMethod()
,
ids()
,
lcModel-class
,
metric()
,
model.frame.lcModel()
,
nClusters()
,
nIds()
,
nobs.lcModel()
,
plot-lcModel-method
,
plotClusterTrajectories()
,
plotFittedTrajectories()
,
postprob()
,
predict.lcModel()
,
predictAssignments()
,
predictForCluster()
,
predictPostprob()
,
qqPlot()
,
residuals.lcModel()
,
sigma.lcModel()
,
strip()
,
time.lcModel()
,
trajectoryAssignments()
data(latrendData)
method <- lcMethodLMKM(Y ~ Time, id = "Id", time = "Time")
model2 <- latrend(method, latrendData, nClusters = 2)
model3 <- latrend(method, latrendData, nClusters = 3)
if (require("mclustcomp")) {
externalMetric(model2, model3, "adjustedRand")
}
#> Loading required package: mclustcomp
#> adjustedRand
#> 0.6227153