Motivação Link para o cabeçalho

Um dia pensei em descobrir qual drink da Starbucks aqui em Mendoza é mais barato em relação ao seu volume. A ideia geral é verificar qual aumenta de preço de forma proporcionalmente menor quando o volume do copo aumenta.

Para isso, tirei uma foto do cardápio que estava na parede da cafeteria:

Cardápio Starbucks Mendoza

Para extrair os dados da imagem, utilizei o Gemini, do Google. Dei uma instrução simples, porém detalhada, para criar um conjunto de dados estruturados a partir da foto:

Prompt informado ao Gemini

O resultado foi exatamente o que eu desejava e, a partir dele, fiz a análise a seguir.

Análise dos Dados Link para o cabeçalho

Primeiro carrego todos os pacotes que necessito:

library(tidyverse)
theme_set(theme_minimal())
library(janitor)
library(gghighlight)
library(broom)

Em seguida, leio o arquivo criado pelo Gemini, corrigindo no processo o nome das colunas e os valores dos drinks para milhares de pesos. Também transformo a coluna tamanho em ml, para que a modelagem faça mais sentido numericamente, e retiro da análise os drinks que possuem apenas um tamanho.

sb <-
  read_csv(file = "dados/sb.csv") |> 
  clean_names()

sb <- 
  sb |> 
  filter(tamanho != "Único") |> 
  mutate(preco = preco * 1000) |> 
  mutate(tamanho = case_when(
    tamanho == "Alto" ~ 355,
    tamanho == "Grande" ~ 475,
    .default = 590
  )) |> 
  mutate(tamanho = as.numeric(tamanho))

A primeira visualização obtida é a seguinte:

ggplot(sb, aes(x = tamanho, y = preco, group = nome_do_drink)) + 
  geom_point() + 
  geom_line() + 
  labs(x = "Tamanho", y = "Preço (ARS)") + 
  scale_x_continuous(breaks = c(355, 475, 590), minor_breaks = NULL, labels = c("Alto", "Grande", "Venti"))

Como era de se esperar, quanto maior o drink, maior seu preço. Entretanto, a inclinação da reta dos preços é o fator importante aqui. Quanto menos inclinada essa reta for, menor é o aumento proporcional do preço dos drinks.

Sendo assim, eu ajusto uma regressão linear a cada drink da loja. Aquele que tiver o menor valor para o coeficiente angular é o drink cujo preço aumenta de forma menos intensa com o aumento da porção.

sb |> 
  group_by(nome_do_drink) |> 
  group_modify(~ broom::tidy(lm(preco ~ tamanho, data = .x))) |> 
  filter(term != "(Intercept)") |> 
  arrange(estimate)
## # A tibble: 17 × 6
## # Groups:   nome_do_drink [17]
##    nome_do_drink                      term  estimate std.error statistic p.value
##    <chr>                              <chr>    <dbl>     <dbl>     <dbl>   <dbl>
##  1 Vainilla Latte / Skinny Vainilla   tama…     2.99    0.700       4.27 0.147  
##  2 Refreshers (Mango Dragon / Frutil… tama…     3.41    0.449       7.59 0.0834 
##  3 Americano                          tama…     3.83    0.293      13.1  0.0486 
##  4 Pink Drink / Dragon Drink          tama…     3.83    0.199      19.3  0.0330 
##  5 Shaken Espresso (Avellana / Choc.… tama…     3.84    0.690       5.56 0.113  
##  6 Flat White / Latte Macchiato       tama…     4.25    0.0523     81.4  0.00782
##  7 Frappuccino (Todos os sabores bás… tama…     4.27    0.930       4.59 0.137  
##  8 Caramel Macchiato                  tama…     4.67    0.794       5.88 0.107  
##  9 Dulce de Leche Latte               tama…     4.67    0.794       5.88 0.107  
## 10 Mocha / Mocha Blanco               tama…     4.67    0.794       5.88 0.107  
## 11 Caramel Brulée Latte               tama…     4.68    0.303      15.4  0.0412 
## 12 Red Velvet Latte                   tama…     4.68    0.303      15.4  0.0412 
## 13 Chocolate / Chocolate Blanco       tama…     5.52    0.805       6.86 0.0921 
## 14 Nuestras Perlas (Refreshers com P… tama…     5.53    0.178      31.1  0.0204 
## 15 Matcha Latte / Chai Latte          tama…     5.96    0.418      14.3  0.0446 
## 16 Sweet Vainilla Cold Brew           tama…     6.39    0.167      38.2  0.0167 
## 17 Café del Día con Leche             tama…     7.68    1.87        4.11 0.152

Portanto, os drinks Vainilla Latte / Skinny Vainilla são aqueles cujo preço menos aumenta em média, 2.99 pesos a cada ml a mais de drink. Por outro lado, Café del Día con Leche é o drink cujo preço aumenta mais, com 7.68 pesos de aumento, em média, a cada ml a mais que é pedido.

Portanto, quem quiser fazer seu dinheiro render mais, a pedida é escolher um Vainilla Latte para beber.

Abaixo mostro como é o comportamento do preço de ambos os drinks quando comparados com os demais. Veja como é possível perceber o grande aumento do Café del Dia con Leche, enquanto o Vainilla Latte possui uma taxa de aumento bastante inferior a todas as outras opções.

ggplot(sb, aes(x = tamanho, y = preco, group = nome_do_drink)) + 
  geom_point() + 
  geom_line() + 
  labs(x = "Tamanho", y = "Preço (ARS)") + 
  scale_x_continuous(breaks = c(355, 475, 590), minor_breaks = NULL, labels = c("Alto", "Grande", "Venti")) + 
  gghighlight(nome_do_drink %in% 
                c("Vainilla Latte / Skinny Vainilla",
                  "Café del Día con Leche"),
              keep_scales = TRUE)