Introdução à Ciência de Dados

Análise Exploratória de Dados - Gráfica

Prof. Washington Santos da Silva

IFMG - Campus Formiga

4 de junho de 2025

Diário de Bordo

O que vimos até hoje?

  • Aula 1 ✅

    • Introdução e Contextualização ✅
    • O que é Ciência de Dados? ✅
    • Papéis Profissionais na Área de Dados ✅
    • Áreas de Aplicações ✅
    • Habilidades Interpessoais e Analíticas ✅
    • Apresentação da Disciplina ✅
  • Aula 2 ✅

    • Metodologia CRISP-DM ✅

    • Tipos de Análise ✅

      • Descritiva ✅
      • Diagnóstica ✅
      • Preditiva ✅
      • Prescritiva ✅
    • Configurações: Git/GitHub ✅

  • Aula 3 ✅

    • Introdução ao RStudio ✅

      • Criação do seu Projeto RStudio da Disciplina ✅
  • Aula 4 ✅

    • Introdução ao Git e GitHub ✅

      • Criação do seu repositório do projeto RStudio da disciplina no GitHub ✅
  • Aula 5 ✅

    • Breve Revisão do IDE RStudio ✅

    • Introdução ao Sistema de Publicação Quarto ✅

    • Sessão Prática Guiada com Relatório 1 ✅

      • Execução dos comandos git essenciais ✅
  • Aula 6 ✅

    • Parte I ✅

      • O Relatório Junglivet e a Metodologia CRISP-DM ✅
      • Primeiro contato com a linguagem R por meio dos códigos do relatório ✅
    • Parte II ✅

      • Para alunos com projetos estruturados ✅
      • Atividade prática ✅
      • Para alunos com dificuldades técnicas ✅
      • Atendimento individualizado para estruturação de projetos ✅
  • Aula 7 ✅

    • Introdução ao sistema Quarto (continuação) ✅

      • Gerar relatório no formato pdf ✅
      • Gerar relatório no formato docx ✅
    • Introdução à Linguagem R (continuação) ✅

      • Conceitos: Variáveis e observações ✅
      • Estrutura tabular organizada de dados ✅
      • Tipos e classes de dados principais em R ✅
      • Estruturas de dados: vetores e data frames ✅
  • Aula 8 ✅

    • Início do estudo do pacote dplyr para manipulação de dados ✅

      • CRISP-DM: Fase 2 (Entendimento dos dados) e Fase 3 (Preparação dos dados) ✅
        de um projeto de análise ou ciência de dados ✅
      • O que é o dplyr? ✅
      • A Filosofia Tidy Data (Dados Organizados) ✅
      • Dados Organizados (Tidy Data) ✅
      • Por que usar o dplyr? ✅
      • Fluxo de trabalho com dplyr ✅
      • Boas Práticas com dplyr ✅
      • Função dplyr::select() ✅
      • Função dplyr::filter() ✅
  • Aula 9 ✅

    • Solução dos exercícios práticos sobre as funções select e filter ✅
    • Função dplyr::mutate() ✅
  • Aula 10 ✅

    • Soluções dos exercícios práticos sobre a função mutate ✅
    • funções dplyr::group_by(), dplyr::summarize() e dplyr::arrange() ✅
  • Aula 11 ✅

    • Metodologia CRISP-DM e Pacote dplyr ✅
    • Revisão sobre Dados Organizados (Tidy Data) ✅
    • Exemplos de Dados Desorganizados Comuns em Administração ✅
    • Pacote tidyr: Função pivot_longer ✅
  • Aula 12 ✅

    • Metodologia CRISP-DM e o tidyverse ✅
    • Dados Organizados: Potencializando Análises ✅
  • Aula 13 ✅

    • Avaliação 1 ✅
  • Aula 14 ✅

    • Tipos Básicos de joins do pacote dplyr ✅
  • Aula 15 ✅

    • Variáveis Aleatórias em Finanças ✅
    • Distribuições de Probabilidade ✅
    • Início: Distribuição Normal (ou Gaussiana) ✅
  • Aula 16 ✅

    • Distribuição Normal (ou Gaussiana) - Parte 2 ✅
    • Características da Distribuição de uma VA ✅
      • Valor Esperado (Média) ✅
  • Aula 17 ✅

    • Características da Distribuição de uma VA ✅

      • Variância e Desvio-Padrão ✅
      • Variância: Propriedades Básicas ✅
      • Aplicação: Valor-em-Risco (VaR) ✅
      • Assimetria e Curtose ✅
  • Aula 18 ✅

    • Características da Distribuição de uma VA ✅

      • Covariância e Correlação ✅
      • Fundamentos de Simulação de Monte Carlo ✅
  • Aula 19 ✅

    • Teoria da Probabilidade e Análise Estatística de Dados ✅

    • CRISP-DM e Análise Exploratória de Dados ✅

    • Análise Exploratória Numérica ✅

      • Medidas de Posição (ou de Tendência Central) ✅
      • Medidas de Variabilidade ✅
      • Medidas de Correlação ✅

