After this workshop/exercise, you will have a better understanding of how to develop a perceptual mapping for brand/product positioning purposes using either survey data or qualitative data.
In addition, you will also try to learn how to design basic perceptual mapping questions for survey studies.
The first step is to collect your data. In this example, we collected Qualtrics survey data for the local groceries in Bakersfield, CA using a focus group. You may try to evaluate the attributes based on your group members’ perceptions of your project client’s business and the competition.
If you would like to follow my tutorial, I suggest that you think about using at least three attributes and follow the same data format (Columns:attributes; 1st Row: brands or products). Please open my sample data and see how it looks like.
In this exercise, we first calculate consumers’ average ratings for each attribute and then split the original survey dataset into two according to the education variable (1 and 0). The final datasets used for this analysis include those consumers who have at least a college degree (i.e., Bakersfield_Grocery1.csv) and those not (i.e., Bakersfield_Grocery2.csv).
The final output shows you how different grocery brands have been clustered in four quadrants to reflect how they are perceived in terms of several service attributes (Yelp Reviews, Convenience, Price or value, etc.).
library(devtools)
## Loading required package: usethis
install_github("vqv/ggbiplot")
## Skipping install of 'ggbiplot' from a github remote, the SHA1 (f7ea76da) has not changed since last install.
## Use `force = TRUE` to force installation
library(ggbiplot)
## Loading required package: ggplot2
## Loading required package: plyr
## Loading required package: scales
## Loading required package: grid
?ggbiplot #see the official introduction to this library
data <- read.csv("Bakersfield_Grocery1.csv", header=TRUE, row.names=1)
site.groups <- c(rep("a", 3), rep("b", 3),
rep("c", 3))
data.pca <- prcomp(data[,-1], scale. = TRUE)
data.pca <- prcomp(data, scale. = TRUE)
ggbiplot(data.pca, labels = rownames(data))
g1 <- ggbiplot(data.pca, obs.scale = 1, var.scale = 1,
groups = site.groups,
ellipse = TRUE, circle = TRUE, labels = rownames(data))
g1 <- g1 + scale_color_discrete(name = '')
g1 <- g1 + theme(legend.direction = 'horizontal',
legend.position = 'top')
print(g1)
library(devtools)
install_github("vqv/ggbiplot")
## Skipping install of 'ggbiplot' from a github remote, the SHA1 (f7ea76da) has not changed since last install.
## Use `force = TRUE` to force installation
library(ggbiplot)
data <- read.csv("Bakersfield_Grocery2.csv", header=TRUE, row.names=1)
site.groups <- c(rep("a", 3), rep("b", 3),
rep("c", 3))
data.pca <- prcomp(data[,-1], scale. = TRUE)
data.pca <- prcomp(data, scale. = TRUE)
ggbiplot(data.pca, labels = rownames(data))
g2 <- ggbiplot(data.pca, obs.scale = 1, var.scale = 1,
groups = site.groups,
ellipse = TRUE, circle = TRUE, labels = rownames(data))
g2 <- g2 + scale_color_discrete(name = '')
g2 <- g2 + theme(legend.direction = 'horizontal',
legend.position = 'top')
print(g2)