O dataset utilizado é o mtcars, nativo
do R, com informações técnicas de 32 modelos de automóveis coletadas
pela revista Motor Trend em 1974.
library(dplyr)
library(ggplot2)
library(DT)
library(knitr)
library(kableExtra)
data(mtcars)
mtcars$modelo <- rownames(mtcars)
rownames(mtcars) <- NULL
head(mtcars, 6) |>
kable(caption = "Primeiras 6 observações do dataset mtcars") |>
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | modelo |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 | Mazda RX4 |
| 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 | Mazda RX4 Wag |
| 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 | Datsun 710 |
| 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 | Hornet 4 Drive |
| 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 | Hornet Sportabout |
| 18.1 | 6 | 225 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 | Valiant |
Interpretação: Cada linha representa um carro. As
principais variáveis são mpg (consumo), cyl
(cilindros), hp (potência), wt (peso) e
am (transmissão: 0 = automático, 1 = manual).
## Dimensões: 32 linhas x 12 colunas
## 'data.frame': 32 obs. of 12 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp : num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat : num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec : num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear : num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb : num 4 4 1 1 2 1 4 2 2 4 ...
## $ modelo: chr "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
mtcars |>
select(mpg, cyl, hp, wt, am) |>
summary() |>
kable(caption = "Estatísticas descritivas das principais variáveis") |>
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| mpg | cyl | hp | wt | am | |
|---|---|---|---|---|---|
| Min. :10.40 | Min. :4.000 | Min. : 52.0 | Min. :1.513 | Min. :0.0000 | |
| 1st Qu.:15.43 | 1st Qu.:4.000 | 1st Qu.: 96.5 | 1st Qu.:2.581 | 1st Qu.:0.0000 | |
| Median :19.20 | Median :6.000 | Median :123.0 | Median :3.325 | Median :0.0000 | |
| Mean :20.09 | Mean :6.188 | Mean :146.7 | Mean :3.217 | Mean :0.4062 | |
| 3rd Qu.:22.80 | 3rd Qu.:8.000 | 3rd Qu.:180.0 | 3rd Qu.:3.610 | 3rd Qu.:1.0000 | |
| Max. :33.90 | Max. :8.000 | Max. :335.0 | Max. :5.424 | Max. :1.0000 |
Interpretação: O dataset tem 32 observações e 12 variáveis numéricas. O consumo médio é de 20,09 mpg e a potência varia de 52 a 335 cv, indicando uma amostra com diversidade.
mtcars |>
arrange(desc(mpg)) |>
select(modelo, mpg, cyl, hp, wt) |>
head(10) |>
kable(caption = "Top 10 carros mais econômicos (maior mpg)") |>
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| modelo | mpg | cyl | hp | wt |
|---|---|---|---|---|
| Toyota Corolla | 33.9 | 4 | 65 | 1.835 |
| Fiat 128 | 32.4 | 4 | 66 | 2.200 |
| Honda Civic | 30.4 | 4 | 52 | 1.615 |
| Lotus Europa | 30.4 | 4 | 113 | 1.513 |
| Fiat X1-9 | 27.3 | 4 | 66 | 1.935 |
| Porsche 914-2 | 26.0 | 4 | 91 | 2.140 |
| Merc 240D | 24.4 | 4 | 62 | 3.190 |
| Datsun 710 | 22.8 | 4 | 93 | 2.320 |
| Merc 230 | 22.8 | 4 | 95 | 3.150 |
| Toyota Corona | 21.5 | 4 | 97 | 2.465 |
Interpretação: Com arrange(desc(mpg)),
o Toyota Corolla lidera com 33,9 mpg. Carros mais econômicos
concentram-se entre os de 4 cilindros e menor potência.
carros_manual_potentes <- mtcars |>
filter(am == 1, hp > 100) |>
select(modelo, mpg, cyl, hp, wt, am) |>
arrange(desc(hp))
carros_manual_potentes |>
kable(caption = "Carros com transmissão manual e mais de 100 cv") |>
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| modelo | mpg | cyl | hp | wt | am |
|---|---|---|---|---|---|
| Maserati Bora | 15.0 | 8 | 335 | 3.570 | 1 |
| Ford Pantera L | 15.8 | 8 | 264 | 3.170 | 1 |
| Ferrari Dino | 19.7 | 6 | 175 | 2.770 | 1 |
| Lotus Europa | 30.4 | 4 | 113 | 1.513 | 1 |
| Mazda RX4 | 21.0 | 6 | 110 | 2.620 | 1 |
| Mazda RX4 Wag | 21.0 | 6 | 110 | 2.875 | 1 |
| Volvo 142E | 21.4 | 4 | 109 | 2.780 | 1 |
Interpretação: O filtro
am == 1 & hp > 100 retornou 7
carros — todos de câmbio manual com mais de 100 cavalos, em
geral de perfil esportivo.
mtcars <- mtcars |>
mutate(
peso_kg = round(wt * 453.592, 0),
faixa_mpg = case_when(
mpg >= 25 ~ "Alta eficiência",
mpg >= 18 & mpg < 25 ~ "Eficiência média",
mpg < 18 ~ "Baixa eficiência"
),
transmissao = ifelse(am == 1, "Manual", "Automático"),
hp_por_kg = round(hp / (peso_kg / 1000), 2)
)
mtcars |>
select(modelo, mpg, faixa_mpg, peso_kg, transmissao, hp_por_kg) |>
head(10) |>
kable(caption = "Dataset com novas variáveis criadas") |>
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)| modelo | mpg | faixa_mpg | peso_kg | transmissao | hp_por_kg |
|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | Eficiência média | 1188 | Manual | 92.59 |
| Mazda RX4 Wag | 21.0 | Eficiência média | 1304 | Manual | 84.36 |
| Datsun 710 | 22.8 | Eficiência média | 1052 | Manual | 88.40 |
| Hornet 4 Drive | 21.4 | Eficiência média | 1458 | Automático | 75.45 |
| Hornet Sportabout | 18.7 | Eficiência média | 1560 | Automático | 112.18 |
| Valiant | 18.1 | Eficiência média | 1569 | Automático | 66.92 |
| Duster 360 | 14.3 | Baixa eficiência | 1619 | Automático | 151.33 |
| Merc 240D | 24.4 | Eficiência média | 1447 | Automático | 42.85 |
| Merc 230 | 22.8 | Eficiência média | 1429 | Automático | 66.48 |
| Merc 280 | 19.2 | Eficiência média | 1560 | Automático | 78.85 |
Interpretação das novas variáveis:
peso_kg: peso convertido de libras pra
quilogramas.faixa_mpg: categoriza o consumo em
alta, média ou baixa eficiência.transmissao: converte o código 0/1 em
rótulo textual.hp_por_kg: índice de performance —
potência relativa ao peso.mtcars |>
group_by(cyl, faixa_mpg) |>
summarise(
n_carros = n(),
media_mpg = round(mean(mpg), 2),
media_hp = round(mean(hp), 2),
media_peso_kg = round(mean(peso_kg), 0),
.groups = "drop"
) |>
kable(caption = "Resumo por cilindros e faixa de eficiência") |>
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| cyl | faixa_mpg | n_carros | media_mpg | media_hp | media_peso_kg |
|---|---|---|---|---|---|
| 4 | Alta eficiência | 6 | 30.07 | 75.50 | 850 |
| 4 | Eficiência média | 5 | 22.58 | 91.20 | 1261 |
| 6 | Baixa eficiência | 1 | 17.80 | 123.00 | 1560 |
| 6 | Eficiência média | 6 | 20.07 | 122.17 | 1389 |
| 8 | Baixa eficiência | 12 | 14.46 | 214.92 | 1841 |
| 8 | Eficiência média | 2 | 18.95 | 175.00 | 1652 |
Interpretação: Carros de 4 cilindros dominam a faixa de alta eficiência; os de 8 cilindros concentram-se na baixa eficiência. Os de 6 cilindros ocupam posição intermediária.
dados_dt <- mtcars |>
select(
Modelo = modelo,
MPG = mpg,
Cilindros = cyl,
`Potência (hp)` = hp,
`Peso (kg)` = peso_kg,
Transmissão = transmissao,
`HP/kg` = hp_por_kg,
Eficiência = faixa_mpg
)
datatable(
dados_dt,
caption = "Características dos veículos — dataset mtcars",
filter = "top",
options = list(
dom = "Bfrtip",
scrollX = TRUE,
pageLength = 10,
language = list(
search = "Buscar:",
info = "Exibindo _START_ a _END_ de _TOTAL_ registros",
paginate = list(previous = "Anterior", `next` = "Próximo")
)
),
rownames = FALSE,
class = "display compact"
) |>
formatStyle(
"Eficiência",
backgroundColor = styleEqual(
c("Alta eficiência", "Eficiência média", "Baixa eficiência"),
c("#d4edda", "#fff3cd", "#f8d7da")
)
) |>
formatStyle(
"MPG",
background = styleColorBar(dados_dt$MPG, "#4a90d9"),
backgroundSize = "100% 80%",
backgroundRepeat = "no-repeat",
backgroundPosition = "center"
)A tabela permite busca, ordenação por coluna, filtros individuais e exportação (CSV, Excel, PDF). A coluna Eficiência tem destaque por cores e MPG exibe barras proporcionais.
\[\hat{\boldsymbol{\beta}} = \left(\mathbf{X}^\top \mathbf{X}\right)^{-1} \mathbf{X}^\top \mathbf{y}\]
Significado: Fornece os coeficientes \(\hat{\boldsymbol{\beta}}\) que minimizam a soma dos quadrados dos resíduos no modelo \(\mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}\). É a fórmula central da regressão linear múltipla.
\[e^{ix} = \cos(x) + i\,\sin(x) \implies e^{i\pi} + 1 = 0\]
Significado: A fórmula de Euler relaciona a exponencial complexa \(e^{ix}\) às funções trigonométricas \(\cos(x)\) e \(\sin(x)\), unindo cinco constantes fundamentais da matemática (\(e\), \(i\), \(\pi\), \(1\), \(0\)). Em ciência de dados, ela fundamenta a Transformada de Fourier, usada em análise de séries temporais e processamento de sinais.
\[H(X) = -\sum_{i=1}^{k} p_i \log_2(p_i), \qquad \text{IG}(S, A) = H(S) - \sum_{v \in \text{vals}(A)} \frac{|S_v|}{|S|} H(S_v)\]
Significado: \(H(X)\) mede a incerteza de uma variável discreta. O ganho de informação \(\text{IG}(S,A)\) quantifica a redução de entropia ao dividir os dados pelo atributo \(A\) — critério de divisão em árvores de decisão.
\[\mathcal{L}(\boldsymbol{\beta}) = \frac{1}{2n}\left\|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\right\|_2^2 + \lambda\left[\alpha \left\|\boldsymbol{\beta}\right\|_1 + \frac{(1-\alpha)}{2}\left\|\boldsymbol{\beta}\right\|_2^2\right]\]
Significado: Combina as penalizações Lasso (\(\ell_1\)) e Ridge (\(\ell_2\)) controladas por \(\lambda\) e \(\alpha\). Útil para dados com alta dimensionalidade e multicolinearidade.
\[\sigma(z) = \frac{1}{1 + e^{-z}}, \qquad z = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p, \qquad P(y=1 \mid \mathbf{x}) = \frac{1}{1+e^{-\mathbf{x}^\top\boldsymbol{\beta}}}\]
Significado: A função sigmóide \(\sigma(z)\) comprime qualquer valor real para o intervalo \((0, 1)\), interpretável como probabilidade. Na regressão logística, \(z\) é a combinação linear das variáveis preditoras, e \(P(y=1 \mid \mathbf{x})\) fornece a probabilidade de pertencimento à classe positiva. É também a função de ativação base em redes neurais.
ggplot(mtcars, aes(x = hp, y = mpg, color = factor(cyl), size = wt)) +
geom_point(alpha = 0.8) +
geom_smooth(aes(group = factor(cyl)), method = "lm", se = TRUE,
linewidth = 0.8, alpha = 0.15) +
scale_color_manual(
values = c("4" = "#2ecc71", "6" = "#f39c12", "8" = "#e74c3c"),
labels = c("4 cilindros", "6 cilindros", "8 cilindros")
) +
scale_size_continuous(range = c(2, 8), name = "Peso (×1000 lb)") +
labs(
title = "Potência vs. Consumo por Número de Cilindros",
x = "Potência do Motor (cv)",
y = "Consumo (milhas por galão)",
color = "Nº de Cilindros",
caption = "Fonte: Motor Trend Car Road Tests, 1974"
) +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "bottom", panel.grid.minor = element_blank())Figura 1: Dispersão entre potência (hp) e consumo (mpg), segmentada por número de cilindros. O tamanho dos pontos representa o peso do veículo.
Análise: Há correlação negativa clara entre potência e consumo. Carros de 4 cilindros (verde) são mais econômicos; os de 8 cilindros (vermelho) concentram-se no quadrante de alto consumo e alta potência.
ggplot(mtcars, aes(x = transmissao, y = mpg, fill = transmissao)) +
geom_violin(alpha = 0.4, trim = FALSE) +
geom_boxplot(width = 0.15, alpha = 0.8, outlier.shape = NA) +
geom_jitter(aes(color = transmissao), width = 0.07, size = 2.5, alpha = 0.7) +
stat_summary(fun = mean, geom = "point", shape = 18, size = 4, color = "black") +
scale_fill_manual(values = c("Automático" = "#3498db", "Manual" = "#e74c3c")) +
scale_color_manual(values = c("Automático" = "#2980b9", "Manual" = "#c0392b")) +
labs(
title = "Distribuição do Consumo por Tipo de Transmissão",
x = "Tipo de Transmissão",
y = "Consumo (milhas por galão)",
caption = "Fonte: Motor Trend Car Road Tests, 1974"
) +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "none", panel.grid.minor = element_blank()) +
annotate("text", x = 1, y = 10,
label = paste0("n = ", sum(mtcars$transmissao == "Automático")),
size = 4, color = "#2980b9", fontface = "italic") +
annotate("text", x = 2, y = 10,
label = paste0("n = ", sum(mtcars$transmissao == "Manual")),
size = 4, color = "#c0392b", fontface = "italic")Figura 2: Distribuição do consumo (mpg) por tipo de transmissão com violino, boxplot e pontos individuais.
Análise: Carros manuais apresentam consumo médio superior aos automáticos. O losango indica a média; a distribuição automática é mais concentrada, enquanto a manual é mais dispersa.
[1] HASTIE, T.; TIBSHIRANI, R.; FRIEDMAN, J. The Elements of Statistical Learning. 2. ed. New York: Springer, 2009. Disponível em: https://hastie.su.domains/ElemStatLearn/.
[2] WICKHAM, H.; GROLEMUND, G. R for Data Science. Sebastopol: O’Reilly Media, 2017. Disponível em: https://r4ds.had.co.nz/.
[3] XIE, Y.; ALLAIRE, J. J.; GROLEMUND, G. R Markdown: The Definitive Guide. Boca Raton: CRC Press, 2018. Disponível em: https://bookdown.org/yihui/rmarkdown/.
[4] XIE, Y. DT: A Wrapper of the JavaScript Library ‘DataTables’. R package version 0.33. CRAN, 2024. Disponível em: https://CRAN.R-project.org/package=DT.
[5] GRUS, J. Data Science do Zero: Noções Fundamentais com Python. 2. ed. Rio de Janeiro: Alta Books, 2021.