Apresentação

Este relatório demonstra um fluxo simples e reproduzível de análise de dados usando R Markdown. O documento combina manipulação de dados, uma tabela interativa, equações em LaTeX, visualizações e referências bibliográficas.

A análise utiliza o conjunto de dados mtcars, disponibilizado no R. Ele contém informações sobre 32 modelos de automóveis, incluindo consumo de combustível, potência, peso e número de cilindros. Como é um conjunto de dados demonstrativo, os resultados não devem ser generalizados para todos os veículos.

Organização do relatório

1. Carregamento e manipulação dos dados

1.1 Objetivo

O objetivo é explorar a relação entre o consumo de combustível, a potência e o peso dos automóveis. Para isso, o código carrega os dados, seleciona variáveis relevantes, cria uma classificação de consumo e ordena os registros.

1.2 Pacotes e carregamento

O pacote dplyr será usado para manipular os dados. O ggplot2 produzirá gráficos e o DT criará uma tabela interativa.

# Instale os pacotes uma única vez, se necessário:
# install.packages(c("dplyr", "ggplot2", "DT"))

library(dplyr)
library(ggplot2)
library(DT)

# Conjunto de dados incorporado ao R
dados_originais <- mtcars

# Transforma os nomes das linhas em uma coluna explícita
dados <- dados_originais |>
  tibble::rownames_to_column(var = "modelo") |>
  select(modelo, mpg, cyl, disp, hp, wt, am, gear)

# Cria uma variável categórica de consumo e ordena os veículos
dados <- dados |>
  mutate(
    transmissao = if_else(am == 1, "Manual", "Automática"),
    categoria_consumo = case_when(
      mpg >= 25 ~ "Consumo relativamente eficiente",
      mpg >= 18 ~ "Consumo intermediário",
      TRUE ~ "Menor eficiência de consumo"
    )
  ) |>
  arrange(desc(mpg))

Nota de execução: o código usa tibble::rownames_to_column(). O pacote tibble normalmente é instalado como dependência de dplyr. Se necessário, instale-o com install.packages("tibble").

1.3 Entendendo cada etapa

  1. Carregamento: mtcars é um conjunto de dados já disponível no R; não é necessário baixar um arquivo externo.
  2. Conversão dos nomes: rownames_to_column() transforma os nomes dos automóveis, originalmente armazenados nos nomes das linhas, em uma coluna chamada modelo.
  3. Seleção de variáveis: select() mantém apenas as colunas usadas nesta análise. Isso deixa a tabela mais fácil de interpretar.
  4. Criação de variáveis: transmissao traduz a variável am para rótulos legíveis. categoria_consumo agrupa os veículos em três faixas com base em mpg.
  5. Ordenação: arrange(desc(mpg)) coloca primeiro os automóveis com maior valor de milhas por galão (mpg). Nesse conjunto, valores maiores de mpg indicam maior eficiência de consumo.

A classificação de consumo foi criada para fins didáticos e usa limites escolhidos para este exercício; não representa uma classificação oficial de eficiência veicular.

1.4 Conferência dos dados

# Dimensões do conjunto de dados
dim(dados)
## [1] 32 10
# Primeiros registros após a manipulação
head(dados, 6)
##           modelo  mpg cyl  disp  hp    wt am gear transmissao
## 1 Toyota Corolla 33.9   4  71.1  65 1.835  1    4      Manual
## 2       Fiat 128 32.4   4  78.7  66 2.200  1    4      Manual
## 3    Honda Civic 30.4   4  75.7  52 1.615  1    4      Manual
## 4   Lotus Europa 30.4   4  95.1 113 1.513  1    5      Manual
## 5      Fiat X1-9 27.3   4  79.0  66 1.935  1    4      Manual
## 6  Porsche 914-2 26.0   4 120.3  91 2.140  1    5      Manual
##                 categoria_consumo
## 1 Consumo relativamente eficiente
## 2 Consumo relativamente eficiente
## 3 Consumo relativamente eficiente
## 4 Consumo relativamente eficiente
## 5 Consumo relativamente eficiente
## 6 Consumo relativamente eficiente
# Estatísticas descritivas das variáveis numéricas
summary(select(dados, mpg, cyl, disp, hp, wt))
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##        wt       
##  Min.   :1.513  
##  1st Qu.:2.581  
##  Median :3.325  
##  Mean   :3.217  
##  3rd Qu.:3.610  
##  Max.   :5.424

