About the package cops: Cluster optimized proximity scaling (COPS) refers to multidimensional scaling methods that aim at pronouncing the clustered appearance of the configuration. They achieve this by transforming proximities/distances with power functions and augment the fitting criterion with a clusteredness index, the OPTICS Cordillera (Rusch, Hornik & Mair 2018). There are two variants: One for finding the configuration directly for given parameters (COPS-C), and one for using the augmented fitting criterion to find optimal parameters for the power transformations (P-COPS). The package contains various functions, wrappers, methods and classes for fitting, plotting and displaying different MDS models in a COPS framework like Torgerson scaling, SMACOF, Sammon mapping, elastic scaling, symmetric SMACOF, spherical SMACOF, sstress, rstress, powermds, power elastic scaling, power sammon mapping, powerstress. All of these models can also solely be fit as MDS with power transformations. The package further contains functions for optimization (Adaptive LJ Algorithmus).
About the function cops: The high level function allows for minimizing copstress for a clustered MDS configuration. Allows to choose COPS-C (finding a configuration from copstress with cordillera penalty) and profile COPS (finding hyperparameters for MDS models with power transformations). It is a wrapper for copstressMin and pcops.
1 2 3 4 5 6 7
a dissimilarity matrix or a dist object
a character string specifying which variant of COPS to fit. Allowed is any of the following "1","2","Variant1","Variant2","v1","v2","COPS-C","P-COPS","configuration-c","profile","copstress-c","p-copstress". Defaults to "COPS-C".
arguments to be passed to
The cops package provides five categories of important functions:
Models & Algorithms:
cops() ... high level interface to fit COPS models as described in Rusch et al. (2021). By setting cordweight to zero they can also be used to fit metric MDS for many different models, see below.
copstressMin()... The workhorse for fitting a COPS-C model. Can also be called directly.
pcops()... The workhorse for fitting a P-COPS model. Can also be called directly.
powerStressMin()... a workhorse for fitting s-stress, r-stress (de Leeuw, 2014), p-stress (e.g., Rusch et al., 2021), Sammon mapping with power transformations (powersammon) and elastic scaling with power transformation (powerelastic). They can conveniently also be fitted via the cops functions and setting stressweight=1 and cordweight or by the dedicated functions starting with cops_XXX where XXX is the method and setting stressweight=1 and cordweight=0. It uses the nested majorization algorithm for r-stress of De Leeuw (2014).
ljoptim() ... An (adaptive) version of the Luus-Jakola random search
Wrappers and convenience functions:
conf_adjust(): procrustes adjustment of configurations
cmdscale(), sammon(): wrappers that return S3 objects to be used with cops
copstress() ... a function to calculate copstress (Rusch et al., 2021)
cop_smacofSym(), cop_sammon(), cop_cmdscale(), cop_rstress(), cop_powerstress(), cop_smacofSphere(), cop_sammon2(), cop_elastic(), cop_sstress(), cop_powerelastic(), cop_powersammon(): cop versions of these MDS models.
Methods: For most of the objects returned by the high-level functions S3 classes and methods for standard generics were implemented, including print, summary, plot, plot3dstatic.
Rusch, T., Hornik, K. & Mair, P. (2018) Assessing and quantifying clusteredness: The OPTICS Cordillera. Journal of Computational and Graphical Statistics, 27 (1), 220-233. doi: 10.1080/10618600.2017.1349664
Rusch, T., Mair, P. & Hornik, K. (2021) Cluster optimized proximity scaling. Journal of Computational and Graphical Statistics. doi: 10.1080/10618600.2020.1869027
Authors: Thomas Rusch, Jan de Leeuw, Patrick Mair
Maintainer: Thomas Rusch
For COPS-C Variant 1 see
copstressMin, for P-COPS Variant 2 see
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
data(BankingCrisesDistances) # shorthand function for COPS-C (finding configuration with copstress) res<-cops(BankingCrisesDistances[,1:69],variant="COPS-C", stressweight=0.98,cordweight=0.02,itmax=1000) # Note: itmax is very small here for illustration; will give a non-convergence # warning of the optimizer which disappears at itmax=275000 res summary(res) plot(res) plot(res,"reachplot") plot(res,"transplot") plot(res,"Shepard") #shorthand function for P-COPS (hyperparameter search for powerstress) res<-cops(BankingCrisesDistances[,1:69],variant="P-COPS") res summary(res) plot(res) plot(res,"reachplot") plot(res,"transplot") plot(res,"Shepard") dis<-as.matrix(smacof::kinshipdelta) #COPS-C with equal weight to stress and cordillera res1<-cops(dis,variant="COPS-C",stressweight=0.5,cordweight=0.5, minpts=2,itmax=1000) #use higher itmax in real res1 summary(res1) plot(res1) plot(res1,"reachplot") #s-stress type copstress (i.e. kappa=2, lambda=2) res3<-cops(dis,variant="COPS-C",kappa=2,lambda=2,stressweight=0.5,cordweight=0.5) res3 summary(res3) plot(res3) # power-stress type profile copstress # search for optimal kappa and lambda between # kappa=0.5,lambda=0.5 and kappa=2,lambda=5 # nu is fixed on -1 ws<-1/dis diag(ws)<-1 res5<-cops(dis,variant="P-COPS",loss="powerstress", theta=c(1.4,3,-1), lower=c(1,0.5,-1),upper=c(3,5,-1), weightmat=ws, stressweight=0.9,cordweight=0.1) res5 summary(res5) plot(res5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.