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
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)
head(dados) %>%
flextable()
Row_ID | Order_ID | Order_Date | Ship_Date | Ship_Mode | Customer_ID | Customer_Name | Segment | Country | City | State | Postal_Code | Region | Product_ID | Category | Sub_Category | Product_Name | Sales | Quantity | Discount | Profit |
1 | CA-2016-152156 | 2016-11-08 | 2016-11-11 | Second Class | CG-12520 | Claire Gute | Consumer | United States | Henderson | Kentucky | 42420 | South | FUR-BO-10001798 | Furniture | Bookcases | Bush Somerset Collection Bookcase | 261.9600 | 2 | 0.00 | 41.9136 |
2 | CA-2016-152156 | 2016-11-08 | 2016-11-11 | Second Class | CG-12520 | Claire Gute | Consumer | United States | Henderson | Kentucky | 42420 | South | FUR-CH-10000454 | Furniture | Chairs | Hon Deluxe Fabric Upholstered Stacking Chairs, Rounded Back | 731.9400 | 3 | 0.00 | 219.5820 |
3 | CA-2016-138688 | 2016-06-12 | 2016-06-16 | Second Class | DV-13045 | Darrin Van Huff | Corporate | United States | Los Angeles | California | 90036 | West | OFF-LA-10000240 | Office Supplies | Labels | Self-Adhesive Address Labels for Typewriters by Universal | 14.6200 | 2 | 0.00 | 6.8714 |
4 | US-2015-108966 | 2015-10-11 | 2015-10-18 | Standard Class | SO-20335 | Sean O'Donnell | Consumer | United States | Fort Lauderdale | Florida | 33311 | South | FUR-TA-10000577 | Furniture | Tables | Bretford CR4500 Series Slim Rectangular Table | 957.5775 | 5 | 0.45 | -383.0310 |
5 | US-2015-108966 | 2015-10-11 | 2015-10-18 | Standard Class | SO-20335 | Sean O'Donnell | Consumer | United States | Fort Lauderdale | Florida | 33311 | South | OFF-ST-10000760 | Office Supplies | Storage | Eldon Fold 'N Roll Cart System | 22.3680 | 2 | 0.20 | 2.5164 |
6 | CA-2014-115812 | 2014-06-09 | 2014-06-14 | Standard Class | BH-11710 | Brosina Hoffman | Consumer | United States | Los Angeles | California | 90032 | West | FUR-FU-10001487 | Furniture | Furnishings | Eldon Expressions Wood and Plastic Desk Accessories, Cherry Wood | 48.8600 | 7 | 0.00 | 14.1694 |
É 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")
Região | N.Clientes |
Central | 629 |
East | 674 |
South | 512 |
West | 686 |
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.
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?
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.
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.
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.
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")
Região | Variavél | Quantidade | Mediana | IIQ |
Central | Profit | 2,323 | 5.184 | 28.120 |
East | Profit | 2,848 | 8.172 | 27.161 |
South | Profit | 1,620 | 9.072 | 32.287 |
West | Profit | 3,203 | 11.166 | 29.148 |
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")
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.