Concept

Multidimensional scaling, also known as perceptual mapping, is a procedure that enables a researcher to determine the perceived relative image of a set of objects. The purpose of MDS is to transform consumer judgement of overall similarity of preference into distance represented in multidimensional space. From a non-technical point of view, the purpose of multidimensional scaling (MDS) is to provide a visual representation of the pattern of proximities (i.e., similarities or distances) among a set of objects

Objective vs Subjective Dimensions

People use different type of judgement, objective and subjective judgement. Objective dimension is a measure that has quatifiable attributes. Another type of measure is a perceived dimension (subjective dimensions), in which individuals evaluate the objects based on perceptions.

MDS differs from factor and cluster analysis in two key aspects:

  1. A solution can be obtained for each individual

  2. It does not use a variate

Example

The aim of the methods is to build a mapping of a series of individuals from a proximities matrix (similarities or dissimilarities) between these individuals. The data correspond to a survey performed over 10 testers which have been asked to rate (the score ranges from 1 to 5) five chocolate bars, where only the product P1 is already available on the market.

First step we import data from spss using foreign library.

#import data
library(foreign)
newdata <- read.spss(file = "C:/Users/asus/Google Drive/Ilham Fadhil/Tutor/Advanced Statistics/Archive/Materi/Week 13/Chocolate Bars - MDS.sav", to.data.frame= TRUE, use.value.labels = TRUE)
head(newdata)
##   P1 P2 P3 P4 P5
## 1  2  1  4  5  3
## 2  3  1  2  5  4
## 3  1  2  4  3  5
## 4  3  2  4  5  1
## 5  3  2  4  5  1
## 6  2  1  3  5  4

Because MDS calculate using distance data. We must transpose using reshape2 package and calculate distance between row using dist function.

#transpose data
library(reshape2)
newdata <- t(newdata)
head(newdata)
##    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## P1    2    3    1    3    3    2    1    3    3     1
## P2    1    1    2    2    2    1    3    1    1     4
## P3    4    2    4    4    4    3    4    2    2     5
## P4    5    5    3    5    5    5    2    4    5     2
## P5    3    4    5    1    1    4    5    5    4     1

Next we employ MDS using smarcof package To show how the products position themselves on a map, given the opinion of the testers.

For the Stress we can borrow a rule of thumb from Kruskal (1964a) : .20=poor, .1=fair, .05=good, 0.025 excellent and 0=perfect Borg&Groenen, 38).

#multidimensional scaling
library(smacof)
d <- dist(newdata)
res.uc <- smacofIndDiff(d)
res.uc
## 
## Call: smacofIndDiff(delta = d)
## 
## Model: Three-way SMACOF 
## Number of objects: 5 
## Stress-1 value: 0.15 
## Number of iterations: 53
plot(res.uc, type = "p")
text(res.uc$gspace[,1], res.uc$gspace[,2], labels = row.names(newdata), cex = .7, adj = 2)