Veg Stars Up For Grabs: Perspectives from Yelp
As someone interested in the future of sustainable food and the carbon footprint of our food system, I realized that the Yelp data set hosted by Kaggle would be a great chance to explore food choices across consumers and restaurants. Given that plant-based diets can cut one’s carbon footprint by more than half (1,2), I was curious to see what insight Yelp could provide about how the public views vegetarian and vegan restaurants and how guests rate restaurants of different kinds. The insights gleaned from an investigation like this would be useful to restaurant owners, investors, suppliers, and those with an interest in promoting sustainable food options.
My two research questions fueling this work were:
- How have ratings of vegetarian and vegan restaurants trended over time?
- How do ratings of restaurants differ when written by omnivores versus vegetarians/vegans?
This dataset was released by Yelp and spans 2005 through 2022. It compiles information on 11 metropolitan areas for a total of about 7 million reviews. The data is in the form of two subsets: a set of business attributes (like whether a business offered delivery and what category of business it falls under) and another set of reviews, which includes user ID codes for each review and the star rating and text of the review. I merged these two datasets to form the final data frame that I worked from.
A central challenge in working with this data set was managing its size. With so many rows of rich data, even loading the data set into a data frame for viewing in a Python Jupyter notebook was enough to crash my computer with 8 GB of RAM. To increase the memory at my disposal, I opted to run my code on Google Colab, which increased my capacity to 12.5 GB. Even that was not enough to prevent a crash upon loading the CSV file, but thankfully, reading the file in with chunks of 500,000 rows did the trick.
Data Cleaning and Filtering
It turns out that about one-third of the businesses on Yelp are restaurants, so I had to filter out the other two-thirds. Thankfully, the restaurants were already coded as vegan or vegetarian, which made that much simpler than having to process the review text as I did in some initial attempts with a different version of the data set. The users who wrote the individual reviews were not coded as vegan or vegetarian, so I decided to look at the frequency with which users reviewed vegetarian and vegan restaurants and took the upper tail of that distribution as those who were most likely to be vegetarian and vegan respectively. I classified those who reviewed both types of restaurants very often as vegan, though we could easily collapse them into one group if needed. Those who reviewed vegan or vegetarian restaurants less than 15% of the time were classified as omnivores.
After filtering the data, these are the numbers we get when we split the data by vegetarians, vegans, and omnivores:
Vegan users: 50,715
Vegetarian users: 46,496
(Veg combined: 97,211)
Omnivore users: 1,189,010
Vegetarians and vegans together make up about 7.6% of the sample, which is consistent with national averages in the sample ranging between 5 and 10 percent depending on the country (1, 2, 3).
Yearly Review Count by User Type
There was no missing data in the reviews. You can see there are hardly any observations for the early days of the app for when it was first getting off the ground. At that time, there were not enough users to meaningfully distinguish vegetarians and vegans. You can also see there is almost no data for 2022 because that has not been updated with everything from this year. I chose to focus on just the past ten years and filter everything else out.
Yearly Review Count By User Type
Omnivore review count: 3,573,217
Vegetarian review count: 123,162
Vegan review count: 147,313
This filtering brought the number of reviews down to 3.8 million. Note that even though the numbers look small for vegetarian and vegan reviews, the scale is in hundreds of thousands. If you collapsed the reviews across years, you would see over 100,000 for both vegan and vegetarian reviews. Note also that we see the shock to the restaurant industry in 2020 from the COVID-19 pandemic and what appears to be the start of the recovery in 2021.
One-way ANOVA Result: F = 4727.01, p < .001
Tukey post-hoc: All groups differ at alpha = .01 level, p = .001
Whether we run parametric or non-parametric tests, we get significant differences between all three groups. Non-parametric tests show that restaurant ratings differ significantly between restaurant types: Kruskal-Wallis statistic = 52155.19, p < 0.001. The Dunn post-hoc test shows all three group medians differ.
This graph below looks the same as the previous one, but note that the meaning is different. The three lines represent the three types of users who are reviewing the restaurants: omnivores, vegans, and vegetarians. So we see that vegans rate restaurants higher on average, vegetarians rate them slightly lower, and omnivores give the lowest ratings. This collapses the data across restaurant types.
One-way ANOVA Result: F =2911.70, p < 0.001
Tukey post-hoc: All groups differ at alpha = .01 level, p = .001
Kruskal-Wallis statistic = 7920.39, p-value < 0.001
Welch Test between vegan and vegetarian groups is significant: Welch statistic = -24.47, p-value < .001)
G*Power shows this test has power = .95.
Pooled variance of vegan and vegetarian = 1.84, so pooled s = 1.36
Pooled variance of all three groups = 1.97
Splitting reviews by restaurant type and user type reveals some interesting trends. We see that omnivore restaurants get rated the highest by vegans, then second-highest by vegetarians. Vegans tend to rate the other two types of restaurants the highest most of the time, too.
So what do we learn? The average star rating of restaurants is stable over time once an app like Yelp is mainstream. But, more importantly, we have some early evidence to suggest that vegans rate all types of restaurants higher on average than omnivores. While the effect is small, over time, it can give a valuable advantage to restaurants that adjust their strategy accordingly. Plant-based food is cheaper on average, so this means businesses can increase their margins for those items. Offering multiple plant-based items would be an easy way to signal to and attract vegetarian and vegan guests with a menu they would want to explore.
This represents an opportunity for businesses to boost their rating and, as a result, their revenue, by attracting more vegan guests. Note that it doesn’t mean turning one’s restaurant all vegan or vegetarian; it just means offering some vegan dishes that vegan Yelp reviewers will want to try.
This is of course just a first step in niche consumer research. There are a lot more nuances I would add with more time and resources. For example, I would want to control for demographics like race, SES, and population density of the places being reviewed. The data included zip codes, which could be linked to that type of information. I imagine we could train a machine learning model to predict where would be the best place to open various types of restaurants.
Having demographic info would help us to determine the WHY behind the observed effects. For example, if vegans skew white and affluent, they are more likely to consume higher-quality food and rate it more highly.
The data set unfortunately did not include some of the most helpful information, like the symbol that says “Vegetarians go nuts for this spot” or the dollar sign symbol indicating the price range of the food served. That would certainly impact the star rating as it directly relates to food quality.
Another opportunity that comes to mind is Happy Cow, an app just like Yelp for vegans and vegetarians. It would be very helpful to see if those findings are consistent with what we find here on Yelp.
It would, of course, also be good to sample from a broader range of countries.
Lastly, it is important to note that most of the data is from before the COVID-19 pandemic, which has clearly had an impact on the restaurant industry. New constraints and trends could mean that things may turn on additional variables like availability of outdoor or spaced seating and that would be hard to incorporate into our models.
Photo credit: Caroline Green