Avaliaçao 2

Data

  • A Avaliação 2 será aplicada no dia 18/06/2025, quarta-feira

Nesta Aula

Tópicos

  • Análise Exploratória Gráfica

    • Visualização de Dados e o Pacote ggplot2

    • Gráficos para Visualizar a Distribuição de Variáveis Numéricas

      • Histograma
      • Densidade Empírica (ou Kernel da Densidade)
      • Boxplot
      • Boxplot Comparativo

Arquivo para esta Aula (20)

Instruções

  • Abra o RStudio e o seu Projeto da Disciplina

  • Crie a subpasta 12-relatorio dentro da pasta relatorios.

  • Acesse o site da disciplina e baixe o arquivo 12-relatorio.zip

  • Descompacte o arquivo, copie/recorte o arquivo 12-relatorio.qmd e cole dentro da subpasta 12-relatorio.

Na última Aula

Análise Exploratória de Dados

  • Na última aula, vimos que uma análise exploratória de dados numérica, envolve calcular estatísticas para entender melhor algumas das características principais da distribuição dos dados, tais como:

    • Medidas de Tendência Central/Posição
    • Medidas de Variabilidade
    • Medidas de Correlação
  • Entretanto, uma análise exploratória de dados é sobretudo visual ou gráfica — vamos nos concentrar nesta análise a partir desta aula.

Diretrizes para Aulas Mais Produtivas

🔊 Mantenha conversas em volume baixo

⌨️ Código com método:

95% dos erros são evitáveis com:

  • Atenção na digitação
  • Respeitar a sequência lógica de etapas
  • Revisão antes de pedir ajuda

🤝 Inteligência colaborativa:

  • Compartilhe conhecimento
  • Resolva questões técnicas simples com colegas próximos
  • Reserve ao professor as dúvidas conceituais complexas

💪 Capacidade de Resolver Problemas

Cada erro resolvido é uma evolução da sua habilidade analítica

Visualização de Dados e o Pacote ggplot2

O Quarteto de Anscombe

Descrição

Francis Anscombe (1973) criou quatro conjuntos de dados que demonstram a importância da visualização estatística de dados.

Pergunta central: Estatísticas descritivas são suficientes para compreender conjuntos de dados?

Spoiler: Definitivamente não!

O Quarteto de Anscombe

# Carregando o conjunto de dados Anscombe (built-in no R)
data(anscombe)
head(anscombe)
  x1 x2 x3 x4   y1   y2    y3   y4
1 10 10 10  8 8.04 9.14  7.46 6.58
2  8  8  8  8 6.95 8.14  6.77 5.76
3 13 13 13  8 7.58 8.74 12.74 7.71
4  9  9  9  8 8.81 8.77  7.11 8.84
5 11 11 11  8 8.33 9.26  7.81 8.47
6 14 14 14  8 9.96 8.10  8.84 7.04

Quatro pares de variáveis: (x1,y1), (x2,y2), (x3,y3), (x4,y4)

Propriedades: As médias, desvios-padrão, assimetria, curtose e outras medidas são praticamente iguais!

Estatísticas Descritivas

# A tibble: 4 × 11
  grupo   x_média  x_dp x_mediana x_assimetria x_curtose y_média  y_dp y_mediana
  <chr>     <dbl> <dbl>     <dbl>        <dbl>     <dbl>   <dbl> <dbl>     <dbl>
1 Dados 1       9  3.32         9         0        -1.22    7.50  2.03      7.58
2 Dados 2       9  3.32         9         0        -1.22    7.50  2.03      8.14
3 Dados 3       9  3.32         9         0        -1.22    7.5   2.03      7.11
4 Dados 4       9  3.32         8         2.85      6.1     7.50  2.03      7.04
# ℹ 2 more variables: y_assimetria <dbl>, y_curtose <dbl>

Visualização do Quarteto

Interpretação dos Padrões

Interpretação dos Gráficos

Dados 1:

  • Relação linear clara
  • Modelo linear adequado

Dados 2:

  • Relação não-linear clara
  • Modelo linear inadequado

Dados 3:

  • Relação linear perfeita com 1 outlier
  • Outlier influente

