Dados & Manipulação

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.

1.1 — Carregamento dos Dados

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)
Primeiras 6 observações do dataset mtcars
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).


1.2 — Estrutura e Estatísticas Descritivas

cat("Dimensões:", dim(mtcars)[1], "linhas x", dim(mtcars)[2], "colunas\n")
## Dimensões: 32 linhas x 12 colunas
str(mtcars)
## '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)
Estatísticas descritivas das principais variáveis
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.


1.3 — Ordenação

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)
Top 10 carros mais econômicos (maior mpg)
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.


1.4 — Filtragem

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)
Carros com transmissão manual e mais de 100 cv
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.


1.5 — Criação de Novas Variáveis

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)
Dataset com novas variáveis criadas
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.

1.6 — Agrupamento e Resumo

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)
Resumo por cilindros e faixa de eficiência
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.


Tabela Interativa

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.


Equações LaTeX

Equação 1 — Estimador de Mínimos Quadrados (Regressão Linear Múltipla)

\[\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.


Equação 2 — Fórmula de Euler (Geral)

\[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.


Equação 3 — Entropia de Shannon e Ganho de Informação

\[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.


Equação 4 — Função de Custo Elastic Net

\[\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.


Equação 5 — Função Sigmóide e Regressão Logística

\[\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.


Figuras

Figura 1 — Potência vs. Consumo por Número de Cilindros

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.

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.


Figura 2 — Distribuição do Consumo por Tipo de Transmissão

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.

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.


Referências

[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.