Introdução

Superstore, além de um excelente seriado, são grandes lojas que vendem uma variedade e produtos. Sejam eles alimentos, roupas, eletrodomésticos. Esse número maior de opções é a diferença entre os supermarket.

O termo superstore é americano, acredito que aqui no Brasil o mais próximo são os hipermercados, como o antigo Extra.

O dados usados foram retirados do Kaggle, disponibilizado por Vivek Chowdhury

Bibliotecas

library(here)
library(tidyverse)
library(caret)
library(factoextra)
library(cluster)
library(janitor)
library(Hmisc)
library(skimr)
library(treemap)
library(RColorBrewer)
library(flextable)
library(lubridate)
library(RVAideMemoire)
library(car)
library(rstatix)

Os Dados

head(dados) %>%
  flextable()

As Regiões

É interessante para uma rede de hipermercados saber onde há um maior número de clientes e quanto eles gastam em média, para assim ajudar na orientação de investimento de infraestrutura e marketing.

dados |>
  group_by(Region) |>
  distinct(Customer_ID) |>
  group_by(Região = Region) |>
  summarise(N.Clientes = n_distinct(Customer_ID)) |>
  flextable() |>
  align(align = "center", part = "all") |>
  line_spacing(space = 2, part = "all")
dados |>
  group_by(Region) |>
  summarise(media = mean(Sales)) |>
  arrange(desc(media)) |>
  ggplot(aes(x = Region, y = media, fill = Region)) + geom_col() + labs(y = "Média",
  x = "", title = "Média de Vendas Por Região") + theme(legend.position = "none")

Aparentemente não há muita diferença entre o número de clientes e de vendas entre as regiões.

Os Estados.

Será que há estados que dão mais lucros do que outros? Acredito que mesmo nos Estados Unidos tenham diferenças entre padrão de consumo, poder aquisitivo e preço ao longo do país.

dados |>
  group_by(Region, State) |>
  summarise(lucro = mean(Profit)) |>
  ggplot(aes(x = reorder(State, lucro), y = lucro, fill = Region)) + geom_col() +
  coord_flip() + labs(y = "Estados", x = "Lucro", title = "Lucro por Estado") +
  # facet_grid(.~Region)
facet_grid(Region ~ ., scales = "free") + theme(legend.position = "none") + geom_hline(yintercept = media_nacional_lucro,
  color = "black", size = 1, show.legend = "Media Nacional")

A linha é preta é a média nacional do lucro, avaliada em 28.6569

O gráfico não só expõe os estados com maior lucro, como também com com prejuízos.

Bem, todas as lojas que dão lucro estão acima da média.

Será que vale a pena manter estas lojas com valores negativos?

Clientes

Quais os clientes que mais gastaram no hipermercado.

dados |>
  group_by(Customer_ID, Customer_Name, Region) |>
  summarise(Gasto = sum(Sales)) |>
  arrange(desc(Gasto)) |>
  head(10) |>
  ggplot() + geom_col(aes(x = reorder(Customer_ID, Gasto), y = Gasto, fill = Region)) +
  labs(x = "Consumidor", y = "Gasto", title = "Maiores consumidores") + coord_flip()

dados |>
  group_by(Region, Customer_ID, Customer_Name) |>
  summarise(Gasto = sum(Sales)) |>
  arrange(desc(Gasto)) |>
  head(10) |>
  ggplot() + geom_col(aes(x = Region, y = Gasto, fill = Region)) + labs(x = "Regão",
  y = "Gasto", title = "Região dos Maiores Consumidores") + theme(legend.position = "none")

Apesar do cliente com mais gastos ser da região Sul, a região com mais clientes no top 10 é a central e a leste.

Testes estatísticos

Os códigos usados foram inspirados nas vídeo-aulas de Fernandas Peres.

Ela faz um excelente trabalho de ensino em estatística gratuito no youtube.

Recomendo o canal.