Dados 4:

  • Sem correlação entre x e y
  • Outlier cria correlação artificial

Lição: As mesmas estatísticas podem mascarar padrões completamente diferentes!

Lições do Quarteto de Anscombe

Lições

  1. Análise exploratória visual é obrigatória antes da análise/modelagem

  2. Estatísticas descritivas podem mascarar padrões importantes

  3. Outliers e não-linearidades só são detectados visualmente

  4. Comunicação efetiva requer gráficos bem construídos

  5. Diagnósticos gráficos são essenciais para validar modelos

Princípio fundamental: Sempre visualize antes de analisar/modelar!

Visualização de dados

“O gráfico mais simples trouxe mais informações à mente do analista de dados do que qualquer outro dispositivo.” — John Tukey

Visualização de dados

O que é Visualização de Dados?

  • Visualização de dados é a criação e o estudo da representação visual de dados

  • É uma subárea de pesquisa em Estatística, Ciência de Dados e de outras áreas

  • Muitas ferramentas para visualizar dados – a linguagem R é uma delas

  • Muitas abordagens/sistemas dentro de R para criar visualizações de dados - o pacote ggplot2 é um deles, e é esse pacote que vamos usar.

Pacote ggplot2 \(\in\) Tidyverse

  • ggplot2 é o pacote de visualização de dados do tidyverse
  • gg em “ggplot2” significa Gramática de Gráficos
  • Inspirado no livro Grammar of Graphics de Leland Wilkinson

Gramática dos Gráficos

  • Um gráfico é construído por camadas (layers):

    • Dados
    • Mapeamento Estético
    • Geometria
    • Estatísticas
    • Coordenadas
    • Facetas
    • Temas

Estrutura Básica do ggplot2

Descrição

Sintaxe básica do ggplot2:

ggplot(data = data_frame, 
       mapping = aes(x = var_x, y = var_y)) +
  geom_<tipo>()

A estrutura básica é composta por quatro componentes essenciais:

1. Função ggplot() → Cria um sistema de coordenadas vazio onde o gráfico será construído

2. Dadosdata = data_frame especifica o conjunto de dados

3. Mapeamento Estéticoaes(...) define como as variáveis são mapeadas aos elementos visuais

4. Geometriageom_<tipo>() determina o tipo de gráfico (pontos, linhas, barras, etc.)

A função ggplot() estabelece a base fundamental criando um sistema de coordenadas vazio que recebe os dados e mapeamentos estéticos. As camadas gráficas subsequentes são adicionadas através do operador +.

Mapeamento Estético - aes()

O que faz?

  • Mapeia/conecta variáveis a elementos visuais do gráfico

Sintaxe:

aes(x = variavel_1, 
    y = variavel_2,
    color = variavel_3, 
    size = variavel_4,
    shape = variavel_5)

Principais Mapeamentos:

  • x = variavel_1 → eixo horizontal
  • y = variavel_2 → eixo vertical
  • color = variavel_3 → cor
  • size = variavel_4 → tamanho
  • shape = variavel_5 → forma

Geometrias - geom_*()

O que faz?

Define o tipo de gráfico que será criado

Sintaxe:

ggplot(...) +
  geom_point()   # exemplo: gráfico de dispersão

Tipos Comuns:

  • geom_histogram() → histograma
  • geom_boxplot() → boxplot
  • geom_point() → gráfico de dispersão
  • geom_line() → gráfico de linha
  • geom_bar() e geom_col() → gráfico de barra

Dados dos Exemplos

Descrição

Os dados economics, contidos no pacote ggplot2, contém séries temporais mensais de indicadores econômicos dos EUA coletados pelo Bureau of Labor Statistics e Federal Reserve Economic Data, cobrindo o período de julho de 1967 a abril de 2015.

Variáveis Disponíveis:

  • date → Data da observação mensal (tipo atômico Date)

  • unemploy → Número total de desempregados em milhares de pessoas (Total Unemployed)

  • uempmed → Duração mediana do desemprego em semanas (Median Duration of Unemployment)

  • pce → Gastos de consumo pessoal em bilhões de dólares (Personal Consumption Expenditures)

  • pop → População total dos EUA em milhares de habitantes

  • psavert → Taxa de poupança pessoal como percentual da renda disponível (Personal Savings Rate)

Um Gráfico Exploratório

# a função ggplot() cria um sistema de coordenadas vazio
ggplot(data = economics, 
       mapping = aes(x = date, y = unemploy/1000)) +
  # adiciona um gráfico de linha
  geom_line() 

Um Gráfico Exploratório

Gráfico de linha exploratório

Um Gráfico para Publicação

