---
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 Yelp_mean Yelp_sd Value_mean Value_sd Convenience_mean Convenience_sd Assortment_mean Assortment_sd Service_mean Service_sd Delivery_ser_mean Delivery_ser_sd Smart_Apps_mean Smart_Apps_sd
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
Store Yelp_mean Yelp_sd Value_mean Value_sd Convenience_mean Convenience_sd Assortment_mean Assortment_sd Service_mean Service_sd Delivery_ser_mean Delivery_ser_sd Smart_Apps_mean Smart_Apps_sd
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

  1. 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
  2. Store Performance:
    • Winco consistently performs well across both groups
    • Walmart shows stable performance
    • Carniceria La Carreta has high variability between groups

Recommendations

  1. For Store Managers:
    • Focus on improving Smart Apps and digital services
    • Enhance value proposition
    • Develop targeted marketing strategies
  2. 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. ```