svm_mdsplot {smacof} | R Documentation |
Support Vector Machine MDS
Description
Plots 2D MDS configuration including facets as determined by an SVM.
Usage
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 |
svm_object |
Object of class |
class |
Vector of class assignments (facets) for each object. |
legend1 |
If |
legend2 |
If |
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 |
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; doi:10.1080/00273171.2022.2035207
See Also
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))