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.
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.
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 pacotetibblenormalmente é instalado como dependência dedplyr. Se necessário, instale-o cominstall.packages("tibble").
mtcars é um conjunto de
dados já disponível no R; não é necessário baixar um arquivo
externo.rownames_to_column() transforma os nomes dos automóveis,
originalmente armazenados nos nomes das linhas, em uma coluna chamada
modelo.select() mantém
apenas as colunas usadas nesta análise. Isso deixa a tabela mais fácil
de interpretar.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.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.
# 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.
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"
)
| 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.
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.
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.
\[ 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.
\[ 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.
\[ 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)\).
\[ \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.
\[ 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.
As figuras são geradas diretamente a partir de mtcars,
tornando o relatório reproduzível sem arquivos de imagem externos.
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.
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.
mtcars
reúne características de 32 automóveis.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.
CLEVELAND, William S. The Elements of Graphing Data. Monterey: Wadsworth Advanced Books and Software, 1985.
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/.
KNAFLIC, Cole Nussbaumer. Storytelling with Data: A Data Visualization Guide for Business Professionals. Hoboken: Wiley, 2015. Disponível em: https://www.storytellingwithdata.com/books.
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/.
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/.