Pedi ao ChatGPT a criação de um dataset com o seguinte prompt:
"Crie um dataset para análise de séries temporais sobre 5 tipos de sabores de sorvete:
1. Chocolate
2. Morango
3. Creme
4. Limão
5. Uva
As variáveis explicativas serão: Data, Sabor, Local de venda (supermercado, shopping, praia e cidade), Preço, Tamanhos do sorvete (Casquinha, 250 gramas, 500 gramas e 1 kilograma).
A variável resposta será Vendas, contendo o volume de vendas ao longo de 3 anos entre 2021 e 2024.
As datas da variável Data deverá conter dados semanais.
Faça com que os sabores mais vendidos sejam baseados na preferência dos brasileiros."
Resultando em:
## Data Sabor Local de venda Preço Tamanho Vendas
## <IDat> <char> <char> <num> <char> <int>
## 1: 2021-01-03 Chocolate Supermercado 3.41 Casquinha 30
## 2: 2021-01-03 Chocolate Supermercado 6.52 250g 33
## 3: 2021-01-03 Chocolate Supermercado 10.94 500g 26
## 4: 2021-01-03 Chocolate Supermercado 20.83 1kg 28
## 5: 2021-01-03 Chocolate Shopping 3.16 Casquinha 31
## 6: 2021-01-03 Chocolate Shopping 6.56 250g 21
A análise a seguir foi feita baseada nestes dados: Vendas semanais de sorvetes entre 2021 e 2023, com foco em sabores, tamanhos, estabelecimentos e padrões temporais.
Esta análise consiste desde da Análise Exploratória até a Previsão dos Dados. Pedi para que o ChatGPT colocasse nesse documento os insights que fizemos de forma resumida e clara.
Será notório quando estivermos analisando a Decomposição da Série que faltou algo a ser solicitado ao prompt (será que vocês sabem o que faltou?). Farei uma Parte 2 deste mesmo dataset, porém solicitando à IA a inclusão do que está faltando e veremos se teremos conclusões diferentes das encontradas com esses dados (com certeza teremos!).
## # A tibble: 5 × 2
## sabor vendas_total
## <fct> <int>
## 1 Chocolate 72732
## 2 Morango 59315
## 3 Creme 47788
## 4 Limão 36986
## 5 Uva 26361
Insight: Chocolate lidera as vendas, Uva é o sabor menos vendido.
Insight: Uva tem o maior ticket médio, Morango o menor.
Insight: Chocolate combina alto volume com ticket médio equilibrado. Uva tem alta rentabilidade mas baixa demanda.
Insight: Casquinhas vendem mais na praia. 1kg gera mais receita. Ticket médio é consistente entre estabelecimentos.
## `geom_smooth()` using formula = 'y ~ x'
Insight: Relação linear clara, mas com diferentes inclinações por tamanho. 1kg tem maior valor unitário.
## `geom_smooth()` using formula = 'y ~ x'
Insight: Chocolate domina em todos os tamanhos. Uva tem menor volume de vendas.
• Existe diferença entre os tipos de estabelecimento?
## Df Sum Sq Mean Sq F value Pr(>F)
## estabelecimento 3 0.09 0.0314 0.066 0.978
## Residuals 624 296.35 0.4749
• Existe diferença entre os sabores?
## Df Sum Sq Mean Sq F value Pr(>F)
## sabor 4 13.8 3.451 4.701 0.00094 ***
## Residuals 780 572.6 0.734
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Insight: Estabelecimentos não diferem significativamente no ticket médio. Sabores são diferentes entre si.
• Quais sabores diferem entre si?
dunnTest(ticket_medio ~ as.factor(sabor), data = dados_teste2, method = "bonferroni")
## Dunn (1964) Kruskal-Wallis multiple comparison
## p-values adjusted with the Bonferroni method.
## Comparison Z P.unadj P.adj
## 1 Chocolate - Creme -0.007963971 0.993645738 1.00000000
## 2 Chocolate - Limão -0.967871364 0.333108617 1.00000000
## 3 Creme - Limão -0.959907393 0.337101825 1.00000000
## 4 Chocolate - Morango 0.433787551 0.664442722 1.00000000
## 5 Creme - Morango 0.441751523 0.658669022 1.00000000
## 6 Limão - Morango 1.401658915 0.161017125 1.00000000
## 7 Chocolate - Uva -2.835173715 0.004580077 0.04580077
## 8 Creme - Uva -2.827209744 0.004695556 0.04695556
## 9 Limão - Uva -1.867302351 0.061859377 0.61859377
## 10 Morango - Uva -3.268961267 0.001079431 0.01079431
Insight: O sabor Uva é o que se diferencia com relação aos demais sabores, exceto o sabor Limão.
# Gráfico: Decomposição STL
autoplot(decomposicao) + labs(title = "Decomposição STL da Série de Vendas Semanais")
Insight: A série apresenta tendência clara, sem sazonalidade marcada.
gg_season(dados_ts, vendas_total)
Insight: Não existe sazonalidade bem definida em nenhum dos anos.
Insight: AR(1) e MA(1) foram sugeridos como candidatos. Modelo ARIMA(2,0,0) foi o melhor ajustado.
# Gráfico: Diagnóstico dos resíduos
gg_tsresiduals(modelo_arima_2)
Insight: Resíduos são normais, homocedásticos, não autocorrelacionados.
# Previsão geral
autoplot(previsao_25s, dados_ts)
Insight: A previsão geral é estável, consistente com o padrão da série.
# Previsão por sabor
autoplot(previsao_por_sabor, dados_sabor)
Insight: Chocolate e Morango são mais confiáveis. Uva tem alta incerteza.
# Previsão por tamanho
autoplot(previsao_por_tamanho, dados_tamanho)
Insight: Casquinha lidera em volume, mas 500g é mais previsível.
# Previsão por estabelecimento
autoplot(previsao_por_estabelecimento, dados_estabelecimento)
Insight: Cidade tem o melhor comportamento. Shopping é o mais incerto.
# Previsão por sabor + tamanho
autoplot(previsao_por_sabor_tam, dados_sabor_tam_ts) +
labs(
title = "Previsão de Vendas Totais por Sabor e Tamanho - 25 Semanas",
x = "Data", y = "Vendas Totais"
) +
facet_wrap(sabor ~ tamanho) +
theme_minimal()
Insight: Chocolate Casquinha lidera com estabilidade. Uva tem problemas de previsibilidade em todos os tamanhos.
## # A tibble: 4 × 11
## tamanho .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1kg ARIMA… Trai… -9.29e- 2 37.8 29.9 -2.43 12.5 0.702 0.692 0.00887
## 2 250g ARIMA… Trai… 8.45e-14 41.0 33.3 -1.04 8.34 0.727 0.715 0.0180
## 3 500g ARIMA… Trai… -6.14e- 2 37.6 29.3 -1.45 9.35 0.636 0.657 -0.00765
## 4 Casquinha ARIMA… Trai… 3.48e- 2 38.7 31.8 -0.459 5.62 0.677 0.681 -0.0320
## # A tibble: 4 × 11
## estabelecimento .model .type ME RMSE MAE MPE MAPE MASE RMSSE
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Cidade ARIMA(ve… Trai… 5.54e-15 40.5 32.3 -1.23 8.84 0.700 0.685
## 2 Praia ARIMA(ve… Trai… 9.80e-14 39.2 30.8 -0.789 7.01 0.748 0.733
## 3 Shopping ARIMA(ve… Trai… -1.55e-13 43.8 34.9 -1.75 10.6 0.717 0.715
## 4 Supermercado ARIMA(ve… Trai… -1.27e- 1 43.9 34.7 -1.39 9.33 0.659 0.676
## # ℹ 1 more variable: ACF1 <dbl>
## # A tibble: 20 × 12
## sabor tamanho .model .type ME RMSE MAE MPE MAPE MASE RMSSE
## <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Chocola… 1kg ARIMA… Trai… -1.73e- 3 18.7 14.8 -8.24 23.6 0.700 0.715
## 2 Chocola… 250g ARIMA… Trai… -3.60e-12 20.1 16.0 -2.94 13.9 0.698 0.708
## 3 Chocola… 500g ARIMA… Trai… -1.97e- 2 19.2 15.4 -4.51 17.5 0.689 0.670
## 4 Chocola… Casqui… ARIMA… Trai… -8.14e-14 20.8 16.8 -1.51 10.0 0.697 0.713
## 5 Creme 1kg ARIMA… Trai… -1.79e-14 16.8 13.4 -16.5 36.0 0.743 0.721
## 6 Creme 250g ARIMA… Trai… -2.17e-14 18.6 14.2 -6.25 19.9 0.721 0.733
## 7 Creme 500g ARIMA… Trai… -3.17e-14 20.3 16.3 -17.1 35.5 0.676 0.671
## 8 Creme Casqui… ARIMA… Trai… -1.56e- 2 20.1 16.3 -3.62 15.6 0.684 0.685
## 9 Limão 1kg ARIMA… Trai… -2.49e-14 17.0 13.5 -32.4 54.3 0.659 0.674
## 10 Limão 250g ARIMA… Trai… -2.03e-15 18.0 14.3 -14.3 31.7 0.722 0.731
## 11 Limão 500g ARIMA… Trai… -3.00e-12 16.9 13.5 -20.6 40.5 0.699 0.696
## 12 Limão Casqui… ARIMA… Trai… 3.61e-14 16.5 12.4 -4.06 15.6 0.697 0.731
## 13 Morango 1kg ARIMA… Trai… 5.64e-13 18.6 15.6 -12.3 31.6 0.727 0.709
## 14 Morango 250g ARIMA… Trai… -3.44e-14 17.6 13.9 -3.69 15.4 0.722 0.709
## 15 Morango 500g ARIMA… Trai… 3.42e-12 19.9 15.7 -9.26 24.5 0.722 0.711
## 16 Morango Casqui… ARIMA… Trai… -1.02e-13 20.5 17.1 -2.27 12.7 0.713 0.690
## 17 Uva 1kg ARIMA… Trai… -1.30e-14 13.6 11.2 -Inf Inf 0.777 0.745
## 18 Uva 250g ARIMA… Trai… -1.23e- 2 17.3 13.7 -52.5 74.0 0.686 0.698
## 19 Uva 500g ARIMA… Trai… -1.53e- 2 15.7 13.0 -29.5 53.6 0.745 0.722
## 20 Uva Casqui… ARIMA… Trai… -3.07e-14 16.4 13.2 -9.25 25.7 0.722 0.722
## # ℹ 1 more variable: ACF1 <dbl>
Insight: MASE abaixo de 0.75 na maioria dos casos. Combinações com Uva e tamanhos grandes são menos previsíveis.
Acredito que vocês devam ter entendido que o que faltou no prompt inicial tenha sido pedir a garantia da sazonalidade de vendas de sorvete também baseada no comportamento dos brasileiros. Assim, teríamos o componente sazonal atrelado principalmente ao verão e inverno no país, e provalmente o modelo escolhido teria sido outro.
O chat desse projeto foi bem extenso, então por conta disso não consigo revelar para vocês como a interação com o ChatGPT para essa análise foi muito enriquecedora, tanto observando os aspectos positivos da ferramenta (passagem do conhecimento adaptada para o meu perfil, conversa profunda sobre o tema, insights criados em conjunto, conhecimento amplo sobre a lingugaem R e seus pacotes, etc), assim como os aspectos negativos. (por exemplo, tive a experiência de ver o viés de confirmação da IA através de uma conclusão que havia feito e comentado no chat, porém posteriormente vi que essa conclusão estava equivocada e o ChatGPT ao invés de me corrigir, afirmou o meu erro como se fosse verdade). Por isso é sempre importante relembrar de nunca confiar 100% no que as IAs nos entregam, pois assim como nós até elas são passíveis de erros (pelo menos até o momento).