# salva o gráfico em um objeto
grafico_desemprego_eua <-  
# a função ggplot() cria um sistema de coordenadas vazio
ggplot(data = economics, 
       mapping = aes(x = date, y = unemploy/1000)) +
  # adiciona um gráfico de linha
  geom_line(color = "steelblue", size = 1.2) +
  # adiciona zero no eixo Y 
  scale_y_continuous(limits = c(0, 17), breaks = seq(0, 16, 2)) +
  # adiciona título, subtítulo, rótulos dos eixos e fonte
  labs(title = "Evolução do Desemprego Mensal nos EUA",
       subtitle = "Período: 1967-2015",
       x = "Período",
       y = "Total de Desempregados (em milhões)",
       caption = "Fonte: Bureau of Labor Statistics") +
  # define o tema do gráfico
  theme_minimal()

# exibe o gráfico
grafico_desemprego_eua

Um Gráfico de linha para publicação

Evolução do Desemprego nos EUA (1967-2015)

Boa Prática

Por que incluir o zero no eixo Y?

Integridade na representação: A ausência do zero distorce visualmente a magnitude real das variações.

Contexto proporcional: Para dados de desemprego, o zero fornece referência importante para avaliar mudanças econômicas.

Quando o zero (talvez) pode ser omitido?

  • Em análises do nível de preços ou de índices financeiros consolidados. Exemplo: ações cujo preço varia entre $150-200 tornam imperceptíveis flutuações de 12% em gráficos com zero.

  • Para indicadores econômicos como desemprego, receita, entre outros a inclusão do zero é importante.

Gráficos para Visualizar a Distribuição de Variáveis Numéricas

Gráficos da Distribuição de Variáveis Numéricas

O que são?

Características observáveis nos gráficos da distribuição de variáveis numéricas:

  • Simetria/Assimetria: A distribuição é simétrica? Assimétrica à esquerda? ou assimétrica à direita?.

  • Modalidade: A distribuição possui um ou dois ou mais picos (ou modas)?

  • Valores Extremos: Há um ou mais valores muito distantes da maioria dos dados?

  • Variação: Qual variável apresenta maior variação? Faz sentido somente ao comparar mais de uma variável.

  • Gaps: Há intervalos de valores que não contém dados?

  • Erros: Há valores fora do intervalo factível?

Histograma

O que é um histograma?

  • Um histograma é uma gráfico para visualizar a distribuição de uma variável aleatória numérica.

  • Ele é construído dividindo o intervalo total dos dados em uma série de intervalos (bins), e o total de dados em cada intervalo é representada pela altura de cada barra.

  • Assim, cada barra do histograma representa a frequência (número de ocorrências) dos dados dentro de um determinado intervalo de valores.

Histograma: Interpretação da Forma

Histograma exploratório

# a função ggplot() cria um sistema de coordenadas vazio
ggplot(data = economics, 
       mapping = aes(x = unemploy/1000)) +
  # adiciona um histograma
  geom_histogram()

Histograma exploratório

Histograma da Distribuição do Desemprego nos EUA (1967-2015)

Efeito do Número de Bins

Histograma com 5 intervalos - Distribuicão com poucos detalhes

Histograma com 15 intervalos - Distribuição equilibrada

Histograma com 30 intervalos - Distribuição muito detalhada

Efeito do Número de Intervalos (bins)

Efeito do Número de Bins

  • O número de intervalos (bins) utilizado para agrupar e contar os dados numéricos na construção de um histograma é um parâmetro crítico para a qualidade do histograma.

  • Muitos bins resultam em uma resolução maior, permitindo uma visão mais detalhada da distribuição dos dados.

  • Por outro lado, poucos bins, resulta em uma resolução menor, com menos detalhes da distribuição.

  • A escolha do número de bins afeta significativamente a aparência e a interpretação do histograma.

  • A escolha de um valor adequado depende dos dados específicos e do objetivo da análise.

  • Não existe um valor único que seja ótimo para todos os casos

Algumas estratégias para escolher o total de bins incluem:

  • Experimentação e Visualização: Ajustar os bins manualmente.

  • Regras Empíricas: Existem regras empíricas, como a Regra de Sturges, que pode fornecer um ponto de partida para a escolha do número de bins.

Como Escolher o Número de Intervalos?

Fórmula da Regra de Sturges

\[k = 1 + \log_2(n)\]

Onde k representa o número de intervalos recomendado e n o tamanho da amostra.

Aplicação aos Dados de Desemprego:

# Calcula o tamanho da amostra
n <- length(economics$unemploy)
n
[1] 574
# Aplicar a regra de Sturges
k <- ceiling(1 + log2(n))
k
[1] 11

