svm_mdsplot function

Support Vector Machine MDS

Support Vector Machine MDS

Plots 2D MDS configuration including facets as determined by an SVM.

svm_mdsplot(mds_object, svm_object, class, legend1 = TRUE, legend2 = TRUE, inset = c(-0.2, 0.5), plot.dim = c(1,2), by = 0.01, main, xlab, ylab, xlim, ylim, ...)

Arguments

  • mds_object: Object of class "smacofB", i.e., an MDS solution from smacofSym() or smacofConstraint.
  • svm_object: Object of class "svm", i.e., an SVM solution from svm or tune.svm
  • class: Vector of class assignments (facets) for each object.
  • legend1: If TRUE, facet legend is added.
  • legend2: If TRUE, class legend is added.
  • inset: Inset distance from the margins for both legends as a fraction of the plot region when legend is placed by keyword.
  • plot.dim: Vector with dimensions to be plotted.
  • by: Scaling factor for resolution (the smaller, the higher the resolution).
  • main: Plot title.
  • xlab: Label of x-axis.
  • ylab: Label of y-axis.
  • xlim: Scale x-axis.
  • ylim: Scale y-axis.
  • ...: Further plot arguments passed: see image for detailed information.

Details

Using the SVM implementation of e1071 one can determine facets in an MDS configuration based on an SVM fit. This function plots the resulting facets on top of the 2D MDS configuration. Note that this function is work in progress.

References

Mair, P., Cetron, J. S., and Borg, I. (2022). Using support vector machines for facet partitioning in multidimensional scaling. Multivariate Behavioral Research. Forthcoming; tools:::Rd_expr_doi("10.1080/00273171.2022.2035207")

See Also

svm, tune.svm

Examples

## Guttman intelligence data Delta <- sim2diss(Guttman1965[[1]]) class <- Guttman1965[[2]] ## ordinal MDS fit mds_gut <- mds(Delta, ndim = 2, type = "ordinal") mds_gut cols <- rainbow_hcl(4)[as.numeric(class)] plot(mds_gut, col = cols, label.conf = list(col = cols)) legend("bottomright", legend = levels(class), cex = 0.7, col = rainbow_hcl(4), pch = 19) ## radial SVM fit X <- mds_gut$conf ## extract configuration dat <- data.frame(class = class, X) ## merge with class vector costvec <- 2^seq(-4, 4) ## tuning parameter grid gamma <- seq(0.01, 0.5, 10) set.seed(111) svm_gut <- tune.svm(class ~ D1 + D2, data = dat, kernel = "radial", cross = 10, cost = costvec)$best.model svm_gut preds <- predict(svm_gut, data = dat) ## predicted classes table(obs = class, pred = preds) ## confusion matrix svm_mdsplot(mds_gut, svm_gut, dat$class, inset = c(-0.3, 0.5))
  • Maintainer: Patrick Mair
  • License: GPL-3
  • Last published: 2024-10-10

Useful links