---
title: "Bakersfield Grocery Stores Perceptual Mapping"
author: "Santiago Ramirez"
date: "`3/26/25`"
output:
html_document:
toc: true
toc_float: true
code_folding: show
---
## Data Preparation
``` r
# Manual data entry since file upload might be problematic
grocery_data1 <- data.frame(
Store = c("Trader Joe's", "Carniceria La Carreta", "Sprouts", "Albertson's",
"FoodMaxx", "Vallarta", "Aldi", "Winco", "Walmart"),
Yelp = c(4.5, 4, 4, 3, 2, 3, 3.5, 4, 2.5),
Value = c(4, 2, 3, 2, 3, 3, 4, 5, 4.5),
Convenience = c(3, 4, 3, 5, 3, 3, 3, 5, 4.5),
Assortment = c(3, 4, 3, 3, 3, 4, 3, 5, 5),
Service = c(5, 5, 5, 4, 4, 5, 5, 5, 4),
Delivery_ser = c(3, 3, 4, 4, 3, 3, 5, 4, 5),
Smart_Apps = c(4, 0, 4, 4, 3, 0, 0, 4, 4),
Group = "Group 1"
)
grocery_data2 <- data.frame(
Store = c("Trader Joe's", "Carniceria La Carreta", "Sprouts", "Albertson's",
"FoodMaxx", "Vallarta", "Aldi", "Winco", "Walmart"),
Yelp = c(4, 5, 4, 3, 4, 5, 4, 5, 4),
Value = c(2, 5, 3, 2, 3, 5, 4, 5, 4.5),
Convenience = c(3, 5, 3, 5, 3, 5, 3, 5, 4.5),
Assortment = c(3, 4, 3, 3, 3, 4, 3, 5, 5),
Service = c(4, 5, 3, 4, 4, 5, 5, 5, 4),
Delivery_ser = c(2, 2, 3, 4, 3, 3, 5, 4, 5),
Smart_Apps = c(2, 0, 2, 3, 3, 0, 0, 3, 4),
Group = "Group 2"
)
# Combine datasets
combined_data <- rbind(grocery_data1, grocery_data2)
Descriptive Statistics
# Summary statistics by group
group_summary <- combined_data %>%
group_by(Group) %>%
summarise(across(c(Yelp, Value, Convenience, Assortment, Service, Delivery_ser, Smart_Apps),
list(mean = mean, sd = sd)))
kable(group_summary, caption = "Summary Statistics by Consumer Group")
Summary Statistics by Consumer Group
Group 1 |
3.388889 |
0.8207382 |
3.388889 |
1.054093 |
3.722222 |
0.9052317 |
3.666667 |
0.8660254 |
4.666667 |
0.5000000 |
3.777778 |
0.8333333 |
2.555556 |
1.943651 |
Group 2 |
4.222222 |
0.6666667 |
3.722222 |
1.252775 |
4.055556 |
1.0137938 |
3.666667 |
0.8660254 |
4.333333 |
0.7071068 |
3.444444 |
1.1303883 |
1.888889 |
1.536591 |
# Store-level summary
store_summary <- combined_data %>%
group_by(Store) %>%
summarise(across(c(Yelp, Value, Convenience, Assortment, Service, Delivery_ser, Smart_Apps),
list(mean = mean, sd = sd)))
kable(store_summary, caption = "Store-Level Summary Statistics")
Store-Level Summary Statistics
Albertson’s |
3.00 |
0.0000000 |
2.0 |
0.000000 |
5.0 |
0.0000000 |
3 |
0 |
4.0 |
0.0000000 |
4.0 |
0.0000000 |
3.5 |
0.7071068 |
Aldi |
3.75 |
0.3535534 |
4.0 |
0.000000 |
3.0 |
0.0000000 |
3 |
0 |
5.0 |
0.0000000 |
5.0 |
0.0000000 |
0.0 |
0.0000000 |
Carniceria La Carreta |
4.50 |
0.7071068 |
3.5 |
2.121320 |
4.5 |
0.7071068 |
4 |
0 |
5.0 |
0.0000000 |
2.5 |
0.7071068 |
0.0 |
0.0000000 |
FoodMaxx |
3.00 |
1.4142136 |
3.0 |
0.000000 |
3.0 |
0.0000000 |
3 |
0 |
4.0 |
0.0000000 |
3.0 |
0.0000000 |
3.0 |
0.0000000 |
Sprouts |
4.00 |
0.0000000 |
3.0 |
0.000000 |
3.0 |
0.0000000 |
3 |
0 |
4.0 |
1.4142136 |
3.5 |
0.7071068 |
3.0 |
1.4142136 |
Trader Joe’s |
4.25 |
0.3535534 |
3.0 |
1.414214 |
3.0 |
0.0000000 |
3 |
0 |
4.5 |
0.7071068 |
2.5 |
0.7071068 |
3.0 |
1.4142136 |
Vallarta |
4.00 |
1.4142136 |
4.0 |
1.414214 |
4.0 |
1.4142136 |
4 |
0 |
5.0 |
0.0000000 |
3.0 |
0.0000000 |
0.0 |
0.0000000 |
Walmart |
3.25 |
1.0606602 |
4.5 |
0.000000 |
4.5 |
0.0000000 |
5 |
0 |
4.0 |
0.0000000 |
5.0 |
0.0000000 |
4.0 |
0.0000000 |
Winco |
4.50 |
0.7071068 |
5.0 |
0.000000 |
5.0 |
0.0000000 |
5 |
0 |
5.0 |
0.0000000 |
4.0 |
0.0000000 |
3.5 |
0.7071068 |
Principal Component Analysis
# Prepare data for PCA
pca_data <- combined_data[, c("Yelp", "Value", "Convenience", "Assortment", "Service", "Delivery_ser", "Smart_Apps")]
# Perform PCA
pca_result <- prcomp(pca_data, scale. = TRUE)
# Scree plot
fviz_eig(pca_result,
addlabels = TRUE,
ylim = c(0, 50),
main = "Variance Explained by Principal Components")

# Biplot
fviz_pca_ind(pca_result,
label = "all",
habillage = combined_data$Group,
addEllipses = TRUE,
title = "Perceptual Map of Bakersfield Grocery Stores")

Key Insights
Comparative Analysis
- Group Differences:
- Group 1 and Group 2 show variations in their perceptions of grocery
stores
- Notably different in Yelp ratings, Value, and Smart Apps usage
- Store Performance:
- Winco consistently performs well across both groups
- Walmart shows stable performance
- Carniceria La Carreta has high variability between groups
Recommendations
- For Store Managers:
- Focus on improving Smart Apps and digital services
- Enhance value proposition
- Develop targeted marketing strategies
- Suggested Additional Variables:
- Price sensitivity
- Local product sourcing
- Community engagement
- Online ordering capabilities
Conclusion
The analysis reveals nuanced differences in grocery store perceptions
between two consumer groups, highlighting opportunities for targeted
marketing and service improvements. ```