Resultado: Para 574 observações, a regra recomenda 11 classes.

Histograma Exploratório com 10 Classes

# Usar o número de classes calculado no histograma
ggplot(data = economics, 
       mapping = aes(x = unemploy/1000)) +
  geom_histogram(bins = 11) +
  labs(title = "Histograma com Regra de Sturges (10 classes)",
       x = "Desempregados (milhões)",
       y = "Frequência") +
  theme_minimal()

Histogram para Publicação

Histograma da Distribuição do Desemprego nos EUA (1967-2015) com 10 classes

Análise de um Histograma

Diretrizes para Análise

1. Forma da Distribuição

Classifique como simétrica, assimétrica à direita/esquerda, unimodal, bimodal ou uniforme, e avalie as implicações.

2. Tendência Central

Identifique onde se concentram os valores e relacione com média e mediana, essas medidas indicam um valor ou intervalo no qual a maioria dos dados se concentram, revelando o comportamento típico da variável.

3. Variabilidade dos Dados e hiatos

Avalie a variabilidade. Observe lacunas ou concentrações específicas.

4. Estatísticas Descritivas Complementares

Calcule e interprete média, mediana, desvio-padrão, assimetria e curtose para confirmar e quantificar os padrões observados visualmente no histograma.

5. Valores Atípicos

Detecte barras isoladas nas extremidades e avalie suas implicações.

6. Interpretação Contextual

Relacione padrões observados com conhecimento da área de aplicação e suas implicações práticas.

7. Limitações da Análise

Reconheça limitações da análise visual e comente sobre adequação do número de classes.

Estatísticas Descritivas

# calcula estatísticas descritivas

economics %>%
  summarise(
    media = mean(unemploy, na.rm = TRUE),
    mediana = median(unemploy, na.rm = TRUE),
    desvio_padrao = sd(unemploy, na.rm = TRUE),
    assimetria = fBasics::skewness(unemploy, na.rm = TRUE),
    curtose = fBasics::kurtosis(unemploy, na.rm = TRUE)
  )
# A tibble: 1 × 5
  media mediana desvio_padrao assimetria curtose
  <dbl>   <dbl>         <dbl>      <dbl>   <dbl>
1 7771.    7494         2642.      0.697   0.795

Uma Análise Plausível

Análise do Histograma

O histograma apresenta distribuição unimodal com assimetria positiva entre fraca e moderada (coeficiente de assimetria 0,697), indicando que houve períodos ocasionais de alto desemprego. A concentração principal ocorreu entre 5 e 10 milhões de desempregados aproximadamente

A distribuição unimodal com alguma assimetria positiva indica que a maioria das observações concentra-se em níveis de desemprego moderados, enquanto episódios de alto desemprego ocorreram com menor frequências, assim, possivelmente a assimetria observada captura recessivos econômicos ou eventos excepcionais ocorridos no período analisado.

Densidade Empírica (ou Kernel da Densidade)

O que é um gráfico de densidade empírica?

  • Um gráfico da densidade empírica dos dados é uma representação visual que estima a função densidade de probabilidade de uma variável numérica contínua.

  • Diferente do histograma, que agrupa os dados em intervalos mostra a frequência absoluta de cada intervalo, o gráfico de densidade suaviza os dados para formar uma curva contínua.

  • Este tipo de gráfico é gerado através de um processo conhecido como
    estimativa do kernel da densidade.

  • A ideia básica por trás da estimação do kernel de uma densidade é suavizar os pontos de dados individuais em toda a região do espaço de dados, de forma a obter uma estimativa contínua para a função de probabilidade.

  • Isso é feito utilizando uma função conhecida como “kernel”, que distribui o peso dos pontos de dados ao longo de um intervalo de valores, com o maior peso geralmente no centro e diminuindo conforme se afasta do ponto central.

Um dos kernels mais comuns é o kernel gaussiano:

\[ K(x) = \frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{x^2}{2}\right) \]

  • A estimativa da densidade \(f(x)\) em um ponto \(x\) é dada por:

\[ f(x) = \frac{1}{nh}\sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right) \]

sendo:

  • \(n\) o número de pontos de dados,
  • \(x_i\) são os dados,
  • \(K\) é a função do kernel,
  • \(h\) é a largura da banda ou intervalo (binwidth), um parâmetro crítico que controla o grau de suavização da estimativa da densidade.

Densidade Empírica

Interpretação

  • A interpretação do gráfico da densidade empírica segue a mesma lógica da interpretação de um histograma, implicando nas mesmas conclusões.

Densidade Exploratória

