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
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:
A solution can be obtained for each individual
It does not use a variate
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)