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). ## Interpreting the results - What does a Perceptual Map tell you? 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.). ## Data Analysis and Reporting - Understanding the perceptions of consumers who have a college degree
library(devtools)
## Loading required package: usethis
install_github("vqv/ggbiplot")
## Warning: `install_github()` was deprecated in devtools 2.5.0.
## ℹ Please use pak::pak("user/repo") instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## 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))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the ggbiplot package.
## Please report the issue to the authors.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
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)
The sample size used for this survey exercise is small. That said, please do not try to generalize the results to the entire population. Please keep in mind that for generalization purposes, we would usually need a survey from at least 30 customers for most statistical analysis.
Nenadic, O., & Greenacre, M. (2007). Correspondence analysis in R, with two-and three-dimensional graphics: the ca package. Journal of statistical software, 20(3). https://goedoc.uni-goettingen.de/bitstream/handle/1/5892/Nenadic.pdf?sequence=1
Sensographics and Mapping Consumer Perceptions Using PCA and FactoMineR. https://www.r-bloggers.com/2017/09/sensographics-and-mapping-consumer-perceptions-using-pca-and-factominer/
The Unavoidable Instability of Brand Image. https://www.r-bloggers.com/2014/06/the-unavoidable-instability-of-brand-image/
The R Project for Statistical Computing. https://www.r-project.org/
R for Data Science - Hadley Wickham. https://r4ds.had.co.nz/ R Markdown. https://rmarkdown.rstudio.com/
R Markdown: The Definitive Guide - Bookdown. https://bookdown.org/yihui/rmarkdown/
Responses to Questions:
1.) Interpret any differences between these two groups of consumers’ perceptions toward grocery stores in Bakersfield.
Based on my perceptual maps generated in R, I noticed clear differences between consumers with and without a college degree. In my first plot (college-educated group), stores are positioned closer to attributes like convenience, smart apps, and overall experience, suggesting these consumers value quality and efficiency. In contrast, the second plot shows that consumers without a college degree are more aligned with value and price-related attributes. The distance and clustering of stores in each map highlight how differently each group perceives the same brands. For example, some stores appear closer together on one map but more spread out on the other. This shows that education level influences how consumers define value and evaluate grocery stores.
2.) Suggest any other variables that might be included.
Looking at my R output, I think adding more variables would make the perceptual maps even more useful. Right now, the maps focus on attributes like value, convenience, and service, but additional factors such as store cleanliness, customer service quality, and product variety could provide deeper insights. I also think including digital-related variables, like online ordering or delivery services, would be important since many consumers now rely on those features. Demographics like income level or shopping frequency could also help explain why certain groups perceive stores differently in my plots. By expanding the variables, the perceptual map would better reflect real consumer behavior and help businesses make more targeted marketing decisions.
3.) Suggest what a particular grocery store manager should do to make data-informed marketing strategies.
Based on the perceptual maps I created in R, a grocery store manager can use these insights to adjust their marketing strategy. For example, if a store is positioned far from attributes like convenience or service, the manager could focus on improving the in-store experience or adding features like faster checkout or delivery options. In my plots, some stores are clearly associated with value, so managers targeting price-sensitive consumers could use promotions, discounts, or loyalty programs. On the other hand, for consumers who value quality and convenience, stores could emphasize product variety or premium options. Overall, the perceptual map helps managers see where they stand compared to competitors and make data-informed decisions.
Article & Response:
In the article “How The Perception Of A Good Brand Helps Your Company’s Effectiveness”, Jon Simpson explains how strong brand perception can improve a company’s effectiveness and overall success. One key takeaway is that customers are more likely to trust and stay loyal to brands that have a clear and positive image. This connects directly to what I observed in my R perceptual maps, where different groups associate stores with different attributes. Another important point is that consistency across all customer interactions, such as advertising and in-store experience, helps strengthen brand perception. Lastly, the article highlights that companies with strong brand images can charge higher prices and stand out from competitors. This shows how important perception is in shaping consumer decisions.