# salva o gráfico em um objeto
densidade_exploratoria <-
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000)) + 
  # adiciona um gráfico de densidade
  geom_density()

# exibe o gráfico
densidade_exploratoria

Densidade Exploratória

Densidade para Publicação

# salva o gráfico em um objeto
densidade_publicacao <- 
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000)) +
  # adiciona um gráfico de densidade
  # size define a espessura da linha
  geom_density(size = 1) +
  # adiciona título, subtítulo, rótulos dos eixos e fonte
  labs(
    title = "Distribuição do Desemprego nos EUA",
    subtitle = "Período: 1967-2015",
    x = "Total de Desempregados (milhões)",
    y = "Densidade",
    caption = "Fonte: Bureau of Labor Statistics"
  )  +
  # define o tema do gráfico
  theme_minimal()

# exibe o gráfico
densidade_publicacao 

Densidade para Publicação

Histograma com densidade empírica sobreposta

# salva o gráfico em um objeto
histograma_densidade <- 
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000))  +
  # adiciona um histograma
  geom_histogram(
    aes(y = after_stat(density)), # normaliza o histograma
    bins = 10,
    fill = "#E6F2FF",     # azul muito claro para as barras
    color = "#2E5984"     # azul escuro para borda das barras
  ) +
  # adiciona uma densidade empírica
  geom_density(
    alpha = .3,       # transparência
    fill = "#1B3A57"  # azul navy para a densidade
  ) +
  # adiciona título, subtítulo, rótulos dos eixos e fonte
  labs(
    title = "Distribuição do Desemprego nos EUA",
    subtitle = "Período: 1967-2015",
    x = "Total de Desempregados (milhões)",
    y = "Densidade",
    caption = "Fonte: Bureau of Labor Statistics"
  ) +
  # define o tema do gráfico
  theme_minimal()

histograma_densidade

Histograma com densidade empírica sobreposta

Boxplot

O que é um boxplot?

  • Um gráfico boxplot (gráfico de caixa) é um gráfico que descreve várias características essenciais de uma distribuição de dados através de um resumo de cinco números (estatísticas):

  • o valor mínimo,

  • o primeiro quartil (Q1),

  • a mediana (segundo quartil, Q2),

  • o terceiro quartil (Q3)

  • o valor máximo.

  • Este gráfico fornece uma representação compacta da distribuição de um conjunto de dados, destacando a mediana, a variabilidade, a assimetria e os valores extremos (outliers).

Boxplot

Boxplot: Interpretação

Componentes e Interpretação

  • Mediana: Linha central da caixa (Q2)
  • Quartis: Extremidades da caixa representam Q1 e Q3, delimitando o IQR
  • Bigodes: Estendem-se até os valores mais extremos dos dados que não são outliers
  • Outliers: Pontos isolados além dos bigodes

Critério para definição de outliers:

  • Limite inferior: \(Q1 - 1.5 \times IQR\)
  • Limite superior: \(Q3 + 1.5 \times IQR\)
  • Qualquer observação fora desses limites é considerada outlier

Como os bigodes são definidos:

  • Bigode inferior: vai até o menor valor dos dados que seja \(\geq Q1 - 1.5 \times IQR\)

  • Bigode superior: vai até o maior valor dos dados que seja \(\leq Q3 + 1.5 \times IQR\)

  • Se não há outliers, os bigodes vão até o mínimo e máximo reais dos dados

Interpretação visual:

  • Assimetria: Posição da mediana na caixa e comprimento relativo dos bigodes

  • Variabilidade: Altura da caixa (IQR contém 50% dos dados centrais)

Boxplot: Interpretação

Boxplot Exploratório

# salva o gráfico em um objeto
boxplot_exploratorio <-
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000)) + 
  # adiciona um boxplot
  geom_boxplot()

# exibe o gráfico
boxplot_exploratorio

Boxplot Exploratório

Boxplot Exploratório

# salva o gráfico em um objeto
boxplot_exploratorio_flip <-
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000)) + 
  # adiciona um boxplot
  geom_boxplot() + 
  # inverte os eixos 
  coord_flip() 

# exibe o gráfico
boxplot_exploratorio_flip

Boxplot Exploratório

Boxplot para Publicação