O conjunto possui 32 registros e 10 colunas após a transformação. A tabela acima permite conferir se as variáveis foram selecionadas e se os nomes dos modelos aparecem como uma coluna.

A função summary() apresenta medidas descritivas básicas, como mínimo, mediana, média e máximo. Elas ajudam a compreender a escala e a distribuição das variáveis antes de construir gráficos ou modelos.

1.5 Resultados por categoria de consumo

resumo_consumo <- dados |>
  group_by(categoria_consumo) |>
  summarise(
    quantidade = n(),
    mpg_medio = mean(mpg),
    potencia_media = mean(hp),
    peso_medio = mean(wt),
    .groups = "drop"
  ) |>
  arrange(desc(mpg_medio))

knitr::kable(
  resumo_consumo,
  digits = 2,
  col.names = c("Categoria de consumo", "Quantidade", "MPG médio",
                "Potência média (hp)", "Peso médio (1000 lb)"),
  caption = "Resumo dos automóveis por categoria de consumo"
)
Resumo dos automóveis por categoria de consumo
Categoria de consumo Quantidade MPG médio Potência média (hp) Peso médio (1000 lb)
Consumo relativamente eficiente 6 30.07 75.50 1.87
Consumo intermediário 13 20.86 118.38 3.04
Menor eficiência de consumo 13 14.72 207.85 4.01

O agrupamento permite comparar as categorias sem precisar inspecionar cada automóvel individualmente. n() conta os registros de cada grupo, enquanto mean() calcula as médias de consumo, potência e peso. Como as faixas foram definidas a partir de mpg, diferenças nessa variável entre grupos são esperadas; comparar potência e peso pode ajudar a levantar hipóteses, mas não comprova causalidade.

1.6 Limitações

  • O conjunto contém apenas 32 automóveis e serve principalmente para demonstração.
  • Os dados não representam necessariamente veículos atuais.
  • A associação entre peso, potência e consumo não demonstra que uma variável cause mudanças na outra.
  • As categorias foram definidas manualmente para esta atividade.

2. Tabela interativa com DT

A tabela abaixo permite pesquisar modelos, ordenar colunas e navegar pelas páginas. A opção de busca facilita localizar um automóvel específico; os controles de ordenação permitem, por exemplo, colocar os maiores valores de mpg no início.

DT::datatable(
  dados,
  rownames = FALSE,
  filter = "top",
  extensions = "Buttons",
  options = list(
    pageLength = 10,
    lengthMenu = c(5, 10, 20, 32),
    scrollX = TRUE,
    dom = "Bfrtip",
    buttons = c("copy", "csv"),
    order = list(list(1, "desc"))
  ),
  caption = "Tabela interativa dos automóveis"
)

Como usar: digite um termo nos campos de filtro, clique no cabeçalho de uma coluna para ordenar ou utilize a paginação na parte inferior da tabela.

3. Equações em LaTeX e seus significados

As equações abaixo são exemplos de conceitos usados em estatística e ciência de dados. A notação é renderizada pelo LaTeX no relatório HTML.

3.1 Regressão linear múltipla

\[ y_i = \beta_0 + \sum_{j=1}^{p}\beta_j x_{ij} + \varepsilon_i \]

Significado: modela uma variável resposta \(y_i\) como uma combinação linear de variáveis explicativas \(x_{ij}\). \(\beta_0\) é o intercepto, \(\beta_j\) são os coeficientes estimados e \(\varepsilon_i\) representa o erro não explicado pelo modelo.

3.2 Regressão logística

\[ P(Y=1\mid \mathbf{x}) = \frac{1}{1+\exp\left[-\left(\beta_0+\sum_{j=1}^{p}\beta_jx_j\right)\right]} \]

Significado: estima a probabilidade de uma observação pertencer à classe \(Y=1\). A função logística transforma uma combinação linear em um valor entre 0 e 1, sendo útil em problemas de classificação binária.

3.3 Teorema de Bayes

\[ P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}, \qquad P(B)>0 \]

Significado: calcula a probabilidade de \(A\) ocorrer sabendo que \(B\) ocorreu. Combina a probabilidade inicial \(P(A)\) com a evidência \(P(B\mid A)\), normalizada por \(P(B)\).

3.4 Gradiente descendente

\[ \boldsymbol{\theta}_{t+1} = \boldsymbol{\theta}_{t} -\eta\,\nabla_{\boldsymbol{\theta}}J(\boldsymbol{\theta}_{t}) \]

