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
Análise Exploratória de Dados - Gráfica
IFMG - Campus Formiga
4 de junho de 2025
O que vimos até hoje?
Aula 1 ✅
Aula 2 ✅
Metodologia CRISP-DM ✅
Tipos de Análise ✅
Configurações: Git/GitHub ✅
Aula 3 ✅
Introdução ao RStudio ✅
Aula 4 ✅
Introdução ao Git e 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 ✅
Aula 6 ✅
Parte I ✅
Parte II ✅
Aula 7 ✅
Introdução ao sistema Quarto (continuação) ✅
Introdução à Linguagem R (continuação) ✅
Aula 8 ✅
Início do estudo do pacote dplyr para manipulação de dados ✅
Aula 9 ✅
Aula 10 ✅
Aula 11 ✅
Aula 12 ✅
Aula 13 ✅
Aula 14 ✅
Aula 15 ✅
Aula 16 ✅
Aula 17 ✅
Características da Distribuição de uma VA ✅
Aula 18 ✅
Características da Distribuição de uma VA ✅
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 ✅
Data
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
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.
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:
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:
🤝 Inteligência colaborativa:
💪 Capacidade de Resolver Problemas
Cada erro resolvido é uma evolução da sua habilidade analítica
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!
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!
# 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>
Interpretação dos Gráficos
Dados 1:
Dados 2:
Dados 3:
Dados 4:
Lição: As mesmas estatísticas podem mascarar padrões completamente diferentes!
Lições
Análise exploratória visual é obrigatória antes da análise/modelagem
Estatísticas descritivas podem mascarar padrões importantes
Outliers e não-linearidades só são detectados visualmente
Comunicação efetiva requer gráficos bem construídos
Diagnósticos gráficos são essenciais para validar modelos
Princípio fundamental: Sempre visualize antes de analisar/modelar!
“O gráfico mais simples trouxe mais informações à mente do analista de dados do que qualquer outro dispositivo.” — John Tukey
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.
gg
em “ggplot2” significa Gramática de GráficosUm gráfico é construído por camadas (layers):
Descrição
Sintaxe básica do ggplot2:
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. Dados → data = data_frame
especifica o conjunto de dados
3. Mapeamento Estético → aes(...)
define como as variáveis são mapeadas aos elementos visuais
4. Geometria → geom_<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 +
.
aes()
O que faz?
Sintaxe:
Principais Mapeamentos:
x = variavel_1
→ eixo horizontaly = variavel_2
→ eixo verticalcolor = variavel_3
→ corsize = variavel_4
→ tamanhoshape = variavel_5
→ formageom_*()
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)
Gráfico de linha exploratório
# 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
Evolução do Desemprego nos EUA (1967-2015)
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.
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?
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 da Distribuição do Desemprego nos EUA (1967-2015)
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.
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:
[1] 574
[1] 11
Resultado: Para 574 observações, a regra recomenda 11 classes.
Histograma da Distribuição do Desemprego nos EUA (1967-2015) com 10 classes
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.
# 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
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.
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) \]
\[ f(x) = \frac{1}{nh}\sum_{i=1}^{n} K\left(\frac{x - x_i}{h}\right) \]
sendo:
Interpretaçã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
# 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
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).
Componentes e Interpretação
Critério para definição de outliers:
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)
# 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
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.
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)
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.
# 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
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)
[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 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:
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.
# 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
Prática com ggplot2 usando a data frame diamonds
Parte 1 - Visualizando a variável price
Parte 2 - Análise comparativa
price
por clarity
Parte 3 - Análise descritiva
Requisitos:
Dica: A distribuição de price
é assimétrica. Experimente visualizar também log10(price)
para comparar interpretações nas duas escalas.
Elementos de Excelência no Gráfico de Gilbert Fontana
1. Hierarquia da Informação
2. Design Minimalista e Funcional
3. Uso Estratégico de Cores
4. Anotações e Contexto
5. Detalhes Técnicos Refinados
Instruções
Prof. Washington Silva - Introdução à Ciência de Dados