# salva o gráfico em um objeto
boxplot_publicacao <- 
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(economics, aes(x = unemploy/1000)) + 
  # adiciona um boxplot
  geom_boxplot() + 
  # inverte os eixos
  coord_flip() +
  # adiciona zero no eixo X
  scale_x_continuous(limits = c(0, NA), expand = expansion(mult = c(0, 0.05))) +
  # adiciona título, subtítulo, rótulos dos eixos e fonte
  labs(
    title = "Distribuição do Desemprego nos EUA",
    subtitle = "Período: 1967-2015",
    x = "Total de Desempregados (milhões)",
    y = NULL, # remove o rótulo do eixo Y
    caption = "Fonte: Bureau of Labor Statistics"
  ) +
  # define o tema do gráfico
  theme_minimal() +
  # remove os rótulos do eixo X e as marcas do eixo X
  theme(
    axis.text.x = element_blank(),    # remove os rótulos do eixo X
    axis.ticks.x = element_blank()    # remove as marcas do eixo X
  )

# exibe o gráfico
boxplot_publicacao

Boxplot para Publicação

Boxplot Comparativo

Comparação de Grupos

  • Boxplots são úteis para comparar a distribuição de uma variável numérica entre diferentes grupos, sendo o grupo uma variável categórica.

  • Esse gráfico permite identificar diferenças na tendência central, variabilidade, simetria/assimetria e presença de outliers entre os grupos, valores possíveis de uma variável categórica.

Dados do Exemplo

Descrição Geral

Os data frame diamonds contém informações sobre 53.940 diamantes (linhas) e 10 variáveis (colunas), ela está contida no pacote ggplot2.

Algumas Variáveis

  • price → Preço do diamante em dólares

  • carat → Peso do diamante em quilates (1 quilate = 0.2 gramas)

  • cut → Qualidade do corte (Fair, Good, Very Good, Premium, Ideal)

  • color → Cor do diamante, escala de D (melhor) a J (pior)

  • clarity → Medida da clareza do diamante, de I1 (pior), SI2, SI1, VS2, VS1, VVS2, VVS1 a IF (melhor)

Boxplot Comparativo Exploratório

# salva o gráfico em um objeto
boxplot_comparativo_exploratorio <-
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(diamonds, aes(x = cut, y = price)) + 
  # adiciona um boxplot
  geom_boxplot()

# exibe o gráfico
boxplot_comparativo_exploratorio

Boxplot Comparativo Exploratório

Análise do Boxplot Exploratório

Análise na Escala Original

  • A variável price apresenta uma distribuição fortemente assimétrica positiva (assimétria à direita), para todos os níveis de qualidade do corte (cut), com presença de muitos outliers.

  • Tipicamente, a distribuição de preços de bens e serviços em geral tende a ser assimétrica à direita, com a maioria dos preços concentrados em torno de valores mais baixos, enquanto alguns poucos preços são muito altos, o que é o caso dos diamantes.

  • Esta forte assimetria à direita torna difícil a visualização e interpretação dos dados para comparar os preços dos diamantes por qualidade do corte (cut), pois a presença de outliers distorce a análise, dificultando a identificação de padrões e tendências.

  • Esse é um caso típico para aplicação de uma transformação logarítmica, que pode ajudar a reduzir a assimetria e melhorar a visualização e interpretação dos dados.

Boxplot Comparativo - Transformação Logarítmica

# salva o gráfico em um objeto
boxplot_comparativo_exploratorio <-
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(diamonds, aes(x = cut, y = price)) + 
  # adiciona um boxplot
  geom_boxplot() +
  # aplica a escala logarítmica no eixo Y
  scale_y_log10()

# exibe o gráfico
boxplot_comparativo_exploratorio

Boxplot Comparativo - Transformação Logarítmica

Transformação Logarítmica

Efeitos da Transformação Logarítmica

  • Útil para dados com distribuição assimétrica (ex.: a distribuição de preços), onde valores extremos distorcem a análise.

  • Reduz a influência de outliers e aproxima a distribuição da normalidade, facilitando visualização e interpretação.

  • Em boxplots, destaca diferenças na mediana e variabilidade entre grupos, minimizando o impacto de outliers.

  • A escala logarítmica (eixo Y) melhora a comparação visual entre distribuições.

Exemplo Numérico (base 10)

  • Valores originais: [1, 10, 100, 1000] → Transformados: [0, 1, 2, 3].

Interpretação:

  • A diferença entre 100 e 1000 (900 unidades) é reduzida para 1 unidade (3 – 2).

  • A diferença entre 1 e 10 (9 unidades) vira 1 unidade (1 – 0).

Conclusão:

A transformação “comprime” a escala dos valores maiores, reduzindo a assimetria.

Análise

Análise dos Dados na Escala Logarítmica

  • Simetria: A transformação logarítmica tornou as distribuições mais simétricas e comparáveis, reduzindo o efeito de valores extremos.

  • Medianas: Surpreendentemente, os preços medianos são similares entre as qualidades de corte, com diamantes Ideal apresentando preço mediano ligeiramente inferior.

  • Variabilidade: A dispersão dos preços é aproximadamente homogênea entre os grupos, exceto para Fair que apresenta:

    • Menor variabilidade geral
    • Outliers inferiores indicando diamantes atipicamente baratos
  • Interpretação Cuidadosa: Este padrão contra-intuitivo sugere que:

    • Outros fatores (quilates, clareza, cor) podem estar confundindo a relação corte-preço

    • Diamantes com corte superior podem ter características compensatórias (menor tamanho?)

    • É essencial realizar uma análise multivariada antes de conclusões definitivas

  • Lição Estatística: Este exemplo ilustra a importância de não basear decisões em análises univariadas quando múltiplas variáveis interagem.

Boxplot Comparativo para Publicação

# salva o gráfico em um objeto
boxplot_comparativo_publicacao <- 
  # ggplot() cria um sistema de coordenadas vazio
  ggplot(diamonds, aes(x = cut, y = price)) + 
  # adiciona um boxplot
  geom_boxplot() +
  # aplica a escala logarítmica no eixo Y
  scale_y_log10() +
  # adiciona título, subtítulo, rótulos dos eixos e fonte
  labs(
    title = "Distribuição do Preço dos Diamantes por Qualidade do Corte",
    subtitle = "Data frame diamonds do pacote ggplot2",
    x = "Qualidade do Corte",
    y = "Preço (log10) em dólares",
    caption = "Fonte: Pacote ggplot2 da linguagem R"
  ) +
  # define o tema do gráfico
  theme_minimal()

# exibe o gráfico
boxplot_comparativo_publicacao

Boxplot Comparativo para Publicação

Exercício

Prática com ggplot2 usando a data frame diamonds

Parte 1 - Visualizando a variável price

  • Histograma (use a regra de Sturges para número de classes)
  • Gráfico de densidade empírica
  • Histograma + densidade sobreposta
  • Boxplot

Parte 2 - Análise comparativa

  • Crie boxplots de price por clarity
  • Aplique transformação log10 para melhor visualização
  • Compare os padrões entre as categorias

Parte 3 - Análise descritiva

  • Analise o histograma + densidade da Parte 1
  • Siga as diretrizes apresentadas em aula
  • Comente sobre forma, centro, dispersão e outliers

Requisitos:

  • Todos os gráficos devem ter títulos e rótulos apropriados
  • Customização visual é opcional (exploratório vs. publicação)

Dica: A distribuição de price é assimétrica. Experimente visualizar também log10(price) para comparar interpretações nas duas escalas.

Gráfico com Qualidade de Publicação

Anatomia de uma Visualização Profissional

Elementos de Excelência no Gráfico de Gilbert Fontana

1. Hierarquia da Informação

  • Título claro e direto
  • Subtítulo contextualizando a métrica
  • Dados organizados em pequenos múltiplos

2. Design Minimalista e Funcional

  • Fundo neutro (#F4F5F1) que não compete com os dados
  • Espaçamento generoso entre elementos
  • Ausência de bordas e gridlines desnecessárias

3. Uso Estratégico de Cores

  • Paleta artística coerente (MetBrewer::Redon)
  • Destaque automático com outras séries em cinza
  • Cores distintas mas harmoniosas para cada país

4. Anotações e Contexto

  • Valores finais destacados ao lado de cada série
  • Linha de referência em 100 (baseline significativa)
  • Explicação clara do indicador no subtítulo

5. Detalhes Técnicos Refinados

  • Tipografia consistente (Google Font: Gudea)
  • Eixos simplificados (anos em formato ’20, ’21, ’22)
  • Créditos apropriados (designer e fonte dos dados)
  • Código reproduzível e bem documentado

Atualizando os Repositórios

Instruções

  1. No terminal do RStudio, verifique quais arquivos/pastas foram modificados ou criados com:
git status
  1. Você pode adicionar todos os arquivos de uma vez com:
git add .
  1. Execute git status novamente para confirmar que todos os arquivos foram adicionados (aparecerão em verde sob “Changes to be committed”):
git status
  1. Se tudo estiver em verde, faça um commit com uma mensagem descritiva:
git commit -m "atualizacoes aula 20"
  1. Se algum arquivo ou pasta ainda aparecer em vermelho após o segundo git status, adicione as pastas/arquivos um por um:
git add relatorios/12-relatorio/12-relatorio.qmd
  1. Execute git status novamente e faça o commit quando todos os arquivos estiverem em verde:
git commit -m "atualizacoes aula 20"
  1. Envie o repositório local atualizado para o GitHub:
git push origin main