Significado: atualiza os parâmetros \(\boldsymbol{\theta}\) de um modelo em direção oposta ao gradiente da função de custo \(J\). A taxa de aprendizagem \(\eta\) controla o tamanho de cada atualização.

3.5 Entropia de Shannon

\[ H(X)=-\sum_{i=1}^{n}p(x_i)\log_2 p(x_i) \]

Significado: mede a incerteza de uma variável aleatória discreta. \(p(x_i)\) é a probabilidade do resultado \(x_i\). Quanto mais distribuídas forem as probabilidades entre os resultados possíveis, maior tende a ser a entropia.

4. Figuras relacionadas à ciência de dados

As figuras são geradas diretamente a partir de mtcars, tornando o relatório reproduzível sem arquivos de imagem externos.

Figura 1 — Peso e consumo de combustível

ggplot(dados, aes(x = wt, y = mpg, color = categoria_consumo)) +
  geom_point(size = 3, alpha = 0.85) +
  geom_smooth(method = "lm", se = FALSE, color = "black",
              linewidth = 0.8, linetype = "dashed") +
  labs(
    title = "Automóveis mais pesados tendem a apresentar menor mpg",
    subtitle = "Relação observada no conjunto de dados mtcars",
    x = "Peso (1000 lb)",
    y = "Consumo (milhas por galão, mpg)",
    color = "Categoria"
  ) +
  theme_minimal(base_size = 11) +
  theme(legend.position = "bottom")
## `geom_smooth()` using formula = 'y ~ x'

Interpretação: observe a direção geral dos pontos e da linha de tendência. Uma inclinação descendente sugere associação negativa entre peso e mpg nesta amostra. O gráfico não demonstra causalidade e a linha é apenas um resumo linear da relação.

Figura 2 — Potência média por número de cilindros

potencia_cilindros <- dados |>
  group_by(cyl) |>
  summarise(
    potencia_media = mean(hp),
    quantidade = n(),
    .groups = "drop"
  )

ggplot(potencia_cilindros,
       aes(x = factor(cyl), y = potencia_media)) +
  geom_col(fill = "steelblue", width = 0.65) +
  geom_text(aes(label = round(potencia_media, 1)),
            vjust = -0.4, size = 3.5) +
  labs(
    title = "A potência média varia entre grupos de cilindros",
    subtitle = "Média da potência dos automóveis em cada grupo",
    x = "Número de cilindros",
    y = "Potência média (hp)"
  ) +
  expand_limits(y = max(potencia_cilindros$potencia_media) * 1.12) +
  theme_minimal(base_size = 11)

Interpretação: o gráfico compara a potência média dos grupos de 4, 6 e 8 cilindros. O tamanho das barras facilita comparar categorias. É importante observar também a quantidade de automóveis em cada grupo, pois os grupos podem ter tamanhos diferentes.

Ligando os resultados a uma narrativa

  • Ato 1 — Contexto: o conjunto mtcars reúne características de 32 automóveis.
  • Ato 2 — Conflito/insight: os gráficos permitem investigar como consumo, peso e potência variam entre os veículos.
  • Ato 3 — Resolução: as visualizações ajudam a formular perguntas para uma análise maior, mas uma recomendação prática exigiria dados mais atuais e representativos.

Essa estrutura segue a proposta de storytelling com dados: combinar dados, visualização e narrativa, escolhendo gráficos que evidenciem o insight sem esconder as limitações.

5. Referências bibliográficas

  1. CLEVELAND, William S. The Elements of Graphing Data. Monterey: Wadsworth Advanced Books and Software, 1985.

  2. JAMES, Gareth; WITTEN, Daniela; HASTIE, Trevor; TIBSHIRANI, Robert. An Introduction to Statistical Learning: with Applications in R. 2. ed. New York: Springer, 2021. Disponível em: https://www.statlearning.com/.

  3. KNAFLIC, Cole Nussbaumer. Storytelling with Data: A Data Visualization Guide for Business Professionals. Hoboken: Wiley, 2015. Disponível em: https://www.storytellingwithdata.com/books.

  4. TUFTE, Edward R. The Visual Display of Quantitative Information. 2. ed. Cheshire: Graphics Press, 2001. Disponível em: https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/.

  5. WICKHAM, Hadley; ÇETINKAYA-RUNDEL, Mine; GROLEMUND, Garrett. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. 2. ed. Sebastopol: O’Reilly Media, 2023. Disponível em: https://r4ds.hadley.nz/.