Será que o lucro médio por região é diferente?

Primeiro iremos testar a normalidade dos dados

byf.shapiro(Profit ~ Region, dados)
## 
##  Shapiro-Wilk normality tests
## 
## data:  Profit by Region 
## 
##              W   p-value    
## Central 0.2234 < 2.2e-16 ***
## East    0.2831 < 2.2e-16 ***
## South   0.3297 < 2.2e-16 ***
## West    0.2435 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

E a homogeneidade na variação Homoscedasticidade dos dados:

leveneTest(Profit ~ Region, dados, center = mean)
## Levene's Test for Homogeneity of Variance (center = mean)
##         Df F value   Pr(>F)   
## group    3  5.3355 0.001137 **
##       9990                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como resultados vemos que as distribuição dos dados não é normal e que a variedade dos dados não é homogênea, pois, em ambos os testes, de shapiro-wilk e levene, a hipótese nula é de homogenia.

Como temos mais de uma classificação para a Região, mais de um grupo, iremos fazer um teste de Kruskal-Wallis, um teste não-paramétrico.

Assim, saberemos se há diferença entre as medianas dos grupos.

kruskal.test(Profit ~ Region, dados)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Profit by Region
## Kruskal-Wallis chi-squared = 227.9, df = 3, p-value < 2.2e-16

Considerando um p<0.05 como significativo, podemos concluir que pelo menos um grupo tem mediana diferentes dos outros.

O teste de Dunn, nos permite comparar as medianas entre os grupos e verificar onde essa diferença ocorre.

dunn_test(Profit ~ Region, data = dados, p.adjust.method = "bonferroni")
## # A tibble: 6 x 9
##   .y.    group1  group2    n1    n2 statistic        p    p.adj p.adj.signif
## * <chr>  <chr>   <chr>  <int> <int>     <dbl>    <dbl>    <dbl> <chr>       
## 1 Profit Central East    2323  2848      7.76 8.23e-15 4.94e-14 ****        
## 2 Profit Central South   2323  1620      9.03 1.68e-19 1.01e-18 ****        
## 3 Profit Central West    2323  3203     14.9  3.59e-50 2.16e-49 ****        
## 4 Profit East    South   2848  1620      2.42 1.55e- 2 9.31e- 2 ns          
## 5 Profit East    West    2848  3203      7.33 2.26e-13 1.36e-12 ****        
## 6 Profit South   West    1620  3203      3.72 1.96e- 4 1.18e- 3 **

As únicas regiões cujas medianas não são diferentes são a região Sul e Leste.

Pra quê isso serve?

Os testes de hipóteses nos ajudam a melhor interpretar tabelas e gráficos. Isto melhora a nossa tomada de decisões, pois torna menos subjetivo nosso entendimento dos dados.

dados |>
  group_by(Region) |>
  get_summary_stats(Profit, type = "median_iqr") |>
  flextable() |>
  set_header_labels(Region = "Região", variable = "Variavél", n = "Quantidade",
    median = "Mediana", iqr = "IIQ")
dados |>
  ggplot() + geom_boxplot(aes(x = Region, y = Profit, fill = Region)) + labs(x = "Regão",
  y = "Lucro", title = "Lucro por Região", subtitle = "Variação quase imperceptivel") +
  theme(legend.position = "none")

dados |>
  ggplot() + geom_boxplot(aes(x = Region, y = Profit, fill = Region)) + labs(x = "Regão",
  y = "Lucro", title = "Distribuição dos Lucro por Região") + scale_y_continuous(limits = quantile(dados$Profit,
  c(0.1, 0.9))) + theme(legend.position = "none")

Conclusão

Esse rápido relatório mostra que há uma diferença nos lucros adquiridos pelo hipermercado (superstore), dependendo da região que ele se localiza.

Espera-se que ele sirva de consulta para futuras decisões de negócio da empresa.

Dashboard